Kegagalan pembuatan pod ECI dapat terjadi saat Anda melakukan scaling bisnis untuk menghadapi lonjakan traffic atau menjalankan pekerjaan berskala besar. Penyebab umumnya meliputi inventori instans yang tidak mencukupi di suatu availability zone atau alamat IP pada vSwitch yang telah habis. Untuk meningkatkan tingkat keberhasilan pembuatan dan memastikan kelangsungan bisnis, buat pod ECI di beberapa availability zone.
Prasyarat
Anda harus telah membuat beberapa vSwitch di availability zone berbeda dalam VPC target.
-
Untuk informasi tentang cara membuat vSwitch, lihat Create and manage a vSwitch.
-
Untuk informasi tentang wilayah dan availability zone yang mendukung ECI, lihat Regions and zones.
Informasi latar belakang
Saat membuat instans ECI, Anda dapat menentukan beberapa availability zone dengan menyediakan beberapa vSwitch. Sistem akan mendistribusikan permintaan secara acak di seluruh availability zone yang ditentukan untuk menyeimbangkan beban. Jika suatu availability zone memiliki inventori yang tidak mencukupi, sistem secara otomatis akan mencoba membuat instans di availability zone lain yang telah ditentukan.
Batasan berikut berlaku saat Anda menentukan beberapa availability zone (vSwitch):
-
Semua vSwitch yang ditentukan harus berada dalam VPC yang sama.
-
Anda dapat menentukan maksimal 10 vSwitch.
Menggabungkan beberapa availability zone dan beberapa tipe instans lebih lanjut meningkatkan tingkat keberhasilan pembuatan instans.
Konfigurasi
Anda dapat mengonfigurasi beberapa availability zone di tingkat kluster atau untuk pod ECI tertentu:
-
Kluster: Tentukan beberapa vSwitch untuk kluster. Konfigurasi ini berlaku untuk semua pod ECI dalam kluster tersebut.
-
Pod ECI: Tentukan beberapa vSwitch saat membuat pod ECI. Konfigurasi ini hanya berlaku untuk pod ECI tersebut.
Konfigurasi kluster baru
Sebelum membuat kluster, kami menyarankan agar Anda membuat beberapa vSwitch di availability zone berbeda dalam VPC yang akan digunakan. Saat membuat kluster, Anda dapat mengonfigurasi beberapa vSwitch untuk mengaktifkan fitur multi-availability zone. Contoh berikut menunjukkan cara membuat ACK Serverless cluster di Konsol Container Service for Kubernetes (ACK).
Pada bagian Virtual Private Cloud, pilih Use Existing dan tentukan VPC target. Lalu, pada bagian vSwitch, pilih beberapa vSwitch dari availability zone berbeda (Anda dapat memilih 1 hingga 10 vSwitch, dan sistem akan menandai availability zone yang Recommended).
Konfigurasi kluster yang sudah ada
Metode konfigurasi bergantung pada versi VK (komponen ack-virtual-node).
-
Jika versi VK Anda adalah v2.0.0.90-15deb126e-aliyun atau yang lebih baru, ubah eci-profile.
-
Jika versi VK Anda lebih lama dari v2.0.0.90-15deb126e-aliyun, ubah variabel lingkungan.
Eci-profile
Untuk menggunakan beberapa availability zone, edit ConfigMap bernama eci-profile dan tambahkan ID vSwitch ke bidang data.vSwitchIds.
-
Edit eci-profile.
kubectl edit cm -n kube-system eci-profile -
Ubah nilai bidang
vSwitchIds.Tambahkan ID vSwitch, dipisahkan dengan koma.
data: enableClusterIp: "true" enableHybridMode: "false" enablePrivateZone: "false" resourceGroupId: "" securityGroupId: sg-2ze0b9o8pjjzts4h**** selectors: "" vSwitchIds: vsw-2zeet2ksvw7f14ryz****,vsw-2ze94pjtfuj9vaymf**** vpcId: vpc-2zeghwzptn5zii0w7**** -
Simpan perubahan dan keluar.
Variabel lingkungan
Kami menyarankan agar Anda meningkatkan komponen VK ke versi terbaru untuk menggunakan fitur-fitur baru.
Bergantung pada cara Anda menerapkan VK, Anda dapat memperbarui variabel lingkungan ECI_VSWITCH pada Deployment atau StatefulSet untuk menggunakan beberapa availability zone. Contoh berikut menggunakan Deployment:
-
Edit Deployment.
kubectl -n kube-system edit deployment/virtual-node-controller -
Ubah variabel lingkungan
ECI_VSWITCH.Tambahkan ID vSwitch ke nilai variabel lingkungan
ECI_VSWITCH. Pisahkan beberapa ID vSwitch dengan koma.- name: ECI_VSWITCH value: vsw-bp1xpiowfm5vo8o3c****,vsw-bp1rkyjgr1xwoho6k**** -
Simpan perubahan dan keluar.
Konfigurasi pod ECI
Gunakan anotasi berikut dalam metadata Pod untuk menentukan beberapa availability zone:
-
k8s.aliyun.com/eci-vswitch: Tentukan beberapa vSwitch untuk menggunakan beberapa availability zone.
CatatanJika pod ECI menggunakan anotasi
k8s.aliyun.com/eci-vswitch, pod tersebut tidak mendukung penggunaan StorageClass bertipeWaitForFirstConsumersaat memasang disk yang disediakan secara dinamis. -
k8s.aliyun.com/eci-schedule-strategy: Mengonfigurasi kebijakan penjadwalan untuk beberapa availability zone. Nilai yang valid adalah
VSwitchOrdereddanVSwitchRandom. Tabel berikut menjelaskan kebijakan-kebijakan tersebut.CatatanJika Anda tidak menentukan kebijakan penjadwalan multi-availability zone, kebijakan
VSwitchRandomakan digunakan secara default.Kebijakan penjadwalan
Deskripsi
VSwitchOrdered (Sequential)
-
Jika pod ECI memasang disk, availability zone disk harus sesuai dengan availability zone Pod. Availability zone yang tidak memenuhi persyaratan ini akan difilter.
-
Sistem mencoba membuat resource dengan mencoba availability zone yang ditentukan secara berurutan. Jika availability zone pertama memiliki inventori yang tidak mencukupi, sistem akan mencoba availability zone kedua, dan seterusnya, hingga resource berhasil dibuat.
VSwitchRandom (Inventory-optimized)
-
Jika pod ECI memasang disk, availability zone disk harus sesuai dengan availability zone Pod. Availability zone yang tidak memenuhi persyaratan ini akan difilter.
-
Alibaba Cloud memilih vSwitch yang sesuai (dan availability zone-nya) berdasarkan strategi penjadwalan inventori optimal.
-
Jika pod ECI menentukan tipe instans, penjadwal akan memprioritaskan availability zone yang memiliki instans terjadwal yang sesuai untuk tipe tersebut.
-
Availability zone dengan performa penyimpanan lebih baik akan diprioritaskan. Availability zone lama berikut memiliki prioritas penjadwalan lebih rendah:
-
cn-beijing-e, cn-beijing-d
-
cn-shenzhen-a, cn-shenzhen-b, cn-shenzhen-c
-
cn-hangzhou-b, cn-hangzhou-e, cn-hangzhou-f
-
cn-shanghai-a, cn-shanghai-c
-
-
Anotasi harus ditambahkan ke metadata dalam file konfigurasi pod. Misalnya, saat membuat Deployment, Anda harus menambahkan anotasi di bagian spec.template.metadata.
Anotasi terkait Elastic Container Instance hanya diterapkan saat pod dibuat. Menambahkan atau mengubah anotasi ini pada pod yang sudah ada tidak akan berpengaruh.
Berikut adalah contoh konfigurasi:
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-vswitch: "vsw-bp1xpiowfm5vo8o3c****,vsw-bp1rkyjgr1xwoho6k****" # Specify multiple vSwitch IDs.
k8s.aliyun.com/eci-schedule-strategy: "VSwitchOrdered" # Configure the multi-availability zone scheduling policy.
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
Langkah selanjutnya
Jika instans Anda menggunakan NAT Gateway untuk terhubung ke internet, Anda harus memperbarui entri SNAT setelah menentukan beberapa vSwitch.
Sebagai contoh, jika entri SNAT yang ada dikonfigurasi di tingkat vSwitch, Anda harus menambahkan entri baru untuk vSwitch yang baru ditambahkan. Hal ini memastikan bahwa instans ECI yang diluncurkan di vSwitch baru dapat mengakses internet.