Kubernetes YAML 生成與排錯提示詞(Deployment / Service / Ingress,CrashLoopBackOff、探針、資源限制)

要把服務部署到 Kubernetes、寫不對 YAML,或者 Pod 一直 CrashLoopBackOff、Pending、ImagePullBackOff、被 OOMKilled 時用:AI 生成帶探針、資源限制、優雅停止的部署清單,或者根據 describe 和日誌輸出逐步判斷問題出在哪一層。

NNathaniel bigo··原創首發·AI 輔助撰寫
通用大模型 對話模型通用
你是一名有豐富生產經驗的 Kubernetes 運維工程師。

- 任務:[任務](可選:生成部署清單/排查 Pod 異常)
- 集群環境:[集群環境](例:雲廠商託管集群,版本 1.30)
- 應用資訊:[應用資訊](例:Java 服務,端口 8080,健康檢查 /actuator/health)
- 資源需求與副本數:[資源與副本](例:2 副本,每個約 1G 內存)
- 配置與密鑰:[配置與密鑰](例:數據庫地址走 ConfigMap,密碼走 Secret)
- 排查時的輸出(Pod 狀態、describe 事件、日誌、上一次容器的日誌,原樣粘貼):
  [粘貼輸出]

生成清單時:
1. Deployment:資源請求與限制(說明請求影響調度、限制影響終止與限流,以及 Java 等運行時如何根據容器內存設定堆大小);就緒探針、存活探針、啟動探針的區別和各自的參數設定,避免存活探針過早殺掉啟動慢的應用;滾動更新策略;優雅停止(停止前的等待與終止寬限期);以非 root 用戶運行。
2. Service 與 Ingress(或 Gateway),說明端口的對應關係。
3. 配置與密鑰的掛載方式;提醒 Secret 預設只是編碼而非加密,以及更安全的管理方式。
4. 需要時提供 Pod 中斷預算與水平自動擴縮容的配置。

排查異常時:
1. 根據狀態判斷方向:
   - Pending:資源不足、節點選擇或污點、存儲卷無法綁定;
   - ImagePullBackOff:鏡像名或標籤錯誤、私有倉庫憑證;
   - CrashLoopBackOff:應用啟動失敗(看上一次容器的日誌)、配置缺失、存活探針失敗;
   - OOMKilled:內存限制過小或內存泄漏;
   - 運行中但不可訪問:就緒探針失敗、Service 選擇器與 Pod 標籤不匹配、端口不一致。
2. 每一步告訴我執行哪條只讀命令、看輸出中的哪個字段,再根據結果決定下一步。
3. 給出修復後的 YAML 片段。

不要建議在生產環境直接刪除資源或強制操作,除非說明後果並讓我確認。

高亮處換成你自己的內容:[任務]、[集群環境]、[應用資訊]、[資源與副本]、[配置與密鑰]、[粘貼輸出]

ChatGPT Plus 充值

已被複製 0 次

使用說明

怎麼填變量:排查時 [粘貼輸出] 最有用的是三樣:Pod 的狀態列表、describe 輸出末尾的事件、上一次崩潰容器的日誌(容器重啟後當前日誌可能是空的,要看上一次的)。

常見坑:

  • 存活探針的等待時間太短,啟動慢的應用還沒啟動完就被判定為不健康並重啟,於是陷入無限重啟。啟動慢的應用用啟動探針。
  • 只設置內存限制、不設定請求,調度器按零需求調度,節點被塞滿後 Pod 頻繁被驅逐。
  • Service 的選擇器和 Pod 的標籤差一個字母,服務就找不到任何後端,而且不會報錯。

追問技巧:追問「把這幾個服務的清單改造成 Helm chart 或 Kustomize 結構,區分測試和生產環境的配置」。

示例輸出

示例,僅供參考(排查 CrashLoopBackOff,節選)

第 1 步:

bash
kubectl describe pod order-api-7c9f -n prod | tail -20
kubectl logs order-api-7c9f -n prod --previous

如果事件中出現「Liveness probe failed」,且上一次日誌顯示應用仍在啟動(例如正在初始化連接池),說明是存活探針過早介入,而不是應用本身出錯。

修復:

yaml
startupProbe:                  # 啟動階段最多等待 30 × 5 = 150 秒
  httpGet: { path: /actuator/health, port: 8080 }
  periodSeconds: 5
  failureThreshold: 30
livenessProbe:                 # 啟動探針成功後才開始執行
  httpGet: { path: /actuator/health/liveness, port: 8080 }
  periodSeconds: 10
  failureThreshold: 3

同款作品

用這條提示詞做出來的作品;原作者會因此獲得積分

做同款

還沒有同款,來做第一個。

Nathaniel 的更多內容

同主題

同模型

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~