設定檔適用性:等級 1 - 主節點
為每個控制器使用單獨的服務帳戶憑證。
控制器管理器在
kube-system
命名空間中為每個控制器創建一個服務帳戶,為其生成憑證,並使用該服務帳戶憑證為每個控制器循環構建一個專用的 API 客戶端。將 --use-service-account-credentials
設置為 true
時,控制器管理器中的每個控制循環都將使用單獨的服務帳戶憑證運行。當與 RBAC 結合使用時,這確保了控制循環以執行其預定任務所需的最低必要的權限運行。
注意預設情況下,
--use-service-account-credentials 設定為 false 。 |
影響
無論為叢集配置了哪種授權者,它都必須授予服務帳戶足夠的權限以執行其預定任務。使用 RBAC 授權者時,這些角色會自動在
kube-system
命名空間中創建並綁定到相應的服務帳戶,並在啟動時自動調整為默認角色和角色綁定。如果使用其他授權方法(ABAC、Webhook 等),叢集部署者負責授予服務帳戶適當的權限(所需的權限可以通過檢查
controller-roles.yaml
和 controller-role-bindings.yaml
文件中的 RBAC 角色來查看)。稽核
在控制平面節點上執行以下命令:
ps -ef | grep kube-controller-manager
驗證
--use-service-account-credentials
參數是否設置為 true
。補救措施
編輯控制平面節點上的 Controller Manager pod 規範檔案
/etc/kubernetes/manifests/kube-controller-manager.yaml
以設定以下參數。--use-service-account-credentials=true