Kubelet 使用的本機檔案與路徑
kubelet 主要是在 Kubernetes 節點 上執行的無狀態程序。本文件概述 kubelet 讀取和寫入的檔案。
注意
本文件僅供參考,並未描述任何保證的行為或 API。它列出 kubelet 使用的資源,這是實作細節,並且在任何版本發行時都可能變更。kubelet 通常使用控制平面 作為節點上需要執行的內容的真實來源,並使用 容器執行期 來檢索容器的目前狀態。只要您為 kubelet 提供 *kubeconfig*(API 用戶端組態),kubelet 就會連線到您的控制平面;否則節點將以 *獨立模式* 運作。
在 Linux 節點上,kubelet 也依賴讀取 cgroup 和各種系統檔案來收集指標。
在 Windows 節點上,kubelet 透過不同的機制收集指標,該機制不依賴路徑。
kubelet 也使用一些其他檔案,並且 kubelet 使用本機 Unix 網域 socket 進行通訊。有些是 kubelet 監聽的 socket,而對於其他 socket,kubelet 會發現它們,然後以用戶端身分連線。
注意
本頁將路徑列為 Linux 路徑,這些路徑透過將根磁碟C:\
取代 /
來對應至 Windows 路徑(除非另有指定)。例如,/var/lib/kubelet/device-plugins
對應至 C:\var\lib\kubelet\device-plugins
。組態
Kubelet 組態檔
可以使用命令列引數 --config
設定 kubelet 組態檔的路徑。kubelet 也支援 嵌入式組態檔 以增強組態。
憑證
憑證和私密金鑰通常位於 /var/lib/kubelet/pki
,但可以使用 --cert-dir
kubelet 命令列引數進行設定。憑證檔案的名稱也是可設定的。
Manifests
靜態 Pod 的 Manifests 通常位於 /etc/kubernetes/manifests
中。位置可以使用 staticPodPath
kubelet 組態選項進行設定。
Systemd 單元設定
當 kubelet 作為 systemd 單元執行時,某些 kubelet 組態可能會在 systemd 單元設定檔中宣告。通常包括
- 執行 kubelet 的命令列引數
- 環境變數,由 kubelet 或 設定 golang 執行期 使用
狀態
資源管理器的檢查點檔案
所有資源管理器都會將 Pod 對應到狀態檔案中已配置的資源。狀態檔案位於 kubelet 的基本目錄中,也稱為根目錄(但與 /
(節點根目錄)不同)。您可以使用 kubelet 命令列引數 --root-dir
設定 kubelet 的基本目錄。
檔案名稱
裝置管理器的檢查點檔案
裝置管理器在與 socket 檔案相同的目錄中建立檢查點:/var/lib/kubelet/device-plugins/
。檢查點檔案的名稱是 裝置管理器 的 kubelet_internal_checkpoint
Pod 狀態檢查點儲存
Kubernetes v1.27 [alpha]
(預設為停用:false)如果您的叢集已
啟用 Pod 原地垂直擴展
(功能閘道
名稱為 InPlacePodVerticalScaling
),則 kubelet 會儲存已配置 Pod 資源的本機紀錄。
檔案名稱為 pod_status_manager_state
,位於 kubelet 基礎目錄(Linux 上預設為 /var/lib/kubelet
;可使用 --root-dir
參數設定)中。
容器執行期
Kubelet 使用透過組態參數設定的 Socket 與容器執行期溝通
containerRuntimeEndpoint
用於執行期操作imageServiceEndpoint
用於映像檔管理操作
這些端點的實際值取決於使用的容器執行期。
裝置外掛程式
kubelet 在路徑 /var/lib/kubelet/device-plugins/kubelet.sock
公開一個 Socket,供各種裝置外掛程式註冊使用。
當裝置外掛程式註冊自身時,它會提供其 Socket 路徑,供 kubelet 連線。
裝置外掛程式的 Socket 應該位於 kubelet 基礎目錄中的 device-plugins
目錄中。在典型的 Linux 節點上,這表示 /var/lib/kubelet/device-plugins
。
Pod 資源 API
Pod 資源 API 將在路徑 /var/lib/kubelet/pod-resources
公開。
DRA、CSI 和裝置外掛程式
kubelet 會尋找由透過 DRA、裝置管理器或儲存外掛程式管理的裝置外掛程式所建立的 Socket 檔案,然後嘗試連線到這些 Socket。kubelet 尋找的目錄是 kubelet 基礎目錄中的 plugins_registry
,因此在典型的 Linux 節點上,這表示 /var/lib/kubelet/plugins_registry
。
請注意,裝置外掛程式有兩種替代的註冊機制。每個外掛程式只能使用其中一種。
可以將 Socket 檔案放入該目錄的外掛程式類型包括:
- CSI 外掛程式
- DRA 外掛程式
- 裝置管理器外掛程式
(通常為 /var/lib/kubelet/plugins_registry
)。
安全設定檔 & 組態
Seccomp
從 Pod 參照的 Seccomp 設定檔應放置在 /var/lib/kubelet/seccomp
中。請參閱 Seccomp 參考文件 以取得詳細資訊。
AppArmor
kubelet 不會透過 Kubernetes 特定的路徑載入或參照 AppArmor 設定檔。AppArmor 設定檔是透過節點作業系統載入,而不是透過路徑參照。
鎖定
Kubernetes v1.2 [alpha]
kubelet 的鎖定檔;通常為 /var/run/kubelet.lock
。kubelet 使用此機制確保兩個不同的 kubelet 不會嘗試互相衝突地執行。您可以使用 --lock-file
kubelet 命令列引數設定鎖定檔的路徑。
如果同一節點上的兩個 kubelet 使用不同的鎖定檔路徑值,當兩者都在執行時,它們將無法偵測到衝突。
接下來
- 瞭解 kubelet 命令列引數。
- 檢閱 Kubelet 組態 (v1beta1) 參考文件