All Products
Search
Document Center

Alibaba Cloud Service Mesh:Menyebarkan proxy mesh menggunakan mode sidecar asli

Last Updated:Jul 02, 2025

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 containers.

Kontainer sidecar dikonfigurasi di bidang initContainers dan mencakup bidang restartPolicy: Always.

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.

  • initContainers yang 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:

  1. Akses instans ASM menggunakan kubectl. Untuk informasi lebih lanjut, lihat Gunakan kubectl pada control plane untuk mengakses sumber daya Istio.

  2. 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 patched
  3. Mulai ulang pod. Untuk informasi lebih lanjut, lihat Redeploy workloads.

  4. Jalankan perintah berikut untuk melihat pod.

    kubectl get pod sleep-xxxxxxxx-xxxxx -o yaml

    Keluaran 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-proxy tidak termasuk dalam bidang initContainers, tetapi dikonfigurasi di bidang containers bersama dengan kontainer utama.