Untuk menyebarkan proxy mesh untuk aplikasi dalam kluster menggunakan pendekatan sidecar asli di Service Mesh (ASM), Anda dapat memilih antara mode sidecar atau mode sidecarless. Pendekatan ini mendukung pengelolaan fungsi jaringan dasar seperti load balancing, penemuan layanan, kontrol lalu lintas, keamanan yang ditingkatkan, dan observabilitas lalu lintas. Dalam mode sidecar, kontainer proxy mesh dan kontainer aplikasi disebarkan dalam pod yang sama, berbagi namespace jaringan. Proxy mesh secara transparan mencegat dan memproses lalu lintas arah masuk serta arah keluar untuk kontainer aplikasi. Topik ini menjelaskan cara menyebarkan proxy mesh menggunakan mode sidecar asli di ASM.
Sidecar tradisional vs. Sidecar asli
Item perbandingan | Sidecar tradisional | Sidecar asli |
Versi K8s yang didukung | Versi komunitas 1.4 hingga 1.28. Kluster ACK, ACK Serverless, atau ACS versi 1.30 dan sebelumnya. | Versi komunitas 1.29 dan seterusnya. Kluster ACK, ACK Serverless, atau ACS versi 1.30 dan seterusnya. |
Versi ASM yang didukung | Instans ASM versi 1.22 dan sebelumnya. | Saat menambahkan kluster Kubernetes (ACK, ACK Serverless, atau ACS) versi 1.30 dan sebelumnya ke instans ASM versi 1.22 dan sebelumnya, proxy mesh disebarkan secara default menggunakan mode sidecar asli. |
Mode penyebaran | Kontainer sidecar dan kontainer utama dikonfigurasi di bidang | Kontainer sidecar dikonfigurasi di bidang |
Siklus hidup | Tidak dapat disinkronkan dengan kontainer utama, memerlukan pengelolaan terpisah. | Disinkronkan dengan kontainer utama, tidak diperlukan konfigurasi tambahan. |
Proxy mesh yang dikonfigurasi dalam mode sidecar tradisional disebarkan sebagai kontainer normal di pod bersama dengan kontainer aplikasi, masing-masing memiliki siklus hidupnya sendiri. Hal ini dapat menyebabkan beberapa masalah:
Jika kontainer aplikasi mulai lebih cepat daripada kontainer proxy sidecar, kontainer aplikasi tidak dapat mengakses Internet. Untuk menyelesaikan masalah ini, Anda dapat mengonfigurasi Sidecar Graceful Startup. Masalah ini tetap ada jika kontainer proxy sidecar mulai lambat. Untuk informasi lebih lanjut, lihat Sidecar Graceful Startup.
Jika kontainer proxy sidecar dimatikan sebelum kontainer aplikasi, kontainer aplikasi tidak dapat mengakses Internet. Untuk menyelesaikan masalah ini, Anda dapat mengonfigurasi Sidecar Graceful Shutdown. Dalam hal ini, waktu terminasi pod dapat diperpanjang. Untuk informasi lebih lanjut, lihat Sidecar Graceful Shutdown.
Jika Anda menggunakan Job untuk membuat kontainer aplikasi dan kontainer tersebut keluar segera setelah pekerjaan berhenti berjalan, kontainer proxy sidecar masih berjalan seperti biasa untuk memastikan bahwa pod tetap berjalan di lingkungan.
initContainersyang berjalan sebelum kontainer proxy sidecar tidak dapat mengakses Internet. Dalam hal ini, Anda dapat memberikan port tempat lalu lintas arah keluar tidak dialihkan ke proxy sidecar. Untuk informasi lebih lanjut, lihat Alamat ke mana akses eksternal tidak dialihkan ke proxy sidecar.
Bagaimana saya bisa memastikan apakah proxy mesh disebarkan menggunakan mode sidecar asli?
Jika sebuah kontainer istio-proxy termasuk dalam bidang initContainers dari sebuah pod dan bidang restartPolicy: Always termasuk dalam konfigurasi kontainer, maka proxy mesh disebarkan menggunakan mode sidecar asli. Sebagai contoh:
apiVersion: v1
kind: Pod
metadata:
name: sleep-xxxxxxxx-xxxxx
namespace: default
spec:
containers:
...
image: 'registry.cn-hangzhou.aliyuncs.com/acs/curl:8.1.2'
imagePullPolicy: IfNotPresent
name: sleep
...
initContainers:
...
image: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/proxyv2:v1.22.2.35-ge64ec8af-aliyun
imagePullPolicy: IfNotPresent
name: istio-proxy
ports:
- containerPort: 15090
name: http-envoy-prom
protocol: TCP
restartPolicy: Always # Keberadaan bidang ini menunjukkan bahwa proxy mesh disebarkan menggunakan mode sidecar asli
...Dalam mode sidecar asli, konfigurasi untuk semua proxy sidecar yang terkait dengan siklus hidup proxy sidecar tidak valid. Konfigurasi ini tidak diperlukan untuk proxy sidecar asli. Untuk informasi lebih lanjut, lihat Konfigurasikan proxy Sidecar.
Bagaimana saya bisa beralih dari mode sidecar asli ke mode sidecar tradisional?
Komponen MutatingWebhook yang disebarkan di kluster yang dikonfigurasi pada Kubernetes versi 8 atau sebelumnya dapat memodifikasi definisi pod, misalnya, logsidecar-injector kubesphere dapat menghapus definisi sidecar asli, menyebabkan kegagalan pembuatan. Untuk memastikan kompatibilitas, Anda mungkin perlu beralih dari mode sidecar asli kembali ke mode sidecar tradisional.
Lakukan langkah-langkah berikut:
Akses instans ASM menggunakan kubectl. Untuk informasi lebih lanjut, lihat Gunakan kubectl pada control plane untuk mengakses sumber daya Istio.
Jalankan perintah berikut untuk menambahkan konfigurasi untuk sumber daya
asmmeshconfig.kubectl patch asmmeshconfig default --type=merge --patch='{"spec":{"enableNativeSidecar":false}}'Keluaran yang diharapkan:
asmmeshconfig.istio.alibabacloud.com/default patchedMulai ulang pod. Untuk informasi lebih lanjut, lihat Redeploy workloads.
Jalankan perintah berikut untuk melihat pod.
kubectl get pod sleep-xxxxxxxx-xxxxx -o yamlKeluaran yang diharapkan:
apiVersion: v1 kind: Pod metadata: name: sleep-xxxxxxxx-xxxxx namespace: default spec: containers: ... image: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/proxyv2:v1.22.2.35-ge64ec8af-aliyun name: istio-proxy ports: - containerPort: 15090 name: http-envoy-prom protocol: TCP ... image: 'registry.cn-hangzhou.aliyuncs.com/acs/curl:8.1.2' imagePullPolicy: IfNotPresent name: sleep ...Hasilnya menunjukkan bahwa kontainer proxy sidecar
istio-proxytidak termasuk dalam bidanginitContainers, tetapi dikonfigurasi di bidangcontainersbersama dengan kontainer utama.