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

容器服务

复制全文
下载 pdf
容器网络
为 Pod 配置固定 IP
复制全文
下载 pdf
为 Pod 配置固定 IP
容器服务支持为 Pod 配置固定 IP,解决基于 Pod IP 的访问控制、服务注册、服务发现、日志审计等需求。本文介绍如何为 Pod 配置固定 IP。​
说明​
【邀测·申请试用】:该功能目前处于邀测阶段,如需使用,请提交申请。​
背景信息​
容器服务支持在创建 VPC-CNI 网络模型的集群时开启 Trunk ENI 模式,开启后可以在 Trunk ENI 节点中为 Pod 配置独占弹性网卡,并指定 Pod 的子网和安全组。​
当 Pod 配置独占网卡时,支持为 Pod 配置固定 IP。方便用户针对具体的 Pod IP 配置访问控制、服务注册、服务发现、日志审计等。配置固定 IP 涉及的 CRD 资源对象和作用如下:​
  • VPCENIDefinition 对象:该对象用来定义 ENI 的 VPC IPAM 配置信息。包括 VPC ID、IP 分配模式、安全组、子网 ID 等。​
  • PodNetworkDefinition 对象:该对象用来定义 Pod 的网络配置,包含所使用的 IPAM 信息,Pod 选择信息等。​
  • ​alt​​
使用限制​
  • Trunk ENI 特性仅支持在 VPC-CNI 容器网络模型的集群中使用。​
  • Pod Name 必须小于等于 63 字符。​
操作步骤​
步骤一:开启 Trunk ENI​
​
创建集群时开启
存量集群开启
​
说明​
本文仅介绍创建集群时开启 Trunk ENI 的关键配置,包括:开启 Trunk ENI 配置、安装 vpc-cni-controlplane 组件。创建集群的其他详细配置,请参见:创建集群。​
  1. 在集群管理页面的左侧导航栏,选择 集群。​
  1. 在集群列表页面,单击左上角 创建集群,跳转到集群创建页面的 集群配置 步骤,完成后单击 下一步:节点池配置。​
  • ​​​
  • 关键配置项如下,其他参数按需配置即可。​
  • ​
    配置项​
    说明​
    容器网络模型​
    配置集群的容器网络(CNI)方案,本场景必须选择 VPC-CNI。​
    Trunk ENI​
    默认未勾选。勾选后,可基于 Trunk ENI 支持 Pod 独占弹性网卡,提供 Pod 绑定安全组、指定子网调度等高级能力。本场景必须 勾选 此配置。​
    ​
  1. 在 节点池配置 步骤,按需配置即可,完成后单击 下一步:组件配置。​
  1. 在组件配置步骤,将默认安装 vpc-cni-controlplane 组件,其他组件按需配置即可,完成后单击 下一步:确认配置。​
  • ​​​
  1. 确认新建集群信息和计费准确无误后,阅读 《容器服务专用服务条款》 并勾选同意,单击 确定 ,开始创建集群。​
​
步骤二:开启 Pod 固定 IP 功能​
  1. 集群创建完成后,单击目标集群名称,进入集群管理页面。​
  1. 在左侧导航栏选择 组件管理。​
  1. 选择 网络 页签,找到 vpc-cni-controlplane 组件,单击 配置,并开启 Pod 固定 IP 功能。​
  • ​​​
  1. 单击 确定,完成配置。​
说明​
如果您集群中没有该选项,或者该选项被置灰,不可配置,说明您的集群没有开启 Trunk ENI 功能或者组件的版本不正确,详情请参见前文的描述。​
步骤三:创建 VPCENIDefinition 对象​
创建 VPCENIDefinition 对象,配置示例和重点参数说明,如下所示:​
​
apiVersion: network.volcengine.com/v1beta1​
kind: VPCENIDefinition​
metadata:​
name: vpceni-default # 自定义 VPCENIDefinition 对象名称​
namespace: default​
spec:​
vpcID: vpc-rr1s2d*** # 必选,集群所属私有网络(VPC)的 ID​
allocateType:​
releaseAfter: 3m0s # 必选,Pod 删除后,IP 的延迟回收时间,取值为 0 表示“立即回收”。仅在 releaseStrategy 为 TTL 时有效​
releaseStrategy: TTL # 必选,IP 回收策略,取值为 TTL(延迟回收)和 Never(永不回收)。当配置为 Never 时,releaseAfter 的配置无效​
type: Fixed # 必选,IP 分配模式,Fixed 表示固定分配模式​
securityGroupIDs: ​
- sg-rrhowl*** # 必选,Pod 默认安全组​
subnetIDs:​
- subnet-13f64*** # 必选,指定 VPC 中的子网 ID​
- subnet-13fy9***​
​
spec字段中的详细参数说明如下所示。​
​
参数​
​
是否必选​
说明​
vpcID​
-​
是​
集群所属私有网络(VPC)ID。​
allocateType​
type​
是​
IP 分配模式,取值:​
  • Elastic:弹性 IP 策略。Pod 删除后,IP 资源会同步释放。​
  • Fixed:固定 IP 策略。​
​
releaseStrategy​
当type为Fixed时,必选​
IP 回收策略,该参数仅在type为Fixed时有效。取值:​
  • TTL:延迟回收。系统会基于releaseAfter的配置延迟回收 IP 地址。​
  • Never:永不回收。系统不会自动回收 IP 地址,当您无需使用 IP 时,需要手工删除 PodENI 资源。​
