Kamu sedang menampilkan dokumentasi untuk Kubernetes versi: v1.19
Kubernetes v1.19 dokumentasi sudah tidak dirawat lagi. Versi yang kamu lihat ini hanyalah snapshot statis. Untuk dokumentasi terkini, lihat versi terbaru.
Manajemen Klaster
Dokumen ini menjelaskan beberapa topik yang terkait dengan siklus hidup sebuah klaster: membuat klaster baru, memperbarui Node control plane dan Node pekerja dari klaster kamu, melakukan pemeliharaan Node (misalnya pembaruan kernel), dan meningkatkan versi API Kubernetes dari klaster yang berjalan.
Membuat dan mengonfigurasi klaster
Untuk menginstal Kubernetes dalam sekumpulan mesin, konsultasikan dengan salah satu Panduan Memulai tergantung dengan lingkungan kamu.
Memperbarui klaster
Status saat ini pembaruan klaster bergantung pada penyedia, dan beberapa rilis yang mungkin memerlukan perhatian khusus saat memperbaruinya. Direkomendasikan agar admin membaca Catatan Rilis, serta catatan khusus pembaruan versi sebelum memperbarui klaster mereka.
Memperbarui klaster Azure Kubernetes Service (AKS)
Azure Kubernetes Service memungkinkan pembaruan layanan mandiri yang mudah dari control plane dan Node pada klaster kamu. Prosesnya adalah saat ini dimulai oleh pengguna dan dijelaskan dalam Azure AKS documentation.
Memperbarui klaster Google Compute Engine
Google Compute Engine Open Source (GCE-OSS) mendukung pembaruan control plane dengan menghapus dan membuat ulang control plane, sambil mempertahankan Persistent Disk (PD) yang sama untuk memastikan bahwa data disimpan pada berkas untuk setiap kali pembaruan.
Pembaruan Node untuk GCE menggunakan grup instance yang di-manage, dimana setiap Node dihancurkan secara berurutan dan kemudian dibuat ulang dengan perangkat lunak baru. Semua Pod yang berjalan di Node tersebut harus dikontrol oleh pengontrol replikasi (Replication Controller), atau dibuat ulang secara manual setelah peluncuran.
Pembaruan versi pada klaster open source Google Compute Engine (GCE) yang dikontrol oleh skrip cluster/gce/upgrade.sh
.
Dapatkan penggunaan dengan menjalankan cluster/gce/upgrade.sh -h
.
Misalnya, untuk meningkatkan hanya control plane kamu ke versi tertentu (v1.0.2):
cluster/gce/upgrade.sh -M v1.0.2
Sebagai alternatif, untuk meningkatkan seluruh klaster kamu ke rilis yang stabil terbaru gunakan:
cluster/gce/upgrade.sh release/stable
Memperbarui klaster Google Kubernetes Engine
Google Kubernetes Engine secara otomatis memperbarui komponen control plane (misalnya, kube-apiserver
, kube-scheduler
) ke versi yang terbaru. Ini juga menangani pembaruan sistem operasi dan komponen lain yang dijalankan oleh control plane.
Proses pembaruan Node dimulai oleh pengguna dan dijelaskan dalam Dokumentasi Google Kubernetes Engine.
Memperbarui klaster Amazon EKS
Komponen control plane klaster pada Amazon EKS dapat diperbarui dengan menggunakan eksctl, AWS Management Console, atau AWS CLI. Prosesnya dimulai oleh pengguna dan dijelaskan di Dokumentasi Amazon EKS.
Memperbarui klaster Oracle Cloud Infrastructure Container Engine untuk Kubernetes (OKE)
Oracle membuat dan mengelola sekumpulan Node control plane pada control plane Oracle atas nama kamu (dan infrastruktur Kubernetes terkait seperti Node etcd) untuk memastikan kamu memiliki Kubernetes control plane yang terkelola dengan ketersedian tinggi. Kamu juga dapat memperbarui Node control plane ini dengan mulus ke versi Kubernetes baru tanpa berhenti. Tindakan ini dijelaskan dalam Dokumentasi OKE.
Memperbarui klaster pada platform yang lain
Penyedia dan alat yang berbeda akan mengelola pembaruan secara berbeda. Kamu disarankan untuk membaca dokumentasi utama mereka terkait pembaruan.
Untuk memperbarukan sebuah klaster pada platform yang tidak disebutkan dalam daftar di atas, periksa urutan pembaruan komponen pada halaman Versi Skewed.
Merubah ukuran klaster
Jika klaster kamu kekurangan sumber daya, kamu dapat dengan mudah menambahkan lebih banyak mesin ke klaster tersebut jika klaster kamu
menjalankan Mode Node Registrasi Sendiri.
Jika kamu menggunakan GCE atau Google Kubernetes Engine, itu dilakukan dengan mengubah ukuran grup instance yang mengelola Node kamu.
Ini dapat dilakukan dengan mengubah jumlah instance pada
Compute > Compute Engine > Instance groups > your group > Edit group
Laman Google Cloud Console atau dengan baris perintah gcloud:
gcloud compute instance-groups managed resize kubernetes-node-pool --size=42 --zone=$ZONE
Grup instance akan menangani penempatan image yang sesuai pada mesin baru dan memulainya, sedangkan Kubelet akan mendaftarkan Node-nya ke server API agar tersedia untuk penjadwalan. Jika kamu menurunkan skala grup instance, sistem akan secara acak memilih Node untuk dimatikan.
Di lingkungan lain kamu mungkin perlu mengonfigurasi mesin sendiri dan memberi tahu Kubelet di mana server API mesin itu berjalan.
Merubah ukuran klaster Azure Kubernetes Service (AKS)
Azure Kubernetes Service memungkinkan perubahan ukuran klaster yang dimulai oleh pengguna dari CLI atau portal Azure dan dijelaskan dalam Dokumentasi Azure AKS.
Penyekalaan otomatis klaster
Jika kamu menggunakan GCE atau Google Kubernetes Engine, kamu dapat mengonfigurasi klaster kamu sehingga secara otomatis diskalakan berdasarkan kebutuhan Pod.
Seperti yang dideskripsikan dalam Sumber daya komputasi, pengguna dapat memesan berapa banyak CPU dan memori yang dialokasikan ke Pod. Informasi ini digunakan oleh penjadwal Kubernetes untuk menemukan tempat menjalankan Pod. Jika tidak ada Node yang memiliki kapasitas kosong yang cukup (atau tidak sesuai dengan persyaratan Pod yang lainnya) maka Pod menunggu sampai beberapa Pod dihentikan atau Node baru ditambahkan.
Penyekala otomatis klaster mencari Pod yang tidak dapat dijadwalkan dan memeriksa apakah perlu menambahkan Node baru, yang serupa dengan Node yang lain dalam klaster untuk membantu. Jika ya, maka itu mengubah ukuran klaster agar dapat mengakomodasi Pod yang menunggu.
Penyekala otomatis klaster juga menurunkan skala klaster jika mengetahui bahwa satu atau beberapa Node tidak diperlukan lagi untuk periode waktu tambahan (selama 10 menit tetapi dapat berubah di masa mendatang).
Penyekala otomatis klaster dikonfigurasikan untuk per grup instance (GCE) atau kumpulan Node (Google Kubernetes Engine).
Jika kamu menggunakan GCE, kamu dapat mengaktifkannya sambil membuat klaster dengan skrip kube-up.sh. Untuk mengonfigurasi penyekala otomatis klaster, kamu harus menyetel tiga variabel lingkungan:
KUBE_ENABLE_CLUSTER_AUTOSCALER
- mengaktifkan penyekala otomatis klaster kalau di setel menjadi true.KUBE_AUTOSCALER_MIN_NODES
- minimal jumlah Node dalam klaster.KUBE_AUTOSCALER_MAX_NODES
- maksimal jumlah Node dalam klaster.
Contoh:
KUBE_ENABLE_CLUSTER_AUTOSCALER=true KUBE_AUTOSCALER_MIN_NODES=3 KUBE_AUTOSCALER_MAX_NODES=10 NUM_NODES=5 ./cluster/kube-up.sh
Pada Google Kubernetes Engine, kamu mengonfigurasi penyekala otomatis klaster baik saat pembuatan atau pembaruan klaster atau saat membuat kumpulan Node tertentu
(yang ingin kamu skalakan secara otomatis) dengan meneruskan flag --enable-autoscaling
, --min-nodes
dan --max-nodes
yang sesuai dengan perintah gcloud
.
Contoh:
gcloud container clusters create mytestcluster --zone=us-central1-b --enable-autoscaling --min-nodes=3 --max-nodes=10 --num-nodes=5
gcloud container clusters update mytestcluster --enable-autoscaling --min-nodes=1 --max-nodes=15
Penyekala otomatis klaster mengharapkan bahwa Node belum dimodifikasi secara manual (misalnya dengan menambahkan label melalui kubectl) karena properti tersebut tidak akan disebarkan ke Node baru dalam grup instance yang sama.
Untuk detail selengkapnya tentang cara penyekala otomatis klaster memutuskan apakah, kapan dan bagaimana melakukan penyekalaan sebuah klaster, silahkan lihat dokumentasi FAQ dari proyek penyekala otomatis klaster.
Memelihara dalam Node
Jika kamu perlu memulai ulang Node (seperti untuk pembaruan kernel, pembaruan libc, pembaruan perangkat keras, dll.) dan waktu kegagalan (downtime) yang
singkat, lalu ketika Kubelet memulai ulang, maka ia akan mencoba untuk memulai ulang Pod yang dijadwalkan. Jika mulai ulang membutuhkan waktu yang lebih lama
(waktu bawaan adalah 5 menit, yang dikontrol oleh --pod-eviction-timeout
pada controller-manager),
maka pengontrol Node akan menghentikan Pod yang terikat ke Node yang tidak tersedia. Jika ada yang sesuai dengan
kumpulan replika (atau pengontrol replikasi), maka salinan baru dari Pod akan dimulai pada Node yang berbeda. Jadi, dalam kasus di mana semua
Pod direplikasi, pembaruan dapat dilakukan tanpa koordinasi khusus, dengan asumsi bahwa tidak semua Node akan mati pada saat yang bersamaan.
Jika kamu ingin lebih mengontrol proses pembaruan, kamu dapat menggunakan alur kerja berikut ini:
Gunakan kubectl drain
untuk meghentikan perlahan-lahan semua Pod dalam Node ketika menandai Node sebagai unschedulable:
kubectl drain $NODENAME
Ini mencegah Pod baru mendarat pada Node saat kamu mencoba melepaskannya.
Untuk Pod dengan sebuah kumpulan replika, Pod tersebut akan diganti dengan Pod baru yang akan dijadwalkan ke Node baru. Selain itu, jika Pod adalah bagian dari layanan, maka klien akan secara otomatis dialihkan ke Pod baru.
Untuk Pod yang tidak memiliki replika, kamu perlu memunculkan salinan baru dari Pod tersebut, dan menganggapnya bukan bagian dari layanan, alihkan klien ke Pod tersebut.
Lakukan pekerjaan pemeliharaan pada Node.
Buat Node dapat dijadwal lagi:
kubectl uncordon $NODENAME
Jika kamu menghapus Node dari instance VM dan membuat yang baru, maka sumber daya Node baru yang dapat dijadwalkan akan dibuat secara otomatis (jika kamu menggunakan penyedia cloud yang mendukung pencarian Node; saat ini hanya Google Compute Engine, tidak termasuk CoreOS di Google Compute Engine menggunakan kube-register). Lihatlah Node untuk lebih detail.
Topik lebih lanjut
Mengaktifkan atau menonaktifkan versi API untuk klaster kamu
Versi API spesifik dapat dinyalakan dan dimatikan dengan meneruskan flag --runtime-config=api/<version>
ketika menjalankan server API. Sebagai contoh: untuk menyalakan APIv1, teruskan --runtime-config=api/v1=false
.
runtime-config juga mendukung 2 kunci khusus: api/all dan api/legacy yang masing-masing untuk mengontrol semua dan API lama.
Sebagai contoh, untuk mematikan versi API semua kecuali v1, teruskan --runtime-config=api/all=false,api/v1=true
.
Untuk tujuan flag ini, API lama adalah API yang sudah tidak digunakan lagi secara eksplisit (misalnya, v1beta3
).
Mengalihkan versi API penyimpanan dari klaster kamu
Objek yang disimpan ke diska untuk representasi internal klaster dari sumber daya Kubernetes yang aktif dalam klaster ditulis menggunakan versi API tertentu. Saat API yang didukung berubah, objek ini mungkin perlu ditulis ulang dalam API yang lebih baru. Kegagalan melakukan ini pada akhirnya akan menghasilkan sumber daya yang tidak lagi dapat didekodekan atau digunakan oleh server API Kubernetes.
Mengalihkan berkas konfigurasi kamu ke versi API baru
Kamu dapat menggunakan perintah kubectl convert
untuk mengubah berkas konfigurasi di antara versi API berbeda.
kubectl convert -f pod.yaml --output-version v1
Untuk opsi yang lainnya, silakan merujuk pada penggunaan dari perintah kubectl convert.