Em alguns cenários de negócios, os pods de trabalho precisam usar um endereço IP fixo. Este tópico descreve como especificar um endereço IP privado para um pod baseado em Elastic Container Instance durante a criação.
Descrição do recurso
Por padrão, o sistema atribui aleatoriamente um endereço IP privado a um pod baseado em Elastic Container Instance, selecionando-o do bloco CIDR do vSwitch especificado no eci-profile durante a criação do pod. Em certos cenários, talvez seja necessário definir manualmente os endereços IP privados dos pods. Por exemplo, ao migrar um serviço e excluir o pod antigo, você pode atribuir o mesmo endereço IP ao novo pod para garantir a continuidade do serviço.
Para obter mais informações sobre como configurar vSwitches para clusters ou pods, consulte Criar pods em várias zonas.
Limites
Os endereços IP privados especificados para os pods devem ser IPv4.
Descrição da configuração
Adicione a anotação k8s.aliyun.com/eci-private-ip-address aos metadados de um pod para definir seu endereço IP privado. Observe os seguintes pontos:
O endereço IP especificado deve pertencer ao bloco CIDR do vSwitch definido no parâmetro
vSwitchIdsdo eci-profile. Certifique-se de que o endereço IP esteja disponível.Não é possível especificar vários endereços IP. Ao adicionar a anotação na criação de recursos como um Deployment, configure apenas uma réplica para o pod. Se houver múltiplas réplicas, somente um pod será criado; os demais falharão por não conseguirem receber endereços IP.
Exemplo de configuração
-
Especifique um endereço IP privado para criar um pod.
kubectl create -f private-ip-test.yamlConteúdo de exemplo do arquivo 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" # Specify a private IP address for the pod. spec: containers: - image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 name: test-container -
Verifique o endereço IP privado do pod.
kubectl get pod private-ip-test -o wideA saída a seguir mostra um exemplo em que o sistema atribuiu ao pod o endereço IP privado especificado.
:~$ kubectl get pod private-ip-test -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES private-ip-test 1/1 Running 0 3m41s 172.16.0.11 virtual-kubelet-cn-beijing-h <none> <none>