任務
檢查在namespace development中執行的pod,並刪除任何非無狀態和非不可變的pod
名詞解釋:
無狀態應用:指應用本身不依賴於持久化的狀態資料,沒有儲存掛載,更強調每個請求的獨立性。
不可變應用:一旦程式部署完成,其狀態不會在執行時被直接修改,更強調pod的穩定性和不變性。
主要刪除的就是兩種pod:
- privileged: true的pod # 允許特權的pod
- readOnlyRootFileSystem: false #只讀檔案系統為false的pod
- 有pvc、hostpath掛載的
- ConfigMap、Secret、Download API、emptyDir不算。
解題
- 檢查development下所有pod
kubectl get pod -n development
- 挨個檢查,如果發現非無狀態應用和非不可變應用就刪掉。
kubectl get pod xxx -n development -oyaml |grep -E "privileged|readOnlyRootFileSystem" #檢查非不可變應用
kubectl get pod xxx -n development -oyaml|grep "persistentvolumeclaim" #檢查非無狀態應用
kubectl get pod xxx -n development -oyaml|grep "hostpath"
kubectl delete pod xxx -n development