指定ECI Pod的私网IP地址

某些业务场景下,可能需要某一业务Pod使用某个固定的IP地址。本文介绍在创建ECI Pod时,如何指定Pod的私网IP地址。

功能说明

默认情况下,创建ECI Pod时,系统会从eci-profile中配置的交换机网段中,随机为Pod分配一个私网IP地址。某些业务场景下,您可能想要指定Pod的私网IP地址。例如迁移业务时,在删除了旧的Pod后,可以为新创建的Pod指定使用旧Pod对应的IP地址,以此来保证业务连续性。

说明

关于如何为集群或者Pod配置交换机,请参见多可用区创建Pod

使用限制

指定私网IP地址功能仅支持IPv4地址,不支持IPv6地址。

配置说明

您可以在Pod metadata中添加k8s.aliyun.com/eci-private-ip-address的Annotation来指定ECI Pod的私网IP地址。相关注意事项如下:

  • 指定的IP地址必须属于eci-profile中vSwitchIds字段对应交换机的网段。请确保该IP地址没有被占用。

  • 不支持指定多个IP地址,即创建Deployment等资源时,如果添加了该Annotation,只允许1个副本。如果配置了多个副本,只会成功1个Pod,其他Pod会因无法分配IP地址而创建失败。

配置示例

  1. 创建一个指定私网IP地址的Pod。

    kubectl create -f private-ip-test.yaml

    private-ip-test.yaml的内容示例如下:

    apiVersion: v1
    kind: Pod
    metadata:
      name: private-ip-test
      labels:
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-private-ip-address: "172.16.0.11"    #指定私网IP地址
    spec:
      containers:
      - image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2
        name: test-container

  2. 确认Pod的私网IP地址。

    kubectl get pod private-ip-test -o wide

    返回示例如下,可以看到系统已为Pod分配指定的私网IP地址。

    指定ip-k8s.png