更新时间:2024-08-17 GMT+08:00

为Pod配置固定EIP

使用场景

在云原生网络2.0下,支持为StatefulSet工作负载或直接创建的Pod分配固定的公网IP(EIP)。

约束限制

  • 仅以下指定版本的CCE Turbo集群支持用户配置Pod固定EIP:
    • v1.19集群:v1.19.16-r20及以上版本
    • v1.21集群:v1.21.10-r0及以上版本
    • v1.23集群:v1.23.8-r0及以上版本
    • v1.25集群:v1.25.3-r0及以上版本
    • v1.25以上版本集群
  • 开启固定EIP功能需要和Pod自动创建EIP功能配合使用,详情请参见为Pod配置EIP
  • 目前只支持StatefulSet类型的Pod或直接创建的Pod固定EIP,暂不支持Deployment、DaemonSet等其他类型的工作负载配置Pod固定EIP
  • 固定EIP创建后,生命周期内(如过期时间未到/Pod还在使用中)不支持通过Pod修改EIP属性。
  • 对Pod的EIP地址无明确要求的业务不建议配置固定EIP,因为配置了固定EIP的Pod,Pod重建的耗时会略微变长。

配置固定EIP

创建固定EIP的Pod时,填写EIP相关的annotation后,EIP会随Pod自动创建并绑定至该Pod。

以下示例创建一个名为nginx的有状态负载,EIP将随Pod自动创建并绑定至Pod。具体字段含义请参见表1

  • 创建有状态负载时固定独占带宽类型的EIP,无需指定带宽ID,示例如下:
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nginx
    spec:
      serviceName: nginx
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          annotations:
            yangtse.io/static-eip: 'true'   # Pod固定EIP
            yangtse.io/static-eip-expire-no-cascading: 'false'   # EIP级联删除
            yangtse.io/static-eip-expire-duration: 5m   # 固定EIP过期回收的时间间隔
            yangtse.io/pod-with-eip: 'true'    # EIP跟随Pod创建
            yangtse.io/eip-bandwidth-size: '5'    # EIP带宽
            yangtse.io/eip-network-type: 5_bgp    # EIP类型
            yangtse.io/eip-charge-mode: bandwidth    # EIP计费模式
        spec:
          containers:
            - name: container-0
              image: nginx:alpine
              resources:
                limits:
                  cpu: 100m
                  memory: 200Mi
                requests:
                  cpu: 100m
                  memory: 200Mi
          imagePullSecrets:
            - name: default-secret
  • 创建有状态负载时固定共享带宽类型的EIP,必须指定带宽ID,示例如下:
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nginx
    spec:
      serviceName: nginx
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          annotations:
            yangtse.io/static-eip: 'true'   # Pod固定EIP
            yangtse.io/pod-with-eip: 'true'    # EIP跟随Pod创建
            yangtse.io/eip-network-type: 5_bgp    # EIP类型
            yangtse.io/eip-bandwidth-id: <eip_bandwidth_id>    # EIP共享带宽ID
        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固定EIP的annotation配置

annotation

是否可选

默认值

参数说明

取值范围

yangtse.io/static-eip

必选

false

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

"false"或"true"

yangtse.io/static-eip-expire-duration

可选

5m

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

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

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

可选

false

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

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

"false"或"true"

表2 独占带宽EIP跟随Pod创建的annotation配置

annotation

是否可选

默认值

参数说明

取值范围

yangtse.io/pod-with-eip

必选

false

是否需要跟随Pod创建EIP并绑定到该Pod。

"false"或"true"

yangtse.io/eip-bandwidth-size

可选

5

带宽大小,单位为Mbit/s。

具体范围以各区域配置为准,根据带宽的计费类型不同可能存在差异,详情请参见弹性公网IP控制台的购买页面。

例如,“亚太-新加坡”区域按带宽计费类型的带宽大小范围为1Mbit/s~2000Mbit/s、按流量计费类型的带宽大小范围为1Mbit/s~300Mbit/s。

yangtse.io/eip-network-type

可选

5_bgp

公网IP类型。

具体类型以各区域配置为准,详情请参见弹性公网IP控制台的购买页面。

例如,“亚太-新加坡”区域支持以下类型:

  • 5_bgp:全动态BGP

yangtse.io/eip-charge-mode

可选

按流量计费或按带宽计费。

建议填写该参数。若该参数为空,表示不指定计费模式,则以该区域下弹性公网IP接口的默认值为准。

  • bandwidth:按带宽计费
  • traffic:按流量计费

yangtse.io/eip-bandwidth-name

可选

Pod名称

带宽名称。

  • 1-64个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点)
  • 最小长度:1
  • 最大长度:64
表3 共享带宽类型EIP跟随Pod创建的annotation配置

annotation

是否可选

默认值

参数说明

取值范围

yangtse.io/pod-with-eip

必选

false

是否需要跟随Pod创建EIP并绑定到该Pod。

"false"或"true"

yangtse.io/eip-network-type

可选

5_bgp

公网IP类型。

  • 5_bgp
  • 5_union
  • 5_sbgp

具体类型以各区域配置为准,详情请参见弹性公网IP控制台。

yangtse.io/eip-bandwidth-id

使用共享型带宽时必选

已有的带宽ID。

  • 不填写该字段时,则默认使用独占带宽的EIP。独占带宽EIP的参数设置请参见表1
  • 填写该字段时,只允许同时指定yangtse.io/eip-network-type字段,且该字段为可选。

-

删除固定EIP

删除Pod后,在配置的固定EIP过期时间内,如果有同名的Pod创建,EIP依旧可用。只有在EIP过期时间内没有同名Pod创建或者删除StatefulSet时开启级联删除EIP时,固定EIP才会删除。