EKS 維運的三個隱形陷阱:工具 Pod 消失、事件蒸發、審計空白
起因:工具 Pod 人間蒸發 某天要查資料庫,照慣例執行 kubectl exec -it psql-client,結果 Pod 不見了。 這個 psql-client 是用來連 RDS PostgreSQL 的工具容器,平常拿它跑 SQL 查詢、檢查資料表大小。問題是——沒有人記得刪過它,也沒有任何記錄顯示是誰或什麼原因讓它消失。 這件事本身影響不大,重建一個就好。但它暴露了三個更深層的問題:為什麼 Pod 會無聲消失?為什麼查不到是誰刪的?為什麼整個叢集沒有留下任何操作軌跡? 陷阱一:裸 Pod 沒有人管它的死活 問題本質 當初建立 psql-client 的指令大概是這樣: kubectl run psql-client --image=postgres:15-alpine --restart=Never -- sleep infinity 這行指令建立的是一個裸 Pod(Bare Pod)——直接建立 Pod 物件,不隸屬於任何 Deployment、ReplicaSet 或 StatefulSet。 裸 Pod 和 Deployment 管理的 Pod,差別在於有沒有 Controller 在背後看著它。Deployment 的 ReplicaSet Controller 會持續監控 Pod 數量,少一個就補一個。裸 Pod 沒有 Controller,它的生死完全取決於節點的命運。 不處理會怎樣 裸 Pod 在以下情境會永久消失: 節點縮容:Auto Scaler 移除節點時,上面的裸 Pod 直接消失,不會被重新排程 節點升級:EKS 節點群組更新 AMI 時,舊節點上的裸 Pod 隨之銷毀 節點故障:底層 EC2 掛掉,裸 Pod 不會在其他節點重建 驅逐(Eviction):節點資源不足時,裸 Pod 通常最先被驅逐 關鍵在於:這些事件都不會產生告警。Pod 就是靜靜地消失了,直到你某天需要用它才發現。 ...