Information in this document may be out of date
This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Considerations for large clusters
Klaster adalah kumpulan (node) berupa mesin fisik ataupun virtual yang menjalankan agen Kubernetes, dan dikelola oleh bidang kontrol. Kubernetes v1.35 mendukung klaster hingga 5000 node. Lebih tepatnya, Kubernetes didesain untuk mengakomodasi konfigurasi yang mendukung kriteria dibawah ini:
Kamu dapat mengubah ukuran klaster dengan menambah atau menghapus node. Cara yang digunakan untuk pengubahan ukuran ini tergantung dari bagaimana kamu membangun klaster.
Untuk menghindari masalah kuota penyedia cloud, ketika membuat klaster dengan banyak node, pertimbangkanlah hal berikut ini:
Untuk klaster besar, kamu membutuhkan bidang kontrol dengan komputasi yang cukup dan sumber daya lainnya.
Biasanya, kamu akan menjalankan satu atau dua bidang kontrol untuk tiap zona kegagalan (failure zone), mengubah ukuran bidang kontrol secara vertikal terlebih dahulu dan kemudian mengubah ukurannya secara horizontal setelah mencapai batas dari mengubah ukuran secara vertikal.
Kamu harus menjalankan paling tidak satu bidang kontrol per zona kegagalan untuk memberikan toleransi kegagalan (fault-tolerance). node Kubernetes tidak secara otomatis mengendalikan arus ke bidang kontrol yang berada di zona kegagalan yang sama; bagaimanapun, penyedia cloud kamu mungkin memiliki mekanisme toleransi kegagalan mereka sendiri untuk menangani hal tersebut.
Sebagai contoh, dengan menggunakan penyeimbang beban bawaan (managed load balancer), kamu dapat mengonfigurasi penyeimbang beban untuk mengirim arus yang berasal dari kubelet dan pods di zona A, kemudian hanya mengarahkan arus tersebut ke bidang kontrol yang hanya ada di zona A. Jika salah satu bidang kontrol atau zona kegagalan A mati, artinya semua arus bidang kontrol untuk node di zona A akan dikirim ke zona lain. Menjalankan banyak bidang kontrol di setiap zona dapat mencegah masalah tersebut.
Untuk meningkatkan performa klaster besar, kamu dapat menyimpan objek Event di instance etcd terpisah.
Ketika membangun sebuah klaster, kamu dapat (menggunakan alat khusus):
Lihat juga Mengoperasikan klaster etcd untuk Kubernetes dan Membangun klaster etcd dengan ketersediaan tinggi (high-availability) menggunakan kubeadm untuk detail tentang konfigurasi dan mengelola etcd untuk klaster besar.
Batas sumber daya Kubernetes membantu untuk meminimalisasi dampak dari kebocoran memori dan hal lainnya yang dapat membuat pods dan kontainer memberikan dampak terhadap komponen lainnya. Batasan sumber daya ini berlaku untuk sumber daya addon layaknya berlaku untuk workload aplikasi.
Sebagai contoh, kamu dapat mengatur batas CPU dan memori untuk komponen logging berikut ini:
...
containers:
- name: fluentd-cloud-logging
image: fluent/fluentd-kubernetes-daemonset:v1
resources:
limits:
cpu: 100m
memory: 200Mi
Batas bawaan addon biasanya diatur berdasarkan data yang dikumpulkan dari pengalaman menjalankan addon pada klaster Kubernetes kecil atau menengah. Ketika menjalankan klaster besar, addon biasanya menggunakan lebih banyak sumber daya dibanding batasnya. Jika klaster besar dijalankan tanpa mengubah nilai batasan, addon dapat terhenti terus menerus karena mencapai batas memori. Selain itu, addon dapat berjalan dengan performa buruk karena pembatasan potongan waktu (time slice) CPU.
Untuk mencegah masalah sumber daya addon di Kubernetes, saat membangun klaster dengan node yang banyak, pertimbangkanlah beberapa hal berikut ini:
VerticalPodAutoscaler adalah custom resource yang dapat dijalankan di klaster untuk membantu kamu mengelola permintaan sumber daya dan batasan untuk pods. Pelajari lebih lanjut tentang Vertical Pod Autoscaler dan bagaimana kamu dapat menggunakannya untuk mengubah ukuran klaster.
Baca juga tentang Node autoscaling.
addon resizer membantu kamu mengubah ukuran addon secara otomatis ketika ukuran klaster kamu berubah.