Saat memperbarui versi Kubernetes kluster Anda, pastikan untuk memperbarui kolam node selama jam non-puncak setelah memperbarui bidang kontrol. Selama pembaruan kolam node, kubelet dan runtime kontainer diperbarui. Container Service for Kubernetes (ACK) melakukan pra-pemeriksaan sebelum pembaruan untuk memberi tahu Anda tentang risiko yang mungkin terjadi, memastikan proses pembaruan berjalan lancar.
Catatan Penggunaan
Penskalaan Node
Jika penskalaan node diaktifkan untuk kluster, kluster secara otomatis memperbarui komponen cluster-autoscaler ke versi terbaru setelah kluster diperbarui. Hal ini memastikan fitur penskalaan otomatis berfungsi seperti yang diharapkan. Setelah kluster diperbarui, periksa apakah versi cluster-autoscaler telah diperbarui ke versi terbaru. Untuk informasi lebih lanjut, lihat Aktifkan penskalaan node otomatis.
Selama pembaruan kluster, node yang scaling mode-nya disetel ke swift mode mungkin gagal diperbarui karena node dimatikan. Jika node dalam swift mode gagal diperbarui setelah kluster diperbarui, kami sarankan Anda menghapus node secara manual.
Setelah memperbarui versi Kubernetes kluster ke 1.18, ACK secara otomatis mengonfigurasi pemesanan sumber daya. Jika pemesanan sumber daya tidak dikonfigurasi untuk kluster dan penggunaan sumber daya node tinggi, ACK mungkin gagal menjadwalkan pod yang dievakuasi ke node setelah kluster diperbarui. Cadangkan sumber daya yang cukup pada node. Kami sarankan agar utilisasi CPU tidak melebihi 50% dan utilisasi memori tidak melebihi 70%. Untuk informasi lebih lanjut, lihat Kebijakan pemesanan sumber daya.
Jika pod dalam kluster yang menjalankan Kubernetes 1.24 atau lebih lama hanya dikonfigurasi dengan probe startup, pod mungkin sementara tetap dalam status NotReady setelah kubelet di-restart. Kami sarankan menggunakan strategi penyebaran multi-replika untuk mendistribusikan beban kerja di beberapa node, memastikan pod tersedia selama restart node.
Jika sebuah pod mengakses pod lain pada node yang sama menggunakan alamat IP dari instance Server Load Balancer (SLB) yang diekspos oleh layanan
LoadBalancerdanexternalTrafficPolicydari layanan tersebut disetel keLocal, kedua pod mungkin tidak lagi berada pada node yang sama setelah node diperbarui. Hal ini dapat menyebabkan kegagalan jaringan.Gambar OS kustom tidak divalidasi secara ketat oleh ACK. ACK tidak menjamin keberhasilan pembaruan kluster untuk kluster yang menggunakan gambar OS kustom.
Untuk memperbarui kluster, Anda harus menggunakan Yum untuk mengunduh paket perangkat lunak yang diperlukan. Jika kluster Anda menggunakan konfigurasi jaringan kustom atau gambar OS kustom, pastikan Yum dapat berjalan seperti yang diharapkan. Anda dapat menjalankan perintah
yum makecacheuntuk memeriksa status Yum.Jika kluster Anda menggunakan konfigurasi kustom lainnya, seperti partisi swap, konfigurasi kubelet yang dimodifikasi menggunakan CLI, atau konfigurasi runtime, kluster mungkin gagal diperbarui atau konfigurasi kustom mungkin ditimpa selama pembaruan.
Saat memperbarui node dengan mengganti disk sistem, ACK menguras node dan memindahkan pod dari node ke node lain yang tersedia berdasarkan PodDisruptionBudget (PDB). Untuk memastikan ketersediaan layanan yang tinggi, kami sarankan menggunakan strategi penyebaran multi-replika untuk mendistribusikan beban kerja di beberapa node. Anda juga dapat mengonfigurasi PDB untuk layanan utama untuk mengontrol jumlah pod yang terganggu pada saat yang sama.
Batas waktu default untuk pengurasan node adalah 30 menit. Jika migrasi pod gagal diselesaikan dalam periode batas waktu, ACK menghentikan pembaruan untuk memastikan stabilitas layanan.
Jika pod pada node menggunakan volume hostPath dan volume hostPath tersebut menunjuk ke disk sistem, data dalam volume hostpath akan hilang setelah node diperbarui dengan mengganti disk sistem.
Selama pembaruan kolam node, Anda hanya dapat menambah ukuran kolam node. Penyusutan tidak diperbolehkan.
Jika node Anda adalah node gratis, yaitu node pekerja yang tidak dikelola oleh kolam node, Anda harus memigrasikan node tersebut. Untuk informasi lebih lanjut, lihat Tambahkan node gratis ke kolam node.
Deskripsi Fitur
Selama pembaruan kolam node, kubelet dan runtime kontainer diperbarui.
kubelet: Perbarui kubelet di semua node dalam kolam node ke versi yang sama dengan bidang kontrol. Pembaruan langsung dilakukan pada kolam node secara default.
Runtime Kontainer: Jika versi runtime kontainer baru tersedia, Anda dapat memperbarui runtime kontainer node dalam kolam node ke versi baru.
Jika Anda mengubah runtime kontainer dari Docker ke containerd, perubahan tersebut diterapkan dengan mengganti disk sistem node dalam kolam node. Semua data dalam disk sistem dihapus. Jika pembaruan runtime dilakukan dengan mengganti disk sistem, cadangkan data penting dalam disk sistem sebelum Anda memperbarui kolam node. Untuk informasi lebih lanjut, lihat Migrasikan runtime kontainer dari Docker ke containerd.
Jika Anda memperbarui versi containerd, pembaruan langsung dilakukan pada kolam node secara default. File
/etc/containerd/config.tomlpada setiap node diganti dengan versi baru yang disediakan oleh ACK.CatatanSelama pembaruan runtime, probe pod dan panggilan balik siklus hidup mungkin gagal berjalan dan pod mungkin melakukan restart langsung.
Prosedur
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin dikelola dan klik namanya. Di panel navigasi kiri, pilih .
Di halaman Node Pools, temukan kolam node yang ingin diperbarui dan pilih More > Kubelet Update di kolom Actions.
Lihat objek pembaruan (runtime kontainer dan kubelet), tentukan node yang ingin diperbarui (semua node atau node tertentu), pilih metode pembaruan, dan konfigurasikan kebijakan pembaruan batch.
Update Method
Upgrade Node Pool by Replacing System Disk: Saat sistem mengganti disk sistem node dalam kolam node, sistem menggunakan konfigurasi kolam node untuk merender parameter komponen node. Ini memastikan bahwa konfigurasi komponen node dan kolam node sama.
Jika Anda memilih metode pembaruan ini, cadangkan data sebelum Anda memperbarui kolam node atau jangan menyimpan data penting di disk sistem. Disk data tidak terpengaruh oleh pembaruan.
Create Snapshot before Update: Jika node Anda memiliki data penting di disk sistem, Anda dapat memilih Buat Snapshot Sebelum Pembaruan untuk mencadangkan dan memulihkan data node. Anda akan dikenakan biaya untuk menggunakan snapshot. Untuk informasi lebih lanjut, lihat Snapshot. Kemajuan pembuatan snapshot berubah secara dinamis. Jika Anda tidak lagi membutuhkan snapshot setelah pembaruan, hapus snapshot sesegera mungkin.
Batch Update Policy
Maximum Number of Nodes per Batch: Anda dapat menentukan jumlah maksimum node yang dapat diperbarui secara bersamaan dalam satu batch. Anda dapat menentukan hingga 10 node. Untuk informasi lebih lanjut tentang proses pembaruan, lihat Referensi: Pembaruan langsung dan pembaruan dengan mengganti disk sistem.
Automatic Pause Policy: Kebijakan penangguhan untuk node selama pembaruan.
Interval Between Batches: Jika Anda tidak mengonfigurasi Kebijakan Jeda Otomatis, Anda dapat menentukan apakah akan menetapkan interval antara batch pembaruan. Interval antara batch dapat diatur menjadi 5 hingga 120 menit.
Klik Precheck. Setelah pra-pemeriksaan selesai, ikuti petunjuk di halaman untuk memulai pembaruan.
CatatanJika kluster gagal pra-pemeriksaan atau hasil pra-pemeriksaan berisi peringatan, lihat Item pemeriksaan kluster dan saran tentang cara memperbaiki masalah kluster atau periksa bagian Pre-check Details berdasarkan instruksi di halaman untuk menyelesaikan masalah.
Selama pembaruan, Anda dapat melakukan operasi berikut di bagian Event Rotation:
Pause: Tidak ada operasi yang dilakukan setelah Anda menjeda pembaruan kluster. Selain itu, kami sarankan Anda melanjutkan dan menyelesaikan pembaruan sesegera mungkin. Jika pembaruan dijeda lebih dari 7 hari, sistem secara otomatis menghentikan proses pembaruan. Peristiwa dan data log yang dihasilkan selama proses pembaruan juga dihapus.
Setelah Anda mengklik Jeda, Anda tidak dapat mengembalikan kubelet dan runtime kontainer setelah Anda memperbaruinya.
Cancel: Membatalkan pembaruan. Setelah Anda mengklik Cancel, pembaruan dibatalkan. Setelah Anda melakukan operasi ini, Anda tidak dapat mengembalikan kubelet dan runtime kontainer setelah Anda memperbaruinya.
Setelah pembaruan, klik nama node di halaman Nodes. Di tab Overview, periksa apakah versi kubelet dan versi runtime kontainer node telah diperbarui ke versi yang diinginkan.
Referensi: Pembaruan langsung dan pembaruan dengan mengganti disk sistem
Pembaruan langsung dan pembaruan dengan mengganti disk sistem
Berikut ini menjelaskan prosedur untuk pembaruan langsung dan pembaruan dengan mengganti disk sistem. Anda dapat menentukan jumlah maksimum node yang dapat diperbarui secara bersamaan dalam satu batch. Anda dapat menentukan hingga 10 node. Jumlah node yang diperbarui per batch meningkat secara bertahap dalam urutan berikut: 1, 2, 4, 8... Setelah konkurensi maksimum tercapai, jumlah node yang diperbarui dalam setiap batch sama dengan konkurensi maksimum. Misalnya, jika Anda menetapkan konkurensi maksimum menjadi 4, satu node diperbarui dalam batch pertama, dua node diperbarui secara bersamaan dalam batch kedua, dan empat node diperbarui secara bersamaan dalam batch ketiga dan batch berikutnya.
Gambar berikut menunjukkan proses pembaruan batch saat konkurensi maksimum adalah N. Jumlah node yang diperbarui per batch meningkat secara bertahap dalam urutan berikut: 1, 2, 4, 8, ..., N
Bagaimana pembaruan langsung dilakukan pada node
Lakukan pra-pemeriksaan sebelum pembaruan. Jika kontainer memiliki masalah kritis, seperti kegagalan pemrosesan permintaan ttrpc atau proses kontainer tidak merespons sinyal, pembaruan ditangguhkan.
Simpan status kontainer dan pod saat ini ke direktori tmp sementara.
Perbarui containerd, crictl, dan file konfigurasi terkait ke versi terbaru yang disediakan oleh ACK. Restart tidak memengaruhi kontainer yang sedang berjalan. Jika Anda memodifikasi file
/etc/containerd/config.tomlpada node, pembaruan akan menimpa perubahan Anda.Pastikan kubelet berjalan seperti yang diharapkan dan node siap.
Bagaimana node diperbarui dengan mengganti disk sistem
Node dikuras. Saat node dikuras, node disetel menjadi tidak dapat dijadwalkan.
Instance Elastic Compute Service (ECS) dihentikan.
Disk sistem diganti dan ID disk diubah. Kategori disk sistem, alamat IP instance ECS, dan alamat MAC dari elastic network interfaces (ENIs) yang terikat ke instance ECS tetap tidak berubah.
Node diinisialisasi ulang.
Node di-restart dan siap. Saat node siap, node disetel menjadi dapat dijadwalkan.
Jika node disetel menjadi tidak dapat dijadwalkan sebelum node dikuras, node tidak secara otomatis kembali menjadi dapat dijadwalkan setelah node diperbarui dengan mengganti disk sistem.
FAQ
Apakah saya dapat mengembalikan kolam node setelah saya memperbarui kolam node?
Anda tidak dapat mengembalikan kubelet dan runtime kontainer setelah Anda memperbaruinya. Anda hanya dapat mengembalikan gambar OS setelah Anda memperbaruinya. Gambar OS asli yang ingin Anda gunakan harus didukung oleh kolam node.
Apakah aplikasi terpengaruh selama pembaruan?
Pembaruan langsung: Pod tidak di-restart dan aplikasi tidak terpengaruh.
Pembaruan dengan mengganti disk sistem: Node dikuras selama pembaruan. Jika aplikasi berjalan di beberapa pod yang tersebar di beberapa node dan shutdown yang mulus diaktifkan untuk pod, aplikasi tidak terpengaruh. Untuk informasi lebih lanjut tentang shutdown yang mulus, lihat Graceful shutdown and zero downtime deployments in Kubernetes. Untuk mencegah beberapa replika dari aplikasi yang sama diperbarui dalam batch yang sama, kami sarankan Anda menetapkan konkurensi maksimum menjadi nilai kurang dari jumlah pod tempat aplikasi berjalan.
Berapa lama waktu yang diperlukan untuk memperbarui node dalam batch?
Pembaruan langsung: dalam 5 menit.
Pembaruan dengan mengganti disk sistem memakan waktu sekitar 8 menit jika tidak ada snapshot yang dibuat. Jika Anda memilih opsi "Buat Snapshot Sebelum Pembaruan", ACK akan mulai memperbarui node setelah snapshot selesai dibuat. Proses pembuatan snapshot memiliki batas waktu selama 40 menit. Jika proses tersebut melebihi batas waktu, pembaruan node akan gagal dimulai. Apabila tidak ada data bisnis yang tersimpan di disk sistem, kami menyarankan untuk menghapus opsi "Buat Snapshot Sebelum Pembaruan".
Apakah kehilangan data terjadi saat node diperbarui?
Jika pembaruan runtime dilakukan dengan mengganti disk sistem, cadangkan data sebelum Anda memperbarui kolam node atau jangan menyimpan data penting di disk sistem. Disk data tidak terpengaruh oleh pembaruan.
Apakah alamat IP node berubah setelah disk sistem node diganti?
Setelah disk sistem diganti, ID disk berubah tetapi kategori disk sistem, alamat IP instance Elastic Compute Service (ECS), dan alamat MAC dari elastic network interfaces (ENIs) yang terikat ke instance ECS tetap tidak berubah. Untuk informasi lebih lanjut, lihat Ganti disk sistem (sistem operasi) dari instance.
Bagaimana cara memperbarui node gratis?
Node yang tidak ditambahkan ke kolam node disebut node gratis. Node gratis ada di kluster yang dibuat sebelum fitur kolam node dirilis. Untuk memperbarui node gratis, tambahkan node ke kolam node dan perbarui kolam node. Untuk informasi lebih lanjut tentang cara menambahkan node gratis ke kolam node, lihat Tambahkan node gratis ke kolam node.
Apa yang harus saya lakukan jika direktori Docker masih ada dan memakan ruang disk setelah saya mengubah runtime kontainer node dari Docker ke containerd?
Selain kontainer, gambar, dan log terkait kluster, jalur file yang Anda buat termasuk dalam direktori Docker. Jika Anda tidak lagi memerlukan data dalam direktori Docker, Anda dapat menghapus direktori tersebut secara manual.
Bagaimana cara memulihkan data dari snapshot?
Anda dapat membuat snapshot untuk node dalam kolam node saat Anda memperbarui kolam node. Secara default, snapshot disimpan selama 30 hari. Anda dapat menghapus snapshot secara manual sebelum periode penyimpanan berakhir. Jika data Anda hilang setelah Anda memperbarui kolam node, Anda dapat menggunakan metode berikut untuk memulihkan data:
Jika pembaruan langsung dilakukan untuk hanya memperbarui kubelet, Anda dapat menggunakan snapshot untuk mengembalikan disk. Untuk informasi lebih lanjut, lihat Kembalikan disk menggunakan snapshot.
Jika sistem operasi atau runtime kontainer diperbarui dengan mengganti disk sistem node dalam kolam node, Anda dapat membuat disk dari snapshot. Untuk informasi lebih lanjut, lihat Buat disk data dari snapshot.
Referensi
Anda dapat mengaktifkan pembaruan otomatis untuk kluster untuk mengurangi tekanan O&M. Untuk informasi lebih lanjut, lihat Perbarui kluster secara otomatis.
Untuk informasi lebih lanjut tentang catatan rilis untuk containerd, lihat Catatan rilis untuk containerd.
Anda dapat membuat kolam node yang dikelola dan mengaktifkan fitur pembaruan otomatis Common Vulnerabilities and Exposures (CVE) untuk kolam node. Untuk informasi lebih lanjut, lihat Pembaruan CVE otomatis (disarankan).
Kubernetes 1.24 berencana untuk menghentikan dukungan Docker sebagai runtime kontainer bawaan. Untuk informasi lebih lanjut tentang cara memigrasikan runtime kontainer node dari Docker ke containerd, lihat Migrasikan runtime kontainer dari Docker ke containerd.
Docker dan containerd memiliki alat baris perintah yang berbeda. Untuk informasi lebih lanjut, lihat Perbandingan perintah umum yang disediakan oleh Docker Engine dan containerd.
Kami sarankan Anda memperbarui versi gambar OS sesegera mungkin. Untuk informasi lebih lanjut, lihat Ubah sistem operasi.