En algunos escenarios de negocio, los pods de trabajo necesitan usar una dirección IP fija. Este tema describe cómo especificar una dirección IP privada para un pod basado en Elastic Container Instance al momento de crearlo.
Descripción de la función
De forma predeterminada, el sistema asigna aleatoriamente una dirección IP privada a un pod basado en Elastic Container Instance. Esta dirección se toma del bloque CIDR del vSwitch que usted especificó en eci-profile cuando creó el pod. En ciertos escenarios de negocio, es posible que necesite especificar las direcciones IP privadas de los pods. Por ejemplo, si desea migrar un servicio, después de eliminar el pod antiguo puede asignarle su misma dirección IP al pod nuevo. Esto garantiza la continuidad del servicio.
Para obtener más información sobre cómo configurar vSwitches para clústeres o pods, consulte Create pods across multiple zones.
Límites
Las direcciones IP privadas que especifique para los pods deben ser direcciones IPv4.
Descripción de la configuración
Para especificar una dirección IP privada para un pod, agregue la anotación k8s.aliyun.com/eci-private-ip-address a sus metadatos. Tenga en cuenta lo siguiente:
La dirección IP especificada debe pertenecer al bloque CIDR del vSwitch indicado en el parámetro
vSwitchIdsdentro de eci-profile. Compruebe que la dirección IP esté libre.No es posible especificar varias direcciones IP. Si agrega la anotación al crear un recurso como un Deployment, solo puede configurar una réplica para el pod. Si configura varias réplicas, únicamente se crea un pod. Los demás fallan porque no se les puede asignar una dirección IP.
Ejemplo de configuración
-
Especifique una dirección IP privada para crear un pod.
kubectl create -f private-ip-test.yamlA continuación se muestra el contenido de ejemplo de 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 -
Compruebe la dirección IP privada del pod.
kubectl get pod private-ip-test -o wideLa siguiente figura muestra un resultado de ejemplo. El sistema asignó al pod la dirección IP privada especificada.
:~$ 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>