当前位置: 首页 > news >正文

云原生网络基础:IP、端口与网关实战

从基础到云原生:IP、端口、网关的核心概念与实践

在学习 Kubernetes 网关(如 Nginx、Traefik、Istio)时,理解 “IP、端口、网关” 这些基础网络概念是关键 —— 它们是流量从集群外进入内部服务的 “必经之路”。本文将用 “现实场景类比 + 技术定义 + K8s 实践” 的方式,拆解这些概念的本质,以及它们在云原生环境中的具体体现。

一、先搞懂 3 个核心基础概念:IP、端口、网关

我们可以用 “小区快递配送” 的场景类比网络通信,帮你快速理解三者的关系:

  • IP 地址:相当于 “小区地址”(如 XX 路 XX 号),用于定位网络中的设备;
  • 端口:相当于 “住户门牌号”(如 1 单元 301 室),用于定位设备上的具体应用;
  • 网关:相当于 “小区快递驿站”,负责接收外部快递(集群外流量),并转发到对应住户(内部服务)。

下面展开具体技术定义:

1. IP 地址:网络设备的 “唯一身份证”

IP 地址(Internet Protocol Address)是互联网中设备的唯一标识,就像现实中的 “地址”,用于确定 “数据要发送到哪台设备”。

(1)核心特性
  • 唯一性:在同一个网络环境中,每个设备的 IP 地址不能重复(如家庭路由器下的手机、电脑 IP 不同);
  • 分层结构:分为网络位(确定设备所在 “区域”)和主机位(确定区域内的 “具体设备”),比如192.168.1.100中,192.168.1是网络位,100是主机位;
  • 版本分类
    • IPv4:32 位地址,格式为x.x.x.x(如192.168.1.1),是目前主流;
    • IPv6:128 位地址,格式为xxxx:xxxx:xxxx:xxxx(如2001:0db8:85a3:0000:0000:8a2e:0370:7334),用于解决 IPv4 地址耗尽问题。
(2)K8s 中的 IP 类型

在 Kubernetes 集群中,IP 地址分为三类,对应不同的通信场景:

IP 类型

作用

类比场景

示例

Node IP

集群中每个节点(物理机 / 虚拟机)的 IP

小区的 “大门地址”

10.0.0.5(节点公网 IP)

Pod IP

集群中每个 Pod 的 IP(容器网络分配)

小区内 “住户的房间地址”

10.244.1.10(容器 IP)

Service IP

集群中 Service 的虚拟 IP(ClusterIP)

小区内 “住户的代收点地址”

10.96.0.10(虚拟 IP)

关键区别

  • Pod IP 会随 Pod 重启变化(Pod 销毁后 IP 释放);
  • Service IP 是虚拟 IP,不绑定具体设备,仅用于 “转发流量到后端 Pod”,即使 Pod 重启,Service IP 也不变。

2. 端口:设备上应用的 “门牌号”

端口(Port)是设备上应用程序的唯一标识,就像 “门牌号”,用于确定 “数据要发送到设备上的哪个应用”—— 同一台设备上,不同应用的端口不能重复。

(1)核心特性
  • 范围:0-65535,其中 0-1023 是 “知名端口”(系统保留,如 HTTP 用 80、HTTPS 用 443),1024-49151 是 “注册端口”(应用常用,如 MySQL 用 3306、Redis 用 6379);
  • 作用:实现 “一台设备上多个应用同时通信”—— 比如你的电脑同时打开浏览器(用 80/443 端口)、微信(用自定义端口),通过端口区分不同应用的流量。
(2)K8s 中的端口映射

在 Kubernetes 中,端口分为三类,核心是解决 “外部流量如何访问 Pod 内应用” 的问题:

端口类型

作用

示例

容器端口(ContainerPort)

Pod 内容器暴露的端口(应用实际监听的端口)

应用在容器内监听8080端口

Service 端口(Port)

Service 暴露的端口(用于集群内访问)

Service 用80端口映射到容器8080端口

节点端口(NodePort)

节点暴露的端口(用于集群外访问)

