← 返回上一頁
Kubernetes

Kubernetes 十大核心概念自我檢測:你真的搞懂 K8s 了嗎?

本頁目錄

前言

Kubernetes 看似入門容易,但許多關鍵細節往往在面試或生產事故時才會暴露出來。本文整理了十個經典的 Kubernetes 核心問題與深入解答,幫助你檢視自己對 K8s 的理解是否足夠扎實。

問題 1:兩個節點,一個有 Pod 一個沒有,新 Pod 調度到哪?

答案取決於調度策略。預設使用 NodeResourcesFitLeastAllocated 策略(優先選擇資源使用率最低的節點),因此新 Pod 會調度到沒有 Pod 的節點。但如果使用 MostAllocated 策略,則會調度到已有 Pod 的節點。此外,強制調度、親和性、污點容忍等配置都會影響最終結果。

問題 2:容器 OOM 後,是容器重啟還是 Pod 重建?

一般情況下,根據 Pod 的 RestartPolicy(預設 Always),容器會被重啟而 Pod 不會重建。但在特殊情況下,如節點記憶體壓力過大,可能觸發 Pod 驅逐導致重建。

問題 3:ConfigMap 能不重建 Pod 就動態更新嗎?

  • 環境變數:無法動態更新
  • 掛載方式的 ConfigMap:可以動態更新,但不能使用 subPath,同步延遲受 kubelet 的 syncFrequency(預設 1 分鐘)影響

問題 4:Pod 不操作就穩定嗎?

不一定。即使不操作,也可能發生節點資源不足或網路異常導致 Pod 被驅逐。

問題 5:ClusterIP Service 能保證 TCP 負載平衡嗎?

不完全能。無論使用 iptables 或 ipvs,核心的 Netfilter connection tracking 機制會追蹤 TCP 連線狀態,已建立的長連接會持續使用同一條連線,因此長連接場景可能出現負載不平衡。

問題 6:應用日誌怎麼採集?會遺失嗎?

stdout/stderr 日誌可透過 DaemonSet 部署日誌代理(Fluentd、Filebeat)採集,但 Pod 刪除後容器日誌也會被刪除,存在遺失風險。透過掛載持久化儲存寫入日誌檔案則可避免遺失。

問題 7:livenessProbe 正常就一定沒問題嗎?

不一定:

  • livenessProbe 只檢查應用是否存活,無法驗證功能是否正常
  • httpGet 方式的探測由本機 kubelet 發起,無法保證跨節點網路正常

問題 8:如何應對流量波動?

Kubernetes 提供 HPA(水平擴展)和 VPA(垂直擴展)。VPA 會刪除 Pod 再創建,使用場景受限;HPA 更常用,可根據 CPU、請求速率或自訂指標動態調整 Pod 數量。

問題 9:kubectl exec 是「登入」Pod 嗎?

不準確。Pod 是一組 Linux namespace,容器是進程。kubectl exec -it <pod> -- bash 實際上是在目標容器的隔離環境中創建了一個新的 bash 進程,既不是進入 Pod 也不是進入容器。

問題 10:容器反覆退出重啟怎麼排查?

此時無法使用 kubectl exec。除了檢查節點/容器狀態和日誌外,可以使用 kubectl debug 在 Pod 上啟動臨時容器來檢查環境和依賴。

總結

這十個問題涵蓋了調度策略、OOM 處理、配置更新、服務負載平衡、日誌採集、健康檢查、自動擴縮和除錯等核心知識點。如果你能全部正確回答並注意到關鍵細節,代表你對 Kubernetes 的理解已經相當深入。

分享這篇
X LinkedIn Facebook Hacker News Reddit

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料