設定檔適用性:等級 1 - 主節點
在建立連線之前驗證 kubelet 的憑證。
從 apiserver 到 kubelet 的連線用於獲取 pod 的日誌、通過 kubectl 附加到正在運行的 pod,以及使用 kubelet 的端口轉發功能。這些連線終止於
kubelet 的 HTTPS 端點。預設情況下,apiserver 不會驗證 kubelet 的服務憑證,這使得連線容易受到中間人攻擊,並且在不受信任和/或公共網路上運行時不安全。
注意預設情況下,
--kubelet-certificate-authority 參數未設定。 |
影響
您需要在 apiserver 和 kubelets 上配置 TLS。
稽核
在控制平面節點上執行以下命令:
ps -ef | grep kube-apiserver
驗證
--kubelet-certificate-authority 參數是否存在並已適當設置。替代稽核方法
kubectl get pod -nkube-system -lcomponent=kube-apiserver -o=jsonpath='{range
.items[]}{.spec.containers[].command} {"\n"}{end}' | grep '--kubelet-certificate-Authority' |
grep -i false
如果退出代碼為1,則表示控制項不存在或失敗。
補救
按照 Kubernetes 文件的指引,設置 apiserver 和 kubelets 之間的 TLS 連接。然後,編輯控制平面節點上的 API 伺服器 pod 規範檔案
/etc/kubernetes/manifests/kube-apiserver.yaml,並將 --kubelet-certificate-authority 參數設置為憑證授權機構的憑證檔案路徑。--kubelet-certificate-authority=<ca-string>
