Todos os produtos
Search
Central de documentação

Elastic Container Instance:Configure um pod ECI para usar um endereço IP fixo

Última atualização: Jun 27, 2026

Algumas aplicações exigem que um pod mantenha um endereço IP consistente. Este tópico descreve como configurar um pod do Elastic Container Instance (ECI) para usar um endereço IP fixo.

Como funciona

Por padrão, ao criar um pod ECI, o sistema atribui um endereço IP aleatório ao pod a partir do bloco CIDR do vSwitch especificado no eci-profile. Quando uma falha libera um pod, o sistema libera seu endereço IP e atribui um novo ao pod substituto. Em certos cenários, como na exposição direta de um serviço pelo endereço IP, o pod pode exigir um endereço IP fixo para garantir a continuidade dos negócios.

Para atender a esses cenários, o ECI oferece o recurso de endereço IP fixo. Ao criar um pod ECI com esse recurso ativado, o sistema aloca dois endereços IP do vSwitch configurado: um endereço IP dinâmico, invisível dentro do cluster, e um endereço IP fixo. Após a liberação do pod, o sistema retém seu endereço IP fixo por um período específico (48 horas por padrão). Se você criar um novo pod dentro desse período de retenção com o mesmo ID de cluster, namespace e nome do pod liberado, e também ativar o recurso de endereço IP fixo, o sistema atribuirá o endereço IP retido ao novo pod. Isso garante a consistência do endereço IP do pod.

Nota

Nesse cenário, use um StatefulSet para implantar sua aplicação. Quando um pod em um StatefulSet é liberado, o sistema cria automaticamente um novo pod com o mesmo namespace e nome.

Configuração

Adicione annotations aos metadados do pod para ativar o recurso de endereço IP fixo e configurar o período de retenção. A tabela a seguir descreve as annotations.

Annotation

Exemplo

Descrição

k8s.aliyun.com/eci-fixed-ip

"true"

Defina como "true" para ativar o recurso de endereço IP fixo.

k8s.aliyun.com/eci-fixed-ip-retain-hour

"24"

Número de horas para reter o endereço IP fixo após a liberação do pod.

Se omitido, o padrão é 48 horas.

Procedimento

  1. Crie um Service e um StatefulSet.

    kubectl apply -f fixedIp.yaml

    O arquivo fixedIp.yaml a seguir define um Service e um StatefulSet. O StatefulSet inclui um pod ECI com a annotation que ativa o recurso de endereço IP fixo.

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      minReadySeconds: 10
      template:
        metadata:
          annotations:
            k8s.aliyun.com/eci-fixed-ip: "true"  # Enable the fixed IP address feature.
          labels:
            app: nginx
            alibabacloud.com/eci: "true"
        spec:
          containers:
          - name: nginx
            image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2
            ports:
            - containerPort: 80
              name: web
  2. Execute o comando a seguir para monitorar as alterações de status do pod.

    kubectl get pod -o wide -w

    A saída mostra que o StatefulSet criou um pod chamado web-0 com o endereço IP 172.16.0.129.

    d:~$ kubectl get pod -o wide -w
    NAME    READY   STATUS              RESTARTS   AGE   IP              NODE                         NOMINATED NODE   READINESS GATES
    web-0   0/1     Pending             0                9s    <none>          <none>                       <none>           <none>
    web-0   0/1     Pending             0               20s    <none>          <none>                       <none>           <none>
    web-0   0/1     Pending             0               20s    <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0               20s    <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     ContainerCreating   0               69s    172.16.0.129   virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Running             0               76s    172.16.0.129   virtual-kubelet-cn-beijing-h   <none>           <none>
  3. Abra um novo terminal, conecte-se ao cluster e execute o comando a seguir para excluir o pod no StatefulSet.

    kubectl delete pod web-0
  4. Retorne ao primeiro terminal e continue observando as alterações de status do pod.

    A saída indica que, após a exclusão do pod original, o StatefulSet cria automaticamente um novo pod que reutiliza o endereço IP original.

    Nota

    A criação do novo pod pode sofrer atraso porque o endereço IP permanece ocupado até a exclusão completa do pod anterior.

    1:~$ kubectl get pod -o wide -w
    NAME    READY   STATUS              RESTARTS   AGE     IP              NODE                          NOMINATED NODE   READINESS GATES
    web-0   0/1     Pending             0          9s      <none>          <none>                        <none>           <none>
    web-0   0/1     Pending             0          20s     <none>          <none>                        <none>           <none>
    web-0   0/1     Pending             0          20s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0          20s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     ContainerCreating   0          69s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Running             0          76s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Terminating         0          2m37s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Terminating         0          2m39s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Terminating         0          2m55s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Terminating         0          2m55s   172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0          0s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          0s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          1s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          1s      <none>                                        <none>           <none>
    web-0   0/1     Pending             0          17s     <none>                                        <none>           <none>
    web-0   0/1     Pending             0          17s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     Pending             0          17s     <none>          virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   0/1     ContainerCreating   0          69s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>
    web-0   1/1     Running             0          76s     172.16.0.129    virtual-kubelet-cn-beijing-h   <none>           <none>