Saya mencoba untuk menghapus ReplicationController
dengan 12 pod dan saya dapat melihat bahwa beberapa pod terjebak dalam Terminating
status.
Cluster Kubernetes saya terdiri dari satu node bidang kontrol dan tiga node pekerja yang diinstal pada mesin virtual Ubuntu.
Apa yang bisa menjadi alasan untuk masalah ini?
NAME READY STATUS RESTARTS AGE
pod-186o2 1/1 Terminating 0 2h
pod-4b6qc 1/1 Terminating 0 2h
pod-8xl86 1/1 Terminating 0 1h
pod-d6htc 1/1 Terminating 0 1h
pod-vlzov 1/1 Terminating 0 1h
kubernetes
Dimuthu
sumber
sumber
Jawaban:
Anda dapat menggunakan perintah berikut untuk menghapus POD dengan paksa.
sumber
--force
untuk mendapatkan pods teminated.Hapus paksa pod:
The
--force
bendera adalah wajib.sumber
kube-system
namespace.ktl get pods -o custom-columns=:metadata.name | xargs kubectl delete pod --force --grace-period=0
Hapus blok finalizers dari resource (pod, deployment, ds dll ...) yaml:
sumber
delete -grace-period=0 --force
tidak. Saya juga menghargai beberapa perincian tentang apa tepatnya yang dilakukannya.Jawaban praktis - Anda selalu dapat menghapus pod pemberhentian dengan menjalankan:
Jawaban historis - Ada masalah dalam versi 1.1 di mana kadang-kadang polong terdampar di negara Pengakhiran jika node mereka dihapus dari cluster.
sumber
kubectl delete pod NAME --grace-period=0
kubectl delete ...
suatuSIG_TERM
permintaan akan dikirim ke wadah. Tetapi bagaimana jika setelah masa tenggang, wadah masih berjalan? Saya memiliki banyak pod yang macetTerminating
, beberapa ditulis dalam perjalanan, beberapa di nodejs. The replicationController telah dihapus, dan wadah masih berjalankubectl delete pod PODNAME --grace-period=0
bekerja untuk saya seperti yang disarankan oleh Clayton.Saya menemukan perintah ini lebih mudah:
Ini akan menghapus semua pod di Terminating status di namespace default.
sumber
kube-system
gunakan:for p in $(kubectl get pods -n kube-system| grep Terminating | awk '{print $1}'); do kubectl delete pod $p --grace-period=0 --force -n kube-system;done
Dalam kasus saya
--force
opsi tidak bekerja. Saya masih bisa melihat podnya! Itu macet dalam mode Terminating / Unknown. Jadi setelah berlariSaya berlari
sumber
Jika
--grace-period=0
tidak berfungsi maka Anda dapat melakukan:sumber
Saya menemukan ini baru-baru ini ketika menghapus namespace rook ceph - macet dalam keadaan Pengakhiran.
Satu-satunya hal yang membantu adalah menghapus kubernetes finalizer dengan langsung memanggil api k8s dengan curl seperti yang disarankan di sini .
kubectl get namespace rook-ceph -o json > tmp.json
tmp.json
(biarkan array kosong"finalizers": []
)kubectl proxy
di terminal lain untuk tujuan auth dan jalankan mengikuti permintaan curl ke port kembalicurl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json 127.0.0.1:8001/k8s/clusters/c-mzplp/api/v1/namespaces/rook-ceph/finalize
Detail rook ceph teardown di sini .
sumber
Pertanyaan aslinya adalah " Apa yang bisa menjadi alasan untuk masalah ini? " Dan jawabannya dibahas di https://github.com/kubernetes/kubernetes/issues/51835 & https://github.com/kubernetes/kubernetes/issues / 65569 & lihat https://www.bountysource.com/issues/33241128-unable-to-remove-a-stopped-container-device-or-resource-busy
Ini disebabkan oleh docker mount bocor ke beberapa namespace lainnya.
Anda dapat masuk ke host pod untuk menyelidiki.
sumber
Saya menemukan ini baru-baru ini untuk membebaskan sumber daya di kluster saya. di sini adalah perintah untuk menghapus semuanya.
semoga ini membantu seseorang yang membaca ini
sumber