Skip to content

emka.web.id

Menu
  • Home
  • Indeks Artikel
  • Tutorial
  • Tentang Kami
Menu

Cara Bermigrasi Dari Dockershim Di Kubernetes v1.24 dan yang Lebih Baru

Posted on September 21, 2022 by Syauqi Wiryahasana
Kubernetes v1.24 dan yang lebih baru dirilis tanpa Dockershim setelah dihentikan pada rilis v1.20 Desember 2020. Dockershim tidak lagi tersedia sebagai runtime container bawaan. Anda perlu menggunakan runtime lain yang didukung, seperti containerd, CRI-O, atau Docker Engine dengan adaptor cri-dockerd. Dalam artikel ini, kami akan menunjukkan cara memeriksa apakah Anda terpengaruh, lalu jelaskan caranya bermigrasi ke runtime yang berbeda. Anda harus mengambil langkah-langkah ini sebelum mengupgrade ke Kubernetes v1.24 atau versi yang lebih baru sehingga beban kerja cluster Anda tidak terpengaruh.

Apa Itu Dockershim?

Dockershim dikembangkan sebagai komponen yang diperlukan agar Kubernetes dapat mendukung lebih banyak runtime container. Pada awal proyek, Kubernetes hanya bekerja dengan Docker Engine. Pembatasan ini telah dihapus dengan pengenalan standar CRI. Setiap runtime yang kompatibel dengan CRI sekarang dapat digunakan dengan Kubernetes, termasuk containerd dan CRI-O, implementasi OCI dari standar. Sementara CRI membawa fleksibilitas baru ke Kubernetes, CRI menghadirkan masalah untuk cluster yang ada. Docker tidak memiliki dukungan untuk standar CRI sehingga Dockershim dibangun untuk memungkinkan kompatibilitas lapisan tim Kubernetes di atas. Dockershim adalah integrasi langsung dengan Docker Engine yang selalu dimaksudkan sebagai tindakan sementara. Pergerakan container sekarang lebih dari sekadar Docker, seperti yang ditunjukkan oleh push Kubernetes asli ke CRI. Docker sendiri telah dipecah menjadi komponen individual dengan runtime yang diekstrak sebagai containerd, lulusan Cloud Native Computing Foundation (CNCF). containerd didukung penuh oleh Kubernetes dan lebih cocok untuk penggunaan mandiri di lingkungan cloud. Kubernetes tidak memerlukan CLI Docker dan kumpulan fiturnya untuk menjalankan Pod Anda; yang dibutuhkan hanyalah kemampuan untuk memulai dan menjalankan kontainer pada tingkat yang relatif rendah. Dockershim telah dihapus karena sulit untuk dipelihara. Penggunaannya menciptakan kode rapuh yang digabungkan erat dengan implementasi Docker Engine.

Memeriksa Apakah Anda Menggunakan Dockershim

