更新时间:2026-01-27 GMT+08:00
分享

为Pod配置固定IP

使用场景

CCE Autopilot集群会为每个Pod分配用户VPC网络下的一张网卡,支持为StatefulSet工作负载的Pod(容器网卡)固定IP,适用于需要针对具体IP地址做访问控制、服务注册、服务发现、日志审计等场景。

例如,当有一个需要访问云上数据库的StatefulSet类型业务,需要在对云上数据库进行严格的访问控制,只允许该业务进行访问,则可固定该业务的Pod IP,配置云上数据库的安全组只允许该业务的Pod IP可进行访问。

约束限制

  • 目前只支持StatefulSet类型的Pod或无ownerReferences的Pod固定IP,不支持Deployment等其他类型的工作负载配置Pod固定IP。
  • 对Pod的IP地址无明确要求的业务不建议配置固定IP,因为配置了固定IP的Pod,Pod重建的耗时会略微变长同时IP地址的利用率会下降。
  • 不支持直接修改Pod对象的固定IP的annotations的值,如果直接修改的话,后台不会生效;如有修改诉求,请直接修改对应的StatefulSet工作负载spec.template字段下的annotations配置。

通过控制台设置

通过控制台创建工作负载时,您可在创建工作负载页面的“高级配置 > 网络配置”中设置Pod固定IP。

  • 是否开启固定IP:开启固定IP后,Pod每次重启都不会改变Pod IP。
  • 回收时间间隔:Pod删除后相关IP地址的保留时长。在此时间段内,原Pod IP地址无法被其他Pod使用。

通过kubectl命令行设置

您可以通过对StatefulSet添加annotations来设置是否开启Pod固定IP功能,如下所示。

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nginx
spec:
  serviceName: nginx
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
      annotations:
        pod.alpha.kubernetes.io/initialized: 'true'
        yangtse.io/static-ip: 'true'
        yangtse.io/static-ip-expire-no-cascading: 'false'
        yangtse.io/static-ip-expire-duration: 5m
    spec:
      containers:
        - name: container-0
          image: nginx:alpine
          resources:
            limits:
              cpu: 100m
              memory: 200Mi
            requests:
              cpu: 100m
              memory: 200Mi
      imagePullSecrets:
        - name: default-secret
表1 Pod固定IP的annotation配置

annotation

默认值

参数说明

取值范围

yangtse.io/static-ip

false

是否开启Pod固定IP,只有StatefulSet类型的Pod或无ownerReferences的Pod支持,默认不开启。

"false"或"true"

yangtse.io/static-ip-expire-duration

5m

删除固定IP的Pod后,对应的固定IP网卡过期回收的时间间隔。

支持时间格式为Go time type,例如1h30m、5m。关于Go time type,请参见Go time type

yangtse.io/static-ip-expire-no-cascading

false

是否关闭StatefulSet工作负载的级联回收。

默认为false,表示StatefulSet删除后,会级联删除对应的固定IP网卡。如果您需要在删除StatefulSet对象后,在网卡过期回收时间内保留对应的固定IP,用于下一次重建同名的StatefulSet再次使用对应的固定IP,请将该参数设为true。

"false"或"true"

相关文档