15. 什么是Pod的根容器?
答:Pod 的根容器是每個 Pod 中默認存在的一個特殊容器pause容器,有時也稱為infra容器,它是Pod 啟動時創建的第一個容器,也是整個 Pod中所有容器的 “父容器”。其核心作用是為 Pod 內的所有容器提供共享的網絡命名空間(Network Namespace)和 PID 命名空間(PID Namespace),并維持Pod的生命周期。
16. 解釋Pod的生命周期。
答:Pod的生命周期是指從 Pod 被創建到最終被刪除的完整過,起始于Pending階段,如果至少其中有一個主要容器正常啟動,則進入Running,之后取決于Pod中是否有容器以失敗狀態結束而進入succeeded或者Failed.
-Pending (掛起): Pod 已被K8s系統接受,但有個或者多個容器鏡像尚未創建。等待時間包括調度Pod的時間和通過網絡下載鏡像的時間。
-Running(運行中):該Pod 已經綁定到了一個節點上,Pod 中所有的容器都已被創建,至少有一個容器正在運行,或者正處于啟動或重啟狀態。
-Succeede(成功): Pod中的所有容器都被成功終止,并且不會再重啟。
-Failed (失敗): Pod中的所有容器都己終止了,并且至少有一個容器是因為失敗終止,即容器以非0狀態退出或者被系統終止。
-未知(Unknown):因為某些原因無法取得 Pod 的狀態,通常是因為與Pod所在主機通信失敗。
17. Init類型容器有什么特點,主要用途?
答:特點:Init容器是一種特殊容器,它在Pod內的應用容器啟動之前運行,容器會按定義的順序依次運行,如果Pod的Init容器失敗,則kubelet會不斷地重啟該Init容器直到成功為止。但如果Pod對應的restartPolicy值為“Never", 同時Pod的Init容器啟動失敗時,則Kubernetes會將整個Pod狀態設置為失敗。
用途:等待依賴服務就緒;初始化配置;預處理數據;權限與安全隔離等。如業務容器需要連接的數據庫、緩存服務等尚未啟動時,Init 容器可以循環檢測依賴服務的可用性(如通過curl或nc命令),直到依賴就緒后才退出,確保業務容器啟動時能正常連接依賴。
18. Sidecar類型容器和Init容器的區別在哪?
答:Sidecar容器(并排容器)與業務容器并行啟動,為業務容器提供 “伴隨式” 輔助功能。
Init容器僅在業務容器啟動之前運行,且嚴格按定義順序執行,一旦完成初始化任務就會終止(退出),業務容器才會啟動。
19. 什么是靜態Pod?
答:靜態 Pod(Static Pod)是一種由節點上的kubelet守護進程直接管理的特殊 Pod,靜態 Pod 嚴格綁定在某個特定節點上,無法被調度到其他節點,其生命周期與所在節點的 kubelet 進程強關聯
20. 說明K8s控制器的作用?
答:K8s控制器是集群的核心組件,用來持續監控集群的當前狀態,并不斷調整以匹配用戶定義的期望狀態。
21. 什么是ReplicaSet,說明它的主要用途。
答:ReplicationController用來確保在任何時候都有特定數量的Pod副本處于運行狀態。換句話說, ReplicationController能夠確保一個Pod或一組同類的Pod總是可用的。
ReplicaSet的目的是維護一組在任何時候都處于運行狀態的Pod副本的穩定集合。因此,它通常用來保證給定數量的、完全相同的Pod的可用性。推薦使用配置了Replica Set的Deployment來建立副本管理機制。
22. Deployment控制器是如何工作的,舉例說明其常見用途。
答:Deployment 控制通過管理ReplicaSet來間接管理 Pod,實現無狀態應用的創建、更新、擴縮容和回滾等全生命周期管理。Deployment 的核心邏輯基于 “聲明式配置” 和 “滾動更新策略。
常見用途:1)創建 Deployment 以將 ReplicaSet 上線。
2) 通過更新 Deployment 的 PodTemplateSpec,聲明 Pod 的新狀態 。
3) 回滾到較早的 Deployment 版本。
4) 擴大 Deployment 規模以承擔更多負載。
23. 解釋DaemonSet,列舉其使用場景。
答:DaemonSet 會自動在集群的所有節點上創建 Pod,且每個節點僅運行一個副本。當新節點加入集群時,DaemonSet 會自動在新節點上部署對應的 Pod;當節點從集群移除時,該節點上的 DaemonSet Pod 會被自動刪除。
使用場景:節點監控與日志收集;安全代理與審計工具;負載均衡與流量轉發等。
24. 什么是StatefulSet,其主要作用是什么?
答:StatefulSet控制器用來管理基于相同容器規約的一組Pod。但和Deployment不同的是, StatefulSet為它的每個Pod維護了一個有粘性的ID。這些Pod是基于相同的規約來創建的,但是不能相互替換:無論怎么調度,每個Pod都有一個永久不變的ID。
主要作用:保證實例標識的唯一性與穩定性;確保數據的持久化與一致性;支持有序操作,降低集群風險