全部产品
Search
文档中心

:Deploy a high-reliability NGINX Ingress controller

更新时间:Jun 26, 2025

Saat menggunakan NGINX Ingress Controller, pod tempat controller berjalan bertindak sebagai titik masuk dan pengarah lalu lintas utama. Keandalan mereka menentukan keandalan keseluruhan controller tersebut. Secara default, NGINX Ingress Controller menggunakan dua pod setelah instalasi, yang cukup untuk sebagian besar skenario. Anda dapat meningkatkan keandalan dengan mengontrol jumlah pod dan metode penjadwalan.

Prasyarat

Lihat pod default yang diterapkan untuk NGINX Ingress Controller

Setelah NGINX Ingress Controller diinstal, aplikasi yang menyediakan dua pod diterapkan di dalam klaster.

Jalankan perintah berikut untuk melihat pod tempat NGINX Ingress Controller diterapkan:

kubectl -n kube-system get pod | grep nginx-ingress-controller

Output yang Diharapkan:

nginx-ingress-controller-*****nxs                    1/1     Running   0          3h
nginx-ingress-controller-*****9pm                    1/1     Running   0          3h

Cara memastikan keandalan tinggi untuk NGINX Ingress Controller

Penting

NGINX Ingress Controller secara default menggunakan konfigurasi afinitas, memastikan bahwa hanya satu pod milik controller yang diterapkan per node. Pastikan jumlah pod tidak melebihi jumlah node di dalam klaster.

Tingkatkan jumlah pod tempat controller berjalan

Menambah jumlah pod tempat controller berjalan dapat mencegah situasi di mana satu pod gagal.

  1. Jalankan perintah kubectl scale untuk melakukan penskalaan pada deployment NGINX Ingress Controller. Perintah berikut meningkatkan jumlah pod menjadi tiga.

    kubectl -n kube-system scale --replicas=3 deployment/nginx-ingress-controller

    Output yang Diharapkan:

    deployment.extensions/nginx-ingress-controller scaled
  2. Jalankan perintah berikut untuk melihat pod tempat NGINX Ingress Controller berjalan:

    kubectl -n kube-system get pod | grep nginx-ingress-controller

    Output yang Diharapkan:

    nginx-ingress-controller-********                    1/1     Running   0          3h
    nginx-ingress-controller-********                    1/1     Running   0          3h
    nginx-ingress-controller-********                    1/1     Running   0          33s

Jadwalkan pod ke node spesifikasi tinggi

Menjadwalkan pod ke node spesifikasi tinggi dapat mencegah degradasi performa atau eviksi pod karena sumber daya node yang tidak mencukupi.

  1. Jalankan perintah berikut untuk melihat penggunaan sumber daya saat ini dari klaster:

    kubectl top nodes

    Output yang Diharapkan:

    NAME                       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
    cn-shanghai.********.230   71m          1%     1712Mi          31%       
    cn-shanghai.********.226   63m          1%     1669Mi          30%       
    cn-shanghai.********.229   125m         3%     2545Mi          46%       
    cn-shanghai.********.253   152m         3%     3804Mi          69%  

    Output menunjukkan sumber daya CPU dan memori yang sudah digunakan oleh setiap node. Pilih node dengan sumber daya surplus lebih banyak untuk penjadwalan.

  2. Jalankan perintah berikut untuk menambah label node-role.kubernetes.io/ingress="true" ke node. Dalam contoh berikut, label ditambahkan ke node cn-shanghai.********.226 dan cn-shanghai.********.230 dengan sumber daya CPU surplus lebih banyak.

    Penting
    • Jumlah node yang diberi label harus lebih besar dari atau sama dengan jumlah pod. Jika jumlah node yang diberi label kurang dari jumlah pod yang dimiliki oleh controller, beberapa pod mungkin gagal diterapkan.

    • Jika Anda menggunakan ACK dedicated cluster, jangan tambahkan label ke node Master.

    kubectl label nodes cn-shanghai.********.226 cn-shanghai.********.230 node-role.kubernetes.io/ingress="true"

    Output yang Diharapkan:

    node/cn-shanghai.********.226 labeled
    node/cn-shanghai.********.230 labeled
  3. Jalankan perintah berikut untuk memperbarui deployment yang digunakan oleh Nginx Ingress Controller, menambahkan konfigurasi nodeSelector untuk memastikan bahwa pod yang dimiliki oleh controller hanya dapat diterapkan pada node dengan label node-role.kubernetes.io/ingress="true".

    kubectl -n kube-system patch deployment nginx-ingress-controller -p '{"spec": {"template": {"spec": {"nodeSelector": {"node-role.kubernetes.io/ingress": "true"}}}}}'

    Output yang Diharapkan:

    deployment.extensions/nginx-ingress-controller patched
  4. Jalankan perintah berikut untuk melihat pod Ingress yang diterapkan pada node klaster dengan label node-role.kubernetes.io/ingress="true".

    kubectl -n kube-system get pod -o wide | grep nginx-ingress-controller

    Output yang Diharapkan:

    nginx-ingress-controller-*****nxs     1/1     Running     0      74m     10.1.117.186   cn-shanghai.********.230
    nginx-ingress-controller-*****9pm     1/1     Running     0      74m     10.1.117.172   cn-shanghai.********.226