You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
网络
网络概述
复制全文
下载 pdf
网络概述
集群网络是保障集群内部组件通信、容器互通、服务暴露与外部访问的基础。根据 Kubernetes 的指引,集群网络需要满足扁平化、无 NAT 穿透等要求。本文主要介绍 VKE 集群的容器网络分类和基本概念。​
集群网络的组成​
  • 节点网络:作为集群的底层网络基础,负责承载所有节点之间的通信,确保集群内所有节点(包括控制面节点与工作节点)能够双向互通,为容器网络、服务网络提供稳定的底层传输载体。​
  • 容器网络:用于集群内所有 Pod 之间的通信,遵循 Kubernetes 扁平化网络模型,确保每个 Pod 拥有独立且可路由的 IP 地址,Pod 之间可直接通过 IP 地址通信,无需经过 NAT 转换,降低通信延迟,提升转发效率。​
  • 服务网络:面向集群内部服务通信场景,为每组功能相同的 Pod 提供固定的虚拟 IP 地址(ClusterIP),屏蔽 Pod 生命周期短、IP 动态变化的特性,实现服务与后端 Pod 的解耦,确保集群内其他 Pod 或服务能够稳定访问目标服务。​
  • 外部网络:负责实现集群内业务与外部互通,通过 Ingress 等核心资源,统一管理集群外部四层或七层(HTTP/HTTPS)流量入口,实现域名路由、路径转发与流量管控,将外部请求安全、高效地转发至集群内对应的 Service 与 Pod。​
容器网络​
VPC-CNI 网络模型​
VPC-CNI(Virtual Private Cloud - Container Network Interface)是容器服务(VKE)集群的容器网络方案之一,其基于 CNI(容器网络接口)标准与 VPC 弹性网卡能力实现,属于 Underlay 网络模式。该模式下 Pod 与节点处于同一 VPC 网络平面,直接复用 VPC 底层网络资源,无需额外隧道封装,兼顾高性能与高兼容性,广泛应用于时延敏感型、传统架构迁移等场景。​
共享网卡​
该模式为 VKE 集群在 VPC-CNI 网络模型中的默认网卡分配模式。在该模式下,多个 Pod 共享一张 VPC 辅助弹性网卡,IPAM 组件为该弹性网卡申请多个附加 IP,分配给不同 Pod 使用。该模式对节点资源消耗较低,可提升单节点 Pod 部署密度,为大多数业务的首选模式。​
​​​
共享网卡模式下的网络通信流程如下:​
  • 同节点 Pod 通信:若 Pod 访问相同节点上的其他 Pod,根据 Pod 是否使用相同 ENI,转发路径不同:​
  • 当同节点同 ENI 下的 Pod 通信时,直接通过 IPvlan 进行转发。无需经过弹性网卡转发,延迟极低。​
  • 当同节点不同 ENI 下的 Pod 通信时,则借助 VPC 的路由转发能力,将访问流量转发到另一个 ENI 上的 Pod。​
  • 跨节点 Pod 通信:若 Pod 访问其他节点上的其他 Pod,则根据 VPC 路由表中的路由先访问到默认网关,然后借助 VPC 的路由转发能力,将访问流量转发到另一个节点上的 Pod。​
  • Pod 访问公网:Pod 在访问公网时,系统会将 Pod 的内网 IP 通过 VPC 中的 NAT 网关进行 SNAT 转换,进而访问公网。​
独占网卡(Trunk ENI)​
VKE 支持基于 Trunk ENI 的独占弹性网卡模式,在该模式下,系统会在节点中绑定一张 Trunk ENI。每个需要独占网卡的 Pod,均绑定该 Trunk ENI 下的 Branch ENI,实现独占网卡绑定。该模式下可以为 Pod 网卡配置固定 IP,并绑定独立的安全组,解决 Pod 间网络隔离的场景需求。​
​​​
说明​
基于 Trunk ENI 支持 Pod 独占弹性网卡的配置指导,请参见 基于 Trunk ENI 支持 Pod 独占弹性网卡、为 Pod 配置固定 IP。​
Flannel 网络模型​
Flannel 是一款开源轻量级容器网络解决方案,VKE 支持该网络模型,并采用了 VPC Router 模式,借助 VPC 中的默认路由表实现跨节点 Pod 通信,全程无隧道封装开销,性能优异,属于 Underlay 网络方案。​
​​​
网络模型对比​
不同容器网络模型的 Pod 密度、校验规则等特性不同。详情如下表所示。​
​
对比项​
VPC-CNI 网络模型​
Flannel 网络模型​
节点 Pod 数量​
由节点的 ECS 规格和节点 kubelet 的max-pods参数决定。详情请参见 节点的 Pod 调度密度计算说明。​
由创建集群时,配置的 单节点 Pod 实例数量上限 参数和节点 kubelet 的max-pods参数决定。详情请参见 节点的 Pod 调度密度计算说明。​
容器网络​
  • Pod CIDR 直接从 VPC CIDR 中分配,因此对 VPC 的地址消耗较高,需根据集群规模或业务规模合理选择 VPC 网段和子网,保证每个子网均有足够的 IP 地址可用。​
  • Node 子网的 IP 地址规模要与集群规模相匹配,否则会因为 IP 地址不足导致无法创建节点。​
  • Pod 子网的 IP 地址规模要与业务规模相匹配,否则会因为 IP 地址不足导致无法创建 Pod。​
  • Service CIDR 与 VPC CIDR 互相独立,不能冲突。​
  • 容器网段独立于 VPC 网段。Flannel 会为集群中的每个节点从已配置的容器网段中分配一个子网网段,节点内所有 Pod 的 IP 地址都将从子网网段中分配。​
  • Pod CIDR、VPC CIDR 和 Service CIDR 互相独立,不能冲突。​
  • Pod CIDR 不能与 VPC CIDR 冲突。​
  • Pod CIDR 不能与 同一 VPC 下的其他集群的 Pod CIDR 冲突。​
  • Service CIDR 不能与 VPC CIDR 冲突。​
  • Service CIDR 不能与同一 VPC 下的其他集群的 Pod CIDR 冲突。​
  • 不支持容器网络扩展。​
