檢視次數:
設定檔適用性:等級 1 - 工作節點
確保為 Kubelet 驗證使用憑證配置 Client CA 檔案以增強安全性。此配置至關重要,因為從 apiserver 到 kubelet 的連接用於執行如獲取 pod 日誌、通過 kubectl 附加到正在運行的 pod 以及啟用 kubelet 的端口轉發功能等活動,並終止於 kubelet 的 HTTPS 端點。預設情況下,apiserver 不會驗證 kubelet 的服務憑證,使這些連接容易受到中間人攻擊,並在不受信任或公共網路上不安全。配置 Kubelet 憑證驗證允許 apiserver 在處理任何請求之前驗證 Kubelet,從而保護這些互動。此設置要求在 apiserver 和 kubelets 上配置 TLS 以確保安全通信。

影響

您需要在 apiserver 和 kubelets 上配置 TLS。

稽核

稽核方法 1:
注意
注意
Kubelets 可以透過配置檔案或命令列參數進行配置。命令列參數具有優先權。在審核 Kubelet 配置時,請檢查命令列參數和配置檔案中的條目。
  1. SSH 進入每個節點並執行以下命令以查看活動 Kubelet 進程的詳細資訊:
    ps -ef | grep kubelet
  2. 從輸出中的 --config 參數識別配置檔案的位置資訊。使用以下命令查看檔案:
    sudo less /path/to/kubelet-config.json
  3. 驗證是否已配置用戶端憑證授權機構檔案:
    • Kubelet 服務的命令行參數:
      --client-ca-file=/path/to/client-ca-file
    • Kubelet 組態設定檔:
              {
              "authentication": {
              "x509": {
              "clientCAFile": "/path/to/client-ca-file"
              }
              }
              }
             
稽核方法 2:
使用 kubectl 通過 Kubernetes API 的 "/configz" 端點檢查 Kubelet 的運行配置:
  1. 在您的叢集中發現所有節點:
    kubectl get nodes
  2. 使用 kubectl 在本地端口(例如 8080)啟動 Proxy:
    kubectl proxy --port=8080
  3. 在獨立的終端機中,為每個節點執行以下命令:
    export NODE_NAME=my-node-name
          curl http://localhost:8080/api/v1/nodes/${NODE_NAME}/proxy/configz
  4. 通過檢查 API 回應來驗證是否已配置用戶端憑證授權檔案:
          {
          "authentication": {
          "x509": {
          "clientCAFile": "/path/to/client-ca-file"
          }
          }
          }
         

補救

方法一:
  1. SSH 進入每個節點。
  2. 定位 Kubelet 配置檔:
    ps -ef | grep kubelet
  3. 使用以下方式查看配置檔:
    sudo less /path/to/kubelet-config.json
  4. 透過設定以下參數來配置用戶端憑證授權檔案:
          {
          "authentication": {
          "x509": {
          "clientCAFile": "/path/to/client-ca-file"
          }
          }
          }
         
  5. 重新啟動 kubelet 服務並檢查其狀態(適用於使用 systemd 的系統範例):
    systemctl daemon-reload
          systemctl restart kubelet.service
          systemctl status kubelet -l
方法二:
  1. 如果使用命令列參數,請編輯 kubelet 服務檔案以包含以下參數:
    --client-ca-file=/path/to/client-ca-file
  2. 對於使用 systemd 的系統,請編輯位於 /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf 的檔案。
  3. 重新啟動 kubelet 服務並檢查其狀態(適用於使用 systemd 的系統範例):
          systemctl daemon-reload
          systemctl restart kubelet.service
          systemctl status kubelet -l