Kubelet 使用的本機檔案與路徑

kubelet 主要是在 Kubernetes 節點 上執行的無狀態程序。本文件概述 kubelet 讀取和寫入的檔案。

kubelet 通常使用控制平面 作為節點上需要執行的內容的真實來源,並使用 容器執行期 來檢索容器的目前狀態。只要您為 kubelet 提供 *kubeconfig*(API 用戶端組態),kubelet 就會連線到您的控制平面;否則節點將以 *獨立模式* 運作。

在 Linux 節點上,kubelet 也依賴讀取 cgroup 和各種系統檔案來收集指標。

在 Windows 節點上,kubelet 透過不同的機制收集指標,該機制不依賴路徑。

kubelet 也使用一些其他檔案,並且 kubelet 使用本機 Unix 網域 socket 進行通訊。有些是 kubelet 監聽的 socket,而對於其他 socket,kubelet 會發現它們,然後以用戶端身分連線。

組態

Kubelet 組態檔

可以使用命令列引數 --config 設定 kubelet 組態檔的路徑。kubelet 也支援 嵌入式組態檔 以增強組態。

憑證

憑證和私密金鑰通常位於 /var/lib/kubelet/pki,但可以使用 --cert-dir kubelet 命令列引數進行設定。憑證檔案的名稱也是可設定的。

Manifests

靜態 Pod 的 Manifests 通常位於 /etc/kubernetes/manifests 中。位置可以使用 staticPodPath kubelet 組態選項進行設定。

Systemd 單元設定

當 kubelet 作為 systemd 單元執行時,某些 kubelet 組態可能會在 systemd 單元設定檔中宣告。通常包括

狀態

資源管理器的檢查點檔案

所有資源管理器都會將 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 使用不同的鎖定檔路徑值,當兩者都在執行時,它們將無法偵測到衝突。

接下來

最後修改時間:2024年10月22日下午 12:25 PST:In-Place Pod Resize Beta (6c3808ec10)