
Kubeadm adalah alat resmi untuk menginstal dan memelihara cluster yang didasarkan pada distribusi Kubernetes default. Cluster yang dibuat tidak secara otomatis mengupgrade dirinya sendiri dan menonaktifkan update paket untuk komponen Kubernetes adalah bagian dari proses penyiapan. Ini berarti Anda harus memigrasikan cluster Anda secara manual saat rilis Kubernetes baru tiba.
Dalam artikel ini Anda akan mempelajari langkah-langkah yang terlibat dalam upgrade Kubernetes dengan berjalan melalui transisi dari v1.24 ke v1.25 di Ubuntu 22.04. Prosesnya biasanya serupa untuk semua rilis minor Kubernetes tetapi Anda harus selalu merujuk ke dokumentasi resmi sebelum memulai, jika rilis baru membawa persyaratan khusus.
Mengidentifikasi Versi Tepat untuk Diinstal
Langkah pertama adalah menentukan versi yang akan Anda tingkatkan ke. Anda tidak dapat melewati versi minor – misalnya, beralih langsung dari v1.23 ke v1.25 tidak didukung – jadi Anda harus memilih rilis patch terbaru untuk versi minor yang mengikuti rilis cluster Anda saat ini.
Anda dapat menemukan patch terbaru versi dengan perintah berikut:
$ apt-cache policy kubeadm | grep 1.25 1.25.1-00 500 1.25.-00 500
Ini menunjukkan bahwa 1.25.1-00 adalah rilis terbaru dari Kubernetes v1.25. Ganti 1,25 dalam perintah dengan versi minor yang akan Anda pindahkan.
Meningkatkan Control Plane
Lengkapi bagian ini pada mesin yang menjalankan control plane Anda. Jangan sentuh node pekerja – mereka dapat terus menggunakan rilis Kubernetes mereka saat ini sementara bidang kontrol diperbarui. Jika Anda memiliki beberapa node bidang kontrol, jalankan urutan ini pada node pertama dan ikuti prosedur node pekerja di bagian berikutnya pada node lainnya.
Perbarui Kubeadm
Pertama lepaskan penangguhan pada paket Kubeadm dan instal versi baru. Tentukan rilis persis yang diidentifikasi sebelumnya sehingga Apt tidak secara otomatis mengambil yang terbaru, yang bisa jadi versi minor yang tidak didukung bump.
$ sudo apt update $ sudo apt-mark unhold kubeadm $ sudo apt install -y kubeadm=1.25.1 -00
Sekarang ajukan kembali penangguhan agar apt upgrade tidak memberikan rilis yang tidak diinginkan di masa mendatang:
$ sudo apt-mark hold kubeadm kubeadm set on hold
Verifikasi bahwa Kubeadm sekarang adalah versi yang diharapkan:
$ kubeadm version --short kubeadm version: &version .Info{Mayor:"1", Minor:"25", GitVersion:"v1.25.1"...Buat Rencana Peningkatan
Kubeadm mengotomatiskan proses peningkatan pesawat kontrol. Pertama-tama gunakan perintah rencana pemutakhiran untuk menetapkan versi mana yang dapat Anda migrasikan. Ini memeriksa kluster Anda untuk memastikannya dapat menerima rilis baru.
$ sudo kubeadm upgrade plan
Outputnya cukup panjang tetapi perlu diperiksa dengan cermat. Bagian pertama harus melaporkan bahwa semua komponen Kubernetes akan ditingkatkan ke nomor versi yang Anda pilih sebelumnya. Versi baru juga dapat ditampilkan untuk CoreDNS dan etcd.
COMPONENT TARGET SAAT INI kube-apiserver v1.24.5 v1.25.1 kube-controller-manager v1.24.5 v1.25.1 kube-scheduler v1.24.5 v1.25.1 kube-proxy v1.24.5 v1 .25.1 CoreDNS v1.8.6 v1.9.3 etcd 3.5.3-0 3.5.4-0
Akhir dari output menyertakan tabel yang menampilkan perubahan konfigurasi yang diperlukan. Terkadang Anda mungkin perlu mengambil tindakan manual untuk menyesuaikan file konfigurasi ini dan memasoknya ke cluster. Lihat dokumentasi untuk rilis Anda jika Anda mendapatkan jawaban "ya" di kolom "Diperlukan Peningkatan Manual".
API GROUP VERSI SAAT INI VERSI PILIHAN MANUAL UPGRADE DIBUTUHKAN kubeproxy.config.k8s.io v1alpha1 v1alpha1 no kubelet.config.k8s.io v1beta1 v1beta1 no
Kluster ini sekarang siap untuk ditingkatkan. Rencana tersebut telah mengkonfirmasi bahwa Kubernetes v1.25.1 tersedia dan tidak diperlukan tindakan manual. Periksa apakah Anda telah menginstal versi Kubeadm yang benar jika tidak ada rencana yang dibuat atau kesalahan muncul. Anda mungkin mencoba berpindah di antara lebih dari satu versi minor.
Menerapkan Rencana Peningkatan
Sekarang Anda dapat menginstruksikan Kubeadm untuk melanjutkan menerapkan rencana peningkatan dengan menjalankan pemutakhiran terapkan dengan nomor versi yang benar:
$ sudo kubeadm pemutakhiran apply v1.25.1
A Prompt konfirmasi akan muncul:
[upgrade/versi] Anda telah memilih untuk mengubah versi cluster menjadi "v1.25.1" [upgrade/versi] Versi cluster: v1.24.5 [upgrade/versi] versi kubeadm: v1.25.1 [upgrade] Apakah Anda yakin ingin melanjutkan? [y/T]:
Tekan y untuk melanjutkan peningkatan. Prosesnya mungkin memakan waktu beberapa menit saat menarik gambar untuk komponen baru dan memulai ulang bidang kontrol Anda. Anda tidak akan dapat berinteraksi secara andal dengan API cluster Anda selama waktu ini, tetapi setiap Pod yang berjalan harus tetap beroperasi di Nodes Anda.Nbsp
Akhirnya Anda akan melihat pesan sukses:
[upgrade/successful] SUCCESS! Cluster Anda telah diupgrade ke "v1.25.1". Selamat menikmati!]
Pesawat kontrol sekarang telah ditingkatkan.
Meningkatkan Nodes Pekerja
Sekarang Anda dapat meningkatkan node pekerja Anda. Langkah-langkah ini juga perlu dilakukan pada node bidang kontrol Anda. Tingkatkan setiap node secara berurutan untuk meminimalkan efek kapasitas yang dihapus dari klaster Anda. Pod akan dijadwal ulang ke node lain sementara masing-masing diupgrade.
Pertama, tiriskan node dari Pod yang ada dan tempatkan barisan di sekelilingnya. Gantikan nama node sebagai ganti node-1 pada perintah berikut.
$ kubectl cordon node-1 $ kubectl drain node-1
Ini akan mengeluarkan Pod node dan mencegah Pod baru untuk dijadwalkan. Node sekarang tidak aktif di cluster Anda.
Selanjutnya lepaskan manajer paket yang menahan paket kubeadm, kubectl, dan kubelet. Instal versi baru masing-masing. Versi ketiga paket harus sama persis. Ingatlah untuk mengatur status tahan lagi setelah Anda mendapatkan rilis baru.
$ sudo apt update $ sudo apt-mark unhold kubeadm kubectl kubelet $ sudo apt install -y kubeadm=1.25.1-00 kubectl=1.25.1-00 kubelet=1.25.1-00 $ sudo apt-mark hold kubeadm kubectl kubelet
Selanjutnya gunakan perintah node upgrade Kubeadm untuk menerapkan upgrade dan memperbarui konfigurasi node Anda:
$ sudo kubeadm upgrade node
Akhirnya restart layanan Kubelet dan lepaskan node. Itu harus bergabung kembali dengan cluster dan mulai menerima Pods.
$ baru sudo systemctl daemon-reload $ sudo systemctl restart kubelet $ kubectl uncordon node-1Memeriksa Cluster Anda
Setelah Anda menyelesaikan upgrade, jalankan versi kubectl untuk memeriksa rilis aktif yang sesuai dengan harapan Anda:
$ kubectl version --short Client Version: v1.25.1 ... Server Version: v1.25.1
Selanjutnya periksa apakah semua node Anda melaporkan versi baru mereka dan telah memasuki status Ready:
$ kubectl get nodes -o wide NAME STATUS VERSI USIA PERAN ubuntu22 Control-plane 70m siap v1.25.1
Upgrade sekarang selesai.
Memulihkan dari Kegagalan Upgrade
Terkadang upgrade bisa gagal meskipun Kubeadm berhasil merencanakan jalur dan memverifikasi kesehatan cluster Anda. Masalah dapat terjadi jika pemutakhiran terganggu atau komponen Kubernetes berhenti merespons. Kubeadm akan secara otomatis melakukan rollback ke versi sebelumnya jika ini terjadi.
Perintah upgrade apply dapat diulang dengan aman untuk mencoba kembali upgrade yang gagal. Ini akan mendeteksi perbedaan cluster Anda dari versi yang diharapkan, memungkinkannya untuk mencoba pemulihan dari kegagalan total dan peningkatan sebagian.
Ketika mengulangi perintah tidak berhasil, Anda dapat mencoba memaksa peningkatan dengan menambahkan --force tandai ke perintah:
$ kubeadm upgrade apply --force
Ini akan memungkinkan peningkatan untuk melanjutkan dalam situasi di mana persyaratan hilang atau tidak dapat lagi dipenuhi.
Ketika bencana menyerang dan cluster Anda tampaknya benar-benar rusak, Anda harus dapat memulihkan menggunakan file cadangan yang Kubeadm tulis secara otomatis:
Salin konten /etc/kubernetes/tmp/kubeadm-backup-etcd-- ke direktori /var/lib/etcd Anda. Salin konten /etc/kubernetes/tmp/kubeadm -backup-manifests-- ke dalam direktori /etc/kubernetes/manifests Anda.
Cadangan ini dapat digunakan untuk mengembalikan versi Kubernetes sebelumnya secara manual ke status kerja.
Upgrade Kubernetes dengan Kubeadm seharusnya tidak terlalu merepotkan. Sebagian besar proses otomatis dengan keterlibatan Anda terbatas pada menginstal paket baru dan memeriksa rencana peningkatan.
Sebelum memutakhirkan, Anda harus selalu berkonsultasi dengan changelog Kubernetes dan dokumentasi apa pun yang diterbitkan oleh komponen yang Anda gunakan di cluster Anda. Antarmuka jaringan Pod, pengontrol Ingress, penyedia penyimpanan, dan add-on lainnya mungkin semuanya tidak kompatibel dengan rilis Kubernetes baru atau memerlukan rutin pemutakhiran mereka sendiri.
Itulah berita seputar
Cara Meng-upgrade Cluster Kubernetes yang Dibuat Dengan Kubeadm, semoga bermanfaat.
Disadur dari HowToGeek.com.