说明​
当配置为Never时,releaseAfter的配置无效。​
​
releaseAfter​
当type为Fixed时,必选​
IP 延迟回收时间。仅在releaseStrategy为TTL时有效。表示 Pod 删除后,IP 地址的延迟回收时间。时间格式为 Go time type,例如2h35m、3m0s等。Go time type 格式的详情,请参见 Go time type。取值为0表示立即回收。​
securityGroupIDs​
-​
是​
配置安全组 ID。允许配置多个安全组,配置多个安全组时将同时生效。​
subnetIDs​
-​
是​
配置 VPC 中的子网 ID,允许配置多个子网 ID。包括:集群 Pod 子网中的部分或全部子网、集群 Pod 子网中未指定但属于指定 VPC ID 的其他子网 ID。​
​
步骤四:创建 PodNetworkDefinition 对象​
创建 PodNetworkDefinition 对象,配置示例和重点参数说明,如下所示:​
​
apiVersion: network.volcengine.com/v1beta1​
kind: PodNetworkDefinition​
metadata:​
name: vpceni1​
namespace: default​
spec:​
ipResource:​
name: vpceni-default # 必选,自定义的 VPCENIDefinition 对象名称,与上一步中配置的一致​
type: VPCENIDefinition # 必选,指定网络资源类型,固定值​
selectors:​
- podSelector:​
matchLabels:​
foo: bar # 可选,PodNetworkDefinition 对象中定义的 Pod 标签,用于匹配指定的 Pod,独占弹性网卡并配置固定 IP​
namespaceSelector:​
matchLabels:​
foo: bar # 可选,PodNetworkDefinition 对象中定义的 Namespace 标签,用于匹配指定的 Namespace,为 Namespace 中的全部 Pod 提供独占弹性网卡并配置固定 IP​
​
spec字段中的详细参数说明如下所示。​
​
参数​
​
是否必选​
说明​
ipResource​
name​
是​
指定网络资源的名称,需要与 VPCENIDefinition 对象的配置一致。​
​
type​
是​
指定网络资源的类型,固定为VPCENIDefinition。​
selectors​
podSelector​
否​
用于匹配 Pod 的 Labels,匹配的 Pod 在创建时将使用ipResource指定的网络资源。​
​
namespaceSelector​
否​
用于匹配 Namespace 的 Labels,匹配的 Namespace 中所有 Pod 在创建时都将使用ipResource指定的网络资源。​
​
注意​
  • podSelector和namespaceSelector非必选,允许基于期望的匹配方式配置。但至少需要配置 1 个参数,否则功能无法生效。​
  • selectors为 List 结构,支持配置多个命名空间标签和 Pod 标签。每个 Item 支持同时配置命名空间标签和 Pod 标签。​
  • 配置多个 Item 时,每个 Item 内部为 交集 关系。如果您同时配置了命名空间标签和 Pod 标签,则只有 Pod 和其所在的命名空间同时匹配上对应的标签时,Pod 才会被分配弹性网卡和固定 IP。​
  • 配置多个 Item 时,多个 Item 之间为 并集 关系。如果您同时配置了多个 Item,则 Pod 只要匹配上任意一个 Item 定义的标签,Pod 就会被分配弹性网卡和固定 IP。​
步骤五:配置 Pod 独占弹性网卡​
系统支持以下方式配置 Pod 独占弹性网卡,包括:​
  • 命名空间标签:通过匹配 Namespace 的标签,为 Namespace 中的全部 Pod 提供独占网卡能力。​
  • Pod 标签:通过匹配 Pod 的标签,为指定 Pod 提供独占网卡能力。​
说明​
命名空间标签和 Pod 标签可以独立使用,若同时配置了命名空间标签和 Pod 标签,最终匹配结果取交集。​
​
配置命名空间标签
创建 Pod 并添加标签
创建工作负载并添加标签
​
您可以在创建命名空间时,添加 PodNetworkDefinition 对象中定义的标签(例如:foo: bar),为 Namespace 中的全部 Pod 提供独占网卡能力。示例如下:​
​
apiVersion: v1​
kind: Namespace​
metadata:​
name: namespace-demo # 命名空间的名称​
labels:​
foo: bar # 添加 PodNetworkDefinition 对象中定义的标签​
​
​
结果验证​
配置完成后,匹配 PodNetworkDefinition 对象 Label 的 Pod 被系统自动补全 Pod Annotation(包括:ENI request/limit),Pod 将被调度到支持 Trunk 的节点上,并为 Pod 配置独占弹性网卡。​
说明​
使用固定 IP 时,网卡的 AZ 信息会在 Pod 第一次创建时确定。如果 Pod 发生重建,则 Pod 会被调度到第一次所在节点的 AZ,实现自动亲和。​
如下图所示,系统自动补全k8s.volcengine.com/eni-ip-status等 Annotation,表示 Pod 已经配置独占弹性网卡。​
​​​
在 Pod 详情页面,选择 网卡 页签,可以查看独占网卡的相关信息。​
​​​
删除并重建 Pod,可以看到 Pod 的 IP 地址不变,即实现了为 Pod 配置固定 IP。​
​
最近更新时间:2026.08.17 11:13:20
这个页面对您有帮助吗?
有用
有用
无用
无用