网络安全​
  • 不支持 NetworkPolicy。​
  • 不支持配置 QoS 限速。​
IPv4/IPv6 双栈​
支持双栈。详情请参见 创建 IPv4/IPv6 双栈集群。​
不支持双栈。​
固定 Pod IP​
支持为 Pod 配置固定 IP。详情请参见 为 Pod 配置固定 IP。​
不支持为 Pod 配置固定 IP。​
​
服务(Service)​
由于集群中的 Pod 是临时资源,生命周期短、IP 地址动态变化,无法直接作为服务访问入口。Kubernetes 中定义了 Service 作为服务抽象层,用于为一组功能相同的 Pod 提供固定的访问入口、负载均衡与服务发现能力,屏蔽 Pod 的动态扩缩容与 IP 变更,实现服务与后端 Pod 解耦。​
Service 主要包含的类型,如下所示:​
  • ClusterIP:(默认类型)分配集群内部虚拟 IP,仅允许集群内部访问,用于服务间内部通信。​
  • NodePort:在 ClusterIP 的基础上,在每个节点开放固定端口,通过节点 IP + 端口的形式,从集群外部访问服务。​
  • LoadBalancer:对接 CLB 负载均衡器,自动创建公网/内网 CLB 实例,分配独立公网 IP,实现集群服务对外暴露。​
  • ExternalName:将集群外部服务映射为集群内部域名,实现集群内访问外部服务的统一化,无 IP 分配,仅做域名映射。​
说明​
服务的详细介绍和配置步骤,请参见 服务概述。​
路由(Ingress)​
LoadBalancer 类型 Service 仅支持四层流量转发,而 Ingress 可以基于七层的 HTTP 和 HTTPS 协议实现转发,通过不同的转发规则将流量转发至集群内多个后端 Service,实现域名路由、路径转发、重定向、限流等高级流量管控功能。​
Ingress 作为 Kubernetes 集群中一种独立的资源,主要由如下资源组成:​
  • Ingress 资源:Kubernetes API 对象,定义流量路由规则,包括域名、路径、目标 Service、HTTPS 证书等配置,仅为规则声明,不负责实际流量转发。​
  • Ingress Controller:负责监听集群外部的网络流量,并解析 ingress 规则,实现流量转发到后端服务的控制器组件,包括:APIG Ingress Controller、ALB Ingress Controller、CLB Ingress Controller 等。​
说明​
路由的详细介绍和配置步骤,请参见 路由规则概述。​
域名解析(DNS)​
VKE 集群使用 CoreDNS 实现集群内的服务发现和域名解析。CoreDNS 以组件形态部署在 kube-system 命名空间,并以 Pod 形式运行。集群内所有 Pod 默认将 CoreDNS 作为 DNS 服务器,自动解析集群内部域名与外部公网域名。​
集群为每个 Service 分配固定的全限定域名(FQDN),格式为<service-name>.<namespace>.svc.cluster.local,其中:​
  • <service-name>:服务名称。​
  • namespace:服务所属命名空间。​
  • cluster.local:集群默认根域名,可自定义修改。​
例如:当您在集群的 default 命名空间下,创建名为 service-demo 的服务时,其默认域名为service-demo.default.svc.cluster.local。集群内的任意 Pod 均可通过该域名直接访问该服务。​
​
最近更新时间:2026.04.07 18:01:50
这个页面对您有帮助吗?
有用
有用
无用
无用