节点用30080端口映射到 Service80端口

示例:外部流量访问 K8s 内部应用的端口映射链路:

外部设备 → 节点IP:30080(NodePort) → Service IP:80(Service Port) → Pod IP:8080(ContainerPort)

3. 网关:网络之间的 “流量中转站”

网关(Gateway)是连接两个不同网络的设备 / 组件,负责 “转发不同网络之间的流量”,并处理协议转换、路由选择等工作 —— 相当于 “网络之间的海关”。

(1)核心作用
  • 流量转发:接收来自一个网络的流量,根据规则转发到另一个网络(如家庭路由器是 “家庭网络” 与 “互联网” 的网关,转发手机 / 电脑的上网流量);
  • 协议转换:如果两个网络的通信协议不同(如 HTTP 与 TCP),网关可实现协议转换(如 K8s 网关将外部 HTTPS 流量转换为内部 HTTP 流量);
  • 安全控制:作为网络边界,可过滤非法流量(如禁止特定 IP 访问)、加密传输(如 HTTPS 终止)。
(2)常见网关类型

网关类型

应用场景

示例

家庭网关(路由器)

连接家庭网络与互联网

家用路由器(IP 通常为192.168.1.1)

企业网关(防火墙)

连接企业内网与互联网,提供安全防护

企业级防火墙设备

K8s 网关(Ingress/Gateway API)

连接集群外网络与集群内服务

Nginx Ingress、Istio Gateway

二、三者的关系:流量从 “外部” 到 “内部服务” 的完整链路

结合 Kubernetes 场景,我们用 “用户访问集群内 Web 应用” 的例子,看 IP、端口、网关如何协同工作:

1. 场景假设

  • 集群有一个节点,Node IP 为10.0.0.5;
  • 节点上运行一个 Web 应用 Pod,Pod IP 为10.244.1.10,容器内应用监听8080端口;
  • 创建 Service,ClusterIP 为10.96.0.10,将 Service 的80端口映射到 Pod 的8080端口;
  • 部署 Nginx Gateway 作为网关,绑定节点的30443端口(NodePort),并配置 HTTPS 证书。

2. 流量链路拆解

用户在浏览器输入https://api.example.com访问应用,流量路径如下:

3. 关键角色总结

  • IP 的作用:DNS 解析确定流量要到 “节点 IP(10.0.0.5)”,Service IP(10.96.0.10)确定要转发到 “哪个服务”,Pod IP(10.244.1.10)确定要到 “哪个具体应用实例”;
  • 端口的作用:节点端口(30443)是外部流量进入集群的 “入口”,Service 端口(80)是集群内流量转发的 “桥梁”,容器端口(8080)是应用实际接收流量的 “终点”;
  • 网关的作用:作为 “集群边缘的流量中转站”,接收外部 HTTPS 流量,解密后根据路由规则转发到对应 Service,同时处理 HTTPS 加密、安全过滤等工作。

三、基础概念与 K8s 网关的关联:为什么学基础很重要?

在之前学习的 Nginx、Traefik、Istio 网关中,所有配置本质都是围绕 “IP、端口、网关” 的基础逻辑展开:

  1. Gateway API 中的 IP 与端口
    • Gateway 资源的spec.listeners.port配置网关监听的端口(如 443);
    • 网关通过 Node IP 或 Load Balancer IP(云厂商提供)暴露给外部,用户通过 “IP: 端口” 访问;
  1. HTTPS 与端口的关系
    • 网关监听 443 端口(HTTPS 默认端口)接收加密流量,监听 80 端口(HTTP 默认端口)并自动重定向到 443;
  1. 路由规则与 IP / 端口的关联
    • HTTPRoute 资源的backendRefs配置 “转发到哪个 Service 的哪个端口”,本质是通过 Service IP 和端口找到后端 Pod。

举例:之前配置的 Nginx Gateway 资源中,port: 443是网关监听的 HTTPS 端口,certificateRefs配置 HTTPS 证书,parentRefs关联到网关实例 —— 这些配置的底层逻辑,都是基于 “网关接收指定 IP: 端口的流量,加密后转发到内部服务” 的基础原理。

