本文主要描述使用容器服务时,关于容器网络(CNI)的注意事项、操作配置建议和使用方法最佳实践。
HostPort 是 Kubernetes 默认提供的网络功能,可以让 Pod 通过其所在 Node(节点)的特定端口来暴露服务。HostPort 虽然可以为不同网络平面中 Node 与 Pod 的网络插件实现提供便捷,但会引入与 Node 的源端口产生冲突,引发偶发的网络异常问题。对于容器服务中 VPC-CNI 容器网络模型集群,Pod 与 Node 均为 VPC 网络平面的网元,访问 Node 与访问 Pod 链路的差异很小,HostPort 不再是一个很好的选择,若您有快捷访问 Pod 容器相关需求,可为 Pod 绑定独立 EIP。
说明
【邀测·申请试用】:为 Pod 绑定独立 EIP 功能目前处于 邀测 阶段,如需使用,请提交申请。
容器服务中默认的 NodePort 端口与系统配置net.ipv4.ip_local_port_range
错开,保证了 NodePort 服务所用端口不会和运行在节点上的进程所使用的端口冲突,同时系统组件的端口也避开了 NodePort 端口的。擅自修改 NodePort 端口范围,可能会因端口冲突而导致网络异常,请避免做此操作。
为节点配置额外的弹性网卡(ENI)会占用 VPC-CNI 网络模型集群中节点的 ENI 配额,因此会导致节点的 Pod 密度减少,乃至可能导致新增 Pod 失败,请谨慎操作。节点的 Pod 密度计算方法,请参见 节点的 Pod 调度密度计算说明。
VPC-CNI 网络模型使用私有网络(VPC)资源为 Kubernetes 集群创建网络,VPC 资源的配额直接决定了 Kubernetes 集群的规模上限。在创建集群时,请提前做好集群依赖的 VPC 资源规划,避免日后集群规模增长时因 VPC 资源不足导致业务受影响。
建议在使用集群的过程中时刻关注 VPC 相关资源的水位,及时扩容,避免因资源配额用尽导致 Pod 网络创建失败。VPC 相关资源扩容,请参见 VPC 约束限制。
VPC-CNI 网络模型在节点上使用 VPC 的弹性网卡(ENI)为 Pod 创建网络。此类 ENI 的生命周期和配置由 VPC-CNI 网络插件负责,请勿对其进行任何操作,包括但不限于:
强制删除 Kubernetes 资源(例如安装各类组件时自动创建的 CRD、Pod 等资源)可能导致资源状态异常,进而导致资源冲突、无效等问题。如有强制删除 Kubernetes 资源需求,请 提交工单 获取技术支持,切勿自行操作。
vpc-cni 组件为 VPC-CNI 网络模型集群中的系统关键组件。组件配置由容器服务后台托管,因此请勿直接修改 vpc-cni 的配置文件(ConfigMap)对组件进行配置变更。如有需求,请 提交工单 获取技术支持。