Dalam beberapa skenario bisnis, pod memerlukan penggunaan alamat IP tetap. Topik ini menjelaskan cara mengonfigurasi pod Elastic Container Instance agar menggunakan alamat IP tetap.
Deskripsi fitur
Secara default, saat membuat pod Elastic Container Instance, sistem secara acak menetapkan alamat IP dari blok CIDR vSwitch yang ditentukan dalam eci-profile. Jika pod dilepaskan karena kesalahan, alamat IP tersebut juga dilepaskan dan instance baru diberi alamat IP baru. Dalam skenario tertentu, seperti skenario di mana alamat IP layanan terpapar, pod memerlukan penggunaan alamat IP tetap. Tanpa alamat IP tetap, operasional bisnis dapat terganggu.
Untuk kebutuhan ini, Elastic Container Instance mendukung penggunaan alamat IP tetap. Saat fitur ini diaktifkan selama pembuatan pod Elastic Container Instance, sistem menetapkan dua alamat IP dari blok CIDR vSwitch yang ditentukan. Salah satu alamat IP adalah alamat IP dinamis yang tidak terlihat dalam kluster, sedangkan alamat IP lainnya adalah alamat IP tetap. Setelah pod dilepaskan, sistem mempertahankan alamat IP tetap tersebut. Selama periode validitas (default 48 jam), jika ID kluster, namespace, dan nama pod yang ingin dibuat sama dengan pod yang telah dilepaskan dan fitur alamat IP tetap diaktifkan baik pada pod lama maupun pod baru, sistem akan menetapkan alamat IP yang dipertahankan kepada pod baru. Dengan cara ini, pod yang memenuhi persyaratan bisnis yang sama menggunakan alamat IP yang sama.
Dalam skenario ini, Anda dapat menggunakan StatefulSet untuk menerapkan layanan. Setelah pod dalam StatefulSet dilepaskan, sistem secara otomatis membuat pod baru dengan nama yang sama dan diterapkan di namespace yang sama dengan pod sebelumnya.
Deskripsi konfigurasi
Anda dapat menambahkan anotasi ke metadata pod untuk mengonfigurasi penggunaan alamat IP tetap serta mengatur periode retensi alamat IP tetap setelah alamat IP tersebut tidak digunakan. Tabel berikut menjelaskan anotasi yang tersedia.
Anotasi | Contoh | Deskripsi |
k8s.aliyun.com/eci-fixed-ip | "true" | Menentukan apakah akan mengonfigurasi pod untuk menggunakan alamat IP tetap. |
k8s.aliyun.com/eci-fixed-ip-retain-hour | "24" | Menentukan periode retensi alamat IP tetap setelah pod asli dilepaskan dan alamat IP tetap menjadi tidak digunakan. Unit: jam. Jika Anda tidak mengonfigurasi anotasi ini, alamat IP tetap dipertahankan selama 48 jam secara default. |
Contoh konfigurasi
Buat Service dan StatefulSet.
kubectl apply -f fixedIp.yamlContoh berikut menunjukkan isi dari fixedIp.yaml yang digunakan untuk membuat Service dan StatefulSet. StatefulSet mencakup pod dengan alamat IP tetap yang diaktifkan.
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" # Mengaktifkan alamat IP tetap. 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: webJalankan perintah berikut untuk memantau status pod:
kubectl get pod -o wide -wContoh respons berikut menunjukkan bahwa StatefulSet mencakup pod bernama web-0 dengan alamat IP 172.16.0.129.

Buka kembali terminal CLI untuk terhubung ke kluster. Jalankan perintah berikut untuk menghapus pod dari StatefulSet:
kubectl delete pod web-0Kembali ke terminal CLI sebelumnya dan lanjutkan memantau perubahan status pod.
Contoh berikut menunjukkan respons baru. Setelah pod dihapus, StatefulSet secara otomatis membuat pod baru dengan alamat IP yang sama dengan pod yang dihapus.
CatatanPod asli mempertahankan alamat IP hingga sepenuhnya dihapus, yang dapat memengaruhi kecepatan pembuatan pod baru.
