Pod Stuck in Terminating State
Kubernetes uzerinde ozellikle statefulset pod lari silindiginde terminating state de kaldigi gorulmektedir. Bunun sebebi podlarin bagli bulundugu deployment veya statefulsetin bu podlari graceful olarak kapatmak istemesi ve var olan db clusterin bozulmasinin onune gecmek istemesinden kaynaklanmaktadir. Ancak bazen adminler tarafindan bunun onemsenmedigi durumda force delete yapilmak istenmektedir. Asagidaki gibi bu podlari silebiliriz.
kubectl delete pods <pod> --grace-period=0 --force
Ancak bu komut da ise yaramayabilir. Yaramadigi durumda asagidaki gibi pod metadatalarini patch leyerek bu podlari clusterdan silebiliriz.
kubectl -n namespace patch pod pod-0 -p '{"metadata":{"finalizers":null}}'
kubectl -n namespace patch pod pod-1 -p '{"metadata":{"finalizers":null}}'
kubectl -n namespace patch pod pod-2 -p '{"metadata":{"finalizers":null}}'
Bu cozum ile containerlar arka planda calismaya devam edebilse de kubernetes cluster i uzerinden silinmektedir. Aslinda bu problem cogunlukle container lar stop oldugu icin yasandigindan genellikle arka planda calismazlar ancak eger container lar hala calisiyor ise ilgili container runtime komutlari kullanilarak containerlar kill edilebilir. (Worker node lara girilerek crictl ps veya docker ps komutlariyla ilgili containerlar goruntulenebilir. )