Kluster yang baru dibuat pada platform modern sangat kecil kemungkinannya untuk menggunakan Dockershim. Ini termasuk cluster yang dikelola oleh penyedia cloud populer seperti Amazon EKS, Azure AKS, Google GKE, dan DigitalOcean DOKS. Anda kemungkinan besar perlu mengambil tindakan jika mempertahankan cluster Anda sendiri dan pertama kali menyiapkannya beberapa tahun yang lalu. Anda dapat memeriksa apakah Anda menggunakan Dockershim sebagai runtime untuk Node Anda dengan menjalankan perintah Kubectl ini: $ kubectl get nodes -o wide NAME STATUS VERSION CONTAINER-RUNTIME node-1 Ready v1.22.8 docker://19.3. 1 node-2 Ready v1.22.8 containerd://1.4.13 Dalam contoh ini, salah satu node menggunakan containerd dan dapat dibiarkan apa adanya. Node lain dikonfigurasi menggunakan Docker dan dapat dipengaruhi oleh penghapusan Dockershim. Anda dapat memeriksa dengan menjalankan perintah ini pada Node: $ tr \0 ` ` < /proc/"$(pgrep kubelet)"/cmdline | grep "--container-runtime" Node Anda menggunakan Dockershim untuk menjalankan container jika tidak ada output yang ditampilkan. Jika Anda mendapatkan beberapa keluaran, periksa nilai flag --container-runtime-endpoint yang ditampilkan untuk menentukan apakah Dockershim aktif. Titik akhir runtime dari sinyal unix:///run/containerd/containerd.sock containerd digunakan, jadi tidak diperlukan migrasi. Mengubah Runtime Node yang menggunakan Dockershim perlu diperbarui untuk menggunakan runtime yang berbeda. Pertama, keringkan beban kerja Node menggunakan Kubectl, sehingga Pod Anda akan dijadwal ulang ke Node lain di cluster Anda. Anda juga harus menutup Node untuk menghentikan Pod baru yang sedang dijadwalkan. $ kubectl cordon node-1 $ kubectl drain node-1 --ignore-daemonsets Next jalankan perintah berikut pada Node itu sendiri. Mulailah dengan menghentikan daemon Docker dan proses pekerja Kubelet Node: $ systemctl stop kubelet $ systemctl disable docker.service --now Sekarang Anda dapat menginstal runtime baru Anda. Menggunakan containerd containerd umumnya merupakan solusi pilihan untuk cluster saat ini. Anda harus dapat bermigrasi ke containerd jika Anda tidak mengandalkan fitur spesifik dari Docker Engine. Jika ya, buka bagian berikut dan instal cri-dockerd sebagai gantinya. Tambahkan repositori Docker ke sistem Anda jika daftar paket Anda belum menyertakannya. containerd didistribusikan di repositori Docker. $ sudo apt-get update $ sudo apt-get install ca-certificates curl gnupg lsb-release $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo "deb [arch=$(dpkg --print-architecture) ditandatangani-oleh=/usr/share/keyrings/docker -archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null Install containerd: $ sudo apt update $ sudo apt install containerd Sekarang perbarui file konfigurasi Kubelet Node untuk menggunakan runtime baru. Buka /var/lib/kubelet/kubeadm-flags.env. Cari atau tambahkan flag --container-runtime dan --container-runtime-endpoint dengan nilai berikut: --container-runtime=remote--container-runtime-endpoint=unix:///run/containerd/containerd .sock Selanjutnya ubah anotasi socket yang disimpan terhadap objek Node di control plane Kubernetes: $ kubectl edit node node-1 Dalam file yang terbuka, cari anotasi kubeadm.alpha.kubernetes.io/cri-socket dan ubah ke unix: ///run/containerd/containerd.sock. Simpan dan tutup file untuk memperbarui objek Node. Sekarang restart Kubelet: $ systemctl start kubelet Biarkan Node beberapa saat untuk memulai dan terhubung ke control plane Kubernetes. Anda seharusnya dapat mengulangi perintah get nodes dan melihat bahwa containerd sedang digunakan. $ kubectl get nodes -o wide NAME STATUS VERSION CONTAINER-RUNTIME node-1 Ready v1.22.8 containerd://1.4.13 node-2 Ready v1.22.8 containerd://1.4.13 Akhirnya lepaskan kabel yang Anda tempatkan di sekitar Node sehingga dapat mulai menerima Pods: $ kubectl uncordon node-1Menggunakan cri-dockerd cri-dockerd adalah runtime yang dikembangkan bersama oleh Docker dan Mirantis. Ini secara efektif merupakan versi mandiri dari Dockershim yang dikelola secara independen. Ini memungkinkan Anda untuk tetap menggunakan fungsionalitas yang sudah dikenal tanpa membebani proyek Kubernetes dengan persyaratan pemeliharaan Dockershim. Pastikan Anda sudah menginstal Docker Engine. Kemudian instal cri-dockerd dengan mengunduh biner terbaru dari rilis GitHub: $ wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.0/cri-dockerd-v0.2.0-linux-amd64 .tar.gz $ tar xvf cri-dockerd-v0.2.0-linux-amd64.tar.gz $ mv cri-dockerd /usr/local/bin/ Selanjutnya unduh, instal, dan aktifkan konfigurasi layanan systemd cri-dockerd: wget https ://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.service wget https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri -docker.socket Sudo mv cri-docker.socket cri-docker.service /etc/systemd/system/ sudo sed -i -e `s,/usr/bin/cri-dockerd,/usr/local/bin/cri- dockerd,` /etc/systemd/system/cri-docker.service sudo systemctl daemon-reload sudo systemctl enable cri-docker.service sudo systemctl enable --now cri-docker.socket Sekarang Anda dapat memodifikasi konfigurasi Kubelet Node Anda untuk menggunakan cri- buruh pelabuhan Ini mirip dengan mengkonfigurasi Node untuk menggunakan containerd. Open /var/lib/kubelet/kubeadm-flags.env. Cari atau tambahkan flag --container-runtime dan --container-runtime-endpoint dengan nilai berikut: --container-runtime=remote--container-runtime-endpoint=unix:///var/run/cri -dockerd.sock Selanjutnya ubah anotasi soket objek Node: $ kubectl edit node node-1 Dalam file yang terbuka, cari anotasi kubeadm.alpha.kubernetes.io/cri-socket dan ubah ke unix:///var/run /cri-dockerd.sock. Simpan dan tutup file untuk memperbarui objek Node. Sekarang restart Kubelet: $ systemctl start kubelet Tunggu beberapa saat lalu gunakan Kubectl untuk memeriksa Node sudah aktif. Itu masih akan menampilkan runtime Docker tetapi sekarang didasarkan pada cri-dockerd yang berdiri sendiri, bukan Dockershim yang terintegrasi dengan Kubernetes. $ kubectl get node -o wide NAME STATUS VERSION CONTAINER-RUNTIME node-1 Ready v1.22.8 docker: //19.3.1 node-2 Ready v1.22.8 containerd://1.4.13 Sekarang Anda dapat melepas tali pengaman yang Anda tempatkan di sekitar Node.js. Ini akan mulai menerima permintaan penjadwalan Pod lagi. $ kubectl uncordon node-1Conclusion Kubernetes v1.24 menghapus komponen Dockershim yang sebelumnya mengintegrasikan kompatibilitas CRI untuk Docker Engine. Meskipun cluster terbaru tidak akan terpengaruh, Anda harus memeriksa apakah Anda menggunakan Dockershim sebelum meningkatkan ke rilis baru. Waktu proses untuk beralih bergantung pada cara Anda menggunakan cluster saat ini. containerd biasanya merupakan pilihan yang baik jika Anda tidak menggunakan fitur Docker. Anda dapat menggunakan cri-dockerd untuk mengembalikan integrasi seperti Dockershim jika Anda perlu mempertahankan kompatibilitas dengan alat yang ada yang bergantung pada Docker Engine. Ini juga membantu jika Anda memasang soket daemon Docker (/var/run/docker.sock) ke dalam wadah Anda untuk memberi daya pada alur kerja Docker-in-Docker. Penghapusan Dockershim tidak memengaruhi cara Anda membuat dan menggunakan gambar wadah. Kubernetes masih dapat menjalankan image yang dibuat dengan build docker dan kompatibel dengan semua runtime yang didukung. CRI runtime berfungsi dengan gambar format OCI apa pun, sebagai keluaran oleh Docker dan pembuat gambar lainnya. Itulah berita seputar Cara Bermigrasi Dari Dockershim Di Kubernetes v1.24 dan yang Lebih Baru, semoga bermanfaat. Disadur dari HowToGeek.com.
Seedbacklink

Recent Posts

TENTANG EMKA.WEB>ID

EMKA.WEB.ID adalah blog seputar teknologi informasi, edukasi dan ke-NU-an yang hadir sejak tahun 2011. Kontak: kontak@emka.web.id.

©2024 emka.web.id Proudly powered by wpStatically