四、常见问题与误区

1. 误区 1:IP 地址是 “永久不变” 的?

不是。K8s 中的 Pod IP 会随 Pod 重启变化(因为 Pod 是临时资源),而 Service IP 是虚拟 IP,只要 Service 不删除,IP 就不变。实际应用中,我们通过 “域名”(如api.example.com)绑定 Service 或网关的 IP,避免 IP 变化导致访问失败。

2. 误区 2:端口可以随便选?

不建议。知名端口(0-1023)已被系统或常用服务占用(如 80=HTTP、443=HTTPS),自定义端口建议用 1024 以上的端口,且同一设备上不同应用的端口不能重复。

3. 问题:为什么 K8s 需要网关?直接通过 Node IP:NodePort 访问不行吗?

可以,但网关能解决 “直接访问” 的痛点:

  • 域名访问:网关支持绑定域名(如api.example.com),无需用户记忆 IP: 端口;
  • HTTPS 加密:网关集中处理 HTTPS 证书,无需每个应用单独配置;
  • 路由管理:网关支持多域名、多路径的路由规则(如api.example.com/v1转发到 v1 服务,/v2转发到 v2 服务),而直接访问需为每个服务配置不同 NodePort。

五、总结:基础概念是理解云原生网关的 “钥匙”

IP、端口、网关是网络通信的 “基石”,无论 Kubernetes 网关技术如何演进(从 Ingress 到 Gateway API,从 Nginx 到 Istio),底层逻辑始终围绕 “如何通过 IP 定位设备,通过端口定位应用,通过网关转发流量” 展开。

掌握这些基础概念后,再看 K8s 网关的配置(如监听端口、路由规则、HTTPS 配置),就能明白 “为什么要这么配”,而不是机械记忆。后续学习中,你可以尝试用 “流量链路拆解” 的方法,分析每个配置对应的网络行为,逐步建立 “从基础到进阶” 的完整知识体系。

如果想进一步实践,不妨尝试在本地 K8s 集群中部署一个简单 Web 应用,配置 NodePort、Service 和 Nginx Gateway,手动跟踪 “外部流量→网关→Service→Pod” 的完整路径,加深对这些概念的理解。

http://www.dtcms.com/a/503851.html

相关文章:

  • 郑州网站优化平台做网站需要营业执照吗
  • 企业app商城开发网站建设wordpress userpro
  • C++与C#使用GDI+创建PNG并旋转文本的对比实现
  • 动图在线制作网站烟台广告公司网站建设
  • react.js做的网站学室内装修设计
  • 如何处理大数处理技巧(vpa函数
  • 设计模式举例
  • 【Spring Security】安全过滤链
  • 小区媒体网站建设wordpress简易主题
  • 手机网站经典案例wordpress负载均衡上传附件
  • 银川网站建站中企动力做的网站价格区间
  • 兴义网站开发杭州赛虎网站建设
  • 数据库基础概念体系梳理
  • Kotlin Flow 的使用
  • 网站如何做seo上海网站推广方法
  • Qwen2.5技术报告解读:Qwen2.5 Technical Report
  • 操作系统:进程同步问题(一)
  • Linux---终端 I/O 控制接口开发<termios.h>终端输入输出系统
  • Linux 之 【Linux权限】
  • 网站建设策划书范文案例重庆百度关键词推广
  • 健身器材 网站模版wordpress用户系统
  • 两款实用工具分享:下载与网速测试的轻量级解决方案
  • DVWA靶场实战:Web四大经典漏洞攻防全解析
  • 海外网站测速本地网站建设开发信息大全
  • PowerCat命令操作:PowerShell版的Netcat在渗透测试中的应用
  • 域名注册最好的网站南京设计公司前十名
  • 快速定位源码问题:SourceMap的生成/使用/文件格式与历史
  • 湖南移动官网网站建设wordpress 菜单 分隔
  • 邯郸网站建设服务报价全国住房和城乡建设厅官网
  • leetcode 143 重排链表