Saat bekerja di lingkungan cluster Kubernetes, akan ada saat-saat ketika Anda mengalami situasi di mana Anda perlu menghapus pod dari salah satu node pekerja Anda.
Anda mungkin perlu men-debug masalah dengan node itu sendiri, mengupgrade node, atau hanya mengurangi skala cluster Anda.
Tindakan menghapus pod Kubernetes sangat sederhana dengan kubectl delete pod
perintah:
kubectl delete pod pod-name
Namun, ada langkah-langkah khusus yang harus Anda ambil untuk meminimalkan gangguan pada aplikasi Anda. Saya akan menjelaskannya secara detail di artikel ini.
Hapus pod Kubernetes dengan baik
Pertama, buat daftar semua pod:
example@unixlinux.online:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
pod-delete-demo 1/1 Running 0 4s 172.16.213.196 kworker-rj2 <none> <none>
Sekarang misalkan Anda ingin menghapus Pod bernama "pod-delete-demo", jalankan perintah berikut:
example@unixlinux.online:~# kubectl delete pod pod-delete-demo
pod "pod-delete-demo" deleted
Konfirmasikan bahwa Pod yang dimaksud telah dihapus dengan mencantumkan semua Pod:
example@unixlinux.online:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
Anda dapat melihat tidak ada pod-delete-demo pod yang sedang berjalan.
Hapus paksa pod Kubernetes
Mengapa Anda perlu menghapus paksa pod??
Terkadang Pod macet di berhenti/tidak diketahui menyatakan pada Node yang tidak dapat dijangkau setelah batas waktu.
Pod juga dapat memasuki status ini ketika pengguna mencoba menghapus sebuah Pod dengan baik pada Node yang tidak dapat dijangkau.
Dalam skenario tersebut, Anda dapat menghapus Pod secara paksa.
Jika kamu ingin menghapus sebuah Pod secara paksa menggunakan kubectl versi>=1.5, lakukan hal berikut:
kubectl delete pods pod_name --grace-period=0 --force
Jika Anda menggunakan versi kubectl <=1.4, Anda harus menghilangkan --force
pilihan dan gunakan:
kubectl delete pods pod_name --grace-period=0
Sekarang mari kita hapus pod "pod-delete-demo" menggunakan metode di atas:
example@unixlinux.online:~# kubectl delete pod pod-delete-demo --force --grace-period=0 --namespace=default
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "pod-delete-demo" force delete
CATATAN: Penghapusan paksa pod jangan tunggu konfirmasi dari kubelet bahwa Pod telah dihentikan.
Jika bahkan setelah perintah ini pod macet di Unknown
state, gunakan perintah berikut untuk menghapus pod dari cluster:
kubectl patch pod pod-delete-demo -p '{"metadata":{"finalizers":null}}'
Konfirmasikan bahwa pod telah dihapus:
example@unixlinux.online:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
Semoga tip Kubernetes ini bermanfaat bagi Anda. Tetap berlangganan untuk mendapatkan tips dan tutorial DevOps lainnya .
Rakesh Jain
DevOps Profesional | RHCA | Jenkins | Git | buruh pelabuhan | Kubernet | Mungkin | Prometheus | Grafana | AWS Cloud