All Products
Search
Document Center

Alibaba Cloud Service Mesh:Deploy ASM gateway pods ke node khusus

Last Updated:Mar 11, 2026

Menetapkan node khusus untuk Pod gateway ASM mengisolasi lalu lintas gateway dari beban kerja aplikasi dan meningkatkan ketersediaan gateway. Anda memberi label pada node, menerapkan taint agar menolak Pod lain, lalu mengonfigurasi gateway ASM dengan node affinity dan tolerations sehingga Pod-nya hanya dijadwalkan ke node tersebut.

Cara kerja

Tiga mekanisme penjadwalan Kubernetes bekerja bersama untuk mematok Pod gateway ke node khusus:

MekanismePeran
Label NodeMengidentifikasi node mana yang ditetapkan untuk gateway
TaintsMenolak semua pod yang tidak memiliki toleration yang sesuai, sehingga beban kerja non-gateway tidak masuk ke node khusus
Afinitas nodeMenarik pod gateway ke node dengan label tertentu
TolerationsMemungkinkan pod gateway dijadwalkan ke node yang memiliki taint

Taint dan toleransi bekerja bersama untuk mencegah sistem menjadwalkan Pod ke node yang tidak sesuai. Satu atau beberapa taint dapat diterapkan pada sebuah node.

  • Jika sebuah Pod tidak mentolerir taint tertentu, node dengan taint yang sesuai tidak akan menerima Pod tersebut.

  • Jika sebuah Pod mentolerir taint tertentu, Pod tersebut dapat—namun tidak wajib—dijadwalkan ke node dengan taint yang sesuai.

Dengan konfigurasi ini, Pod non-gateway tidak masuk ke node khusus (dipaksakan oleh taint), sedangkan Pod gateway hanya dijalankan di node tersebut (dipaksakan oleh afinitas node).

Prasyarat

Langkah 1: Beri label pada node target

Label mengidentifikasi node mana yang dicadangkan untuk Pod gateway.

  1. Daftar semua node dalam kluster:

       kubectl get nodes

    Output-nya mirip seperti berikut:

       NAME    STATUS   ROLES    AGE   VERSION
       node1   Ready    <none>   30d   v1.24.6
       node2   Ready    <none>   30d   v1.24.6
       node3   Ready    <none>   30d   v1.24.6
  2. Tambahkan label ke node yang akan menjalankan Pod gateway:

       # Sintaks
       kubectl label nodes <node-name> <label-key>=<label-value>
    
       # Contoh
       kubectl label nodes node1 mykey4pod=asmgateway

    Output-nya mirip seperti berikut:

       node/node1 labeled

Langkah 2: Beri taint pada node

Taint mencegah Pod tanpa toleration yang sesuai dijadwalkan ke node tersebut. Hal ini menjaga beban kerja aplikasi agar tidak masuk ke node gateway khusus.

Jalankan perintah berikut untuk memberi taint pada node:

kubectl taint nodes node1 mykey=myvalue:NoSchedule

Output-nya mirip seperti berikut:

node/node1 tainted

Efek NoSchedule berarti hanya Pod dengan toleration yang sesuai dengan kunci mykey, nilai myvalue, dan efek NoSchedule yang dapat dijadwalkan ke node1.

Langkah 3: Konfigurasikan afinitas node dan toleransi pada gateway ASM

  1. Login ke Konsol ASM.

  2. Pada panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  3. Pada halaman Mesh Management, klik nama instans ASM.

  4. Pada panel navigasi sebelah kiri, pilih ASM Gateways > Ingress Gateway.

  5. Pada halaman Ingress Gateway, temukan gateway target lalu klik YAML.

  6. Pada kotak dialog Edit, tambahkan konfigurasi berikut ke bidang spec, lalu klik OK.

    Catatan

    Tip: Untuk mencocokkan taint tanpa memperhatikan nilainya, gunakan operator: "Exists" alih-alih operator: "Equal" dan hilangkan bidang value.

    BidangNilaiDeskripsi
    nodeAffinityrequiredDuringSchedulingIgnoredDuringExecutionPenjadwal harus menempatkan pod gateway pada node yang diberi label mykey4pod=asmgateway. Jika tidak ada node yang sesuai, pod tidak akan dijadwalkan.
    tolerations.operatorEqualMencocokkan taint dari Langkah 2, memungkinkan pod gateway dijadwalkan ke node yang memiliki taint.
       affinity:
         nodeAffinity:
           requiredDuringSchedulingIgnoredDuringExecution:
             nodeSelectorTerms:
             - matchExpressions:
               - key: mykey4pod
                 operator: In
                 values:
                 - asmgateway
       tolerations:
       - key: "mykey"
         operator: "Equal"
         value: "myvalue"
         effect: "NoSchedule"

Verifikasi hasil

Setelah Pod gateway restart, pastikan Pod tersebut berjalan di node yang diharapkan.

Opsi 1: Konsol ACK

  1. Login ke Konsol ACK.

  2. Pada panel navigasi sebelah kiri, klik Clusters.

  3. Pada halaman Clusters, klik nama kluster.

  4. Pada panel navigasi sebelah kiri, pilih Workloads > Pods.

  5. Pada halaman Pods, pilih istio-system dari daftar drop-down Namespace.

  6. Temukan Pod gateway dan verifikasi bahwa kolom Node menampilkan node yang diharapkan (misalnya, node1).

Opsi 2: kubectl

Jalankan perintah berikut:

kubectl get pods -n istio-system -o wide | grep <gateway-name>

Output-nya mirip seperti berikut:

ingressgateway-xxxx-yyyy   1/1   Running   0   5m   10.0.1.12   node1   <none>   <none>

Jika kolom Node menampilkan node1, berarti Pod gateway telah dijadwalkan ke node khusus.

Langkah selanjutnya

  • Untuk menjadwalkan Pod gateway ke beberapa node khusus demi ketersediaan yang lebih tinggi, beri label dan taint pada node tambahan, lalu tambahkan label tersebut ke daftar nilai matchExpressions.

  • Untuk informasi lebih lanjut tentang penjadwalan Kubernetes, lihat Taints and Tolerations dan Assigning Pods to Nodes dalam dokumentasi Kubernetes.