Pada beberapa skenario bisnis, pod pekerja perlu menggunakan alamat IP tetap. Topik ini menjelaskan cara menentukan IP privat untuk pod berbasis Elastic Container Instance saat membuat pod tersebut.
Deskripsi fitur
Secara default, sistem secara acak menetapkan IP privat ke pod berbasis Elastic Container Instance dari blok CIDR vSwitch yang Anda tentukan dalam eci-profile saat membuat pod. Pada beberapa skenario bisnis, Anda mungkin ingin menentukan IP privat untuk pod tersebut. Misalnya, saat melakukan migrasi layanan, setelah menghapus pod lama, Anda dapat menetapkan kembali IP privat pod lama tersebut ke pod baru guna memastikan kelangsungan layanan.
Untuk informasi selengkapnya tentang cara mengonfigurasi vSwitch untuk kluster atau pod, lihat Buat pod di beberapa zona.
Batasan
IP privat yang Anda tentukan untuk pod harus berupa alamat IPv4.
Deskripsi konfigurasi
Anda dapat menambahkan anotasi k8s.aliyun.com/eci-private-ip-address ke metadata pod untuk menentukan IP privat pod tersebut. Perhatikan hal-hal berikut:
Alamat IP yang ditentukan harus berada dalam blok CIDR vSwitch yang dikonfigurasi pada parameter
vSwitchIdsdalam eci-profile. Pastikan alamat IP tersebut tidak sedang digunakan.Anda tidak dapat menentukan beberapa alamat IP. Jika Anda menambahkan anotasi ini saat membuat resource seperti Deployment, Anda hanya dapat mengonfigurasi satu replika untuk pod tersebut. Jika Anda mengonfigurasi beberapa replika, hanya satu pod yang akan dibuat; pod lainnya gagal dibuat karena tidak dapat diberikan alamat IP.
Contoh konfigurasi
Tentukan IP privat untuk membuat pod.
kubectl create -f private-ip-test.yamlContoh isi file 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" # Tentukan alamat IP privat untuk pod. spec: containers: - image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 name: test-container-
Periksa IP privat pod tersebut.
kubectl get pod private-ip-test -o wideGambar berikut menunjukkan contoh output. Sistem telah menetapkan IP privat yang ditentukan ke pod tersebut.
:~$ 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>