檢視次數:
設定檔適用性:等級 1
如果 kubelet 正在運行,請確保其 kubeconfig 文件的所有權設置為 root:root
kubeletkubeconfig 檔案控制工作節點中 kubelet 服務的各種參數。您應該設定其檔案擁有權以維護檔案的完整性。該檔案應由 root:root 擁有。
注意
注意
請參閱 GKE 文件以了解預設值。

影響

過度寬鬆的檔案存取權限會增加平台的安全風險。

稽核

使用 Google Cloud 主控台
  1. 前往 Google Cloud Console Kubernetes Engine 頁面,以進入 Kubernetes Engine。
  2. 點擊所需的叢集以打開詳細資訊頁面,然後點擊所需的節點池以打開節點池詳細資訊頁面。3.
  3. 記下所需節點的名稱
  4. 前往Google Cloud 控制台 VM 實例頁面
  5. 尋找所需的節點並點擊SSH以開啟與該節點的 SSH 連接。
使用命令列
方法 1
SSH到工作節點。
檢查 kubelet 服務是否正在運行:
sudo systemctl status kubelet
輸出應返回Active: active (running) since..
在每個節點上執行以下命令以找到適當的kubeconfig檔案:
ps -ef | grep kubelet
上述命令的輸出應該返回類似於 --kubeconfig /var/lib/kubelet/kubeconfig 的內容,這是 kubeconfig 檔案的位置信息。
執行此命令以獲取kubeconfig文件的所有權:
stat -c %U:%G /var/lib/kubelet/kubeconfig
上述命令的輸出會顯示kubeconfig檔案的所有權。請確認所有權已設定為root:root
方法二
建立並執行特權 Pod。
您將需要運行一個具有足夠權限以存取主機檔案系統的 Pod。這可以通過部署使用 hostPath 卷將節點的檔案系統掛載到 Pod 來實現。
以下是一個簡單的 Pod 定義範例,將主機的根目錄掛載到 Pod 內的 /host:
apiVersion: v1 kind: Pod metadata: name: file-check spec: volumes: - name: host-root hostPath: path: / type: Directory containers: - name: nsenter image: busybox command: ["sleep", "3600"] volumeMounts: - name: host-root mountPath: /host securityContext: privileged: true
將此保存到檔案(例如,file-check-pod.yaml)並建立 Pod:
kubectl apply -f file-check-pod.yaml
一旦 pod 運行,您可以執行進入以檢查節點上的文件所有權:
kubectl exec -it file-check -- sh
現在您在 Pod 的 Shell 中,但您可以透過 /host 目錄存取節點的檔案系統並檢查檔案的擁有權:
ls -l /host/var/lib/kubelet/kubeconfig
上述命令的輸出會顯示kubeconfig檔案的所有權。請確認所有權已設定為root:root

補救

在每個工作節點上執行以下命令(根據您系統上的檔案位置)。例如:
chown root:root <proxy kubeconfig file>