我的 AWS 負載平衡器控制器 Pod 失敗,並且我在 Amazon Elastic Kubernetes Service (Amazon EKS) 中收到「禁止」錯誤。或者,我在負載平衡器控制器 Pod 日誌中收到「運行管理器時出現問題:錯誤領導者選舉失敗」錯誤。
解決方法
當 AWS 負載平衡器控制器 Pod 失敗時,您會收到「禁止」錯誤
當 aws-load-balancer-controller-role Amazon EKS 叢集角色沒有向 coordinate.k8s.io apiGroups 租用資源的權限時,就會發生禁止錯誤。新的傳入資源無法如預期運作,並且對現有傳入資源的修改不會生效。
您會收到下列錯誤訊息:
「E0830 08:37:41.717952 1 leaderelection.go:330] 擷取資源鎖定 kube-system/aws-load-balancer-controller-leader 時發生錯誤:leases.coordination.k8s.io "aws-load-balancer-controller-leader" 遭到禁止: 使用者 "system:serviceaccount:kube-system:aws-load-balancer-controller" 無法在命名空間 "kube-system" 的 API 群組 "coordination.k8s.io" 中取得資源 "leases"」
此錯誤會不斷寫入控制器 Pod 日誌中,且沒有其他錯誤。重新啟動控制器 Pod 無法解決該問題。
注意:將 AWS 負載平衡器控制器更新至 2.5.x 版本。此外,請確定控制器 Pod 處於作用中狀態。
若要解決此問題,請完成下列步驟:
-
將以下項目新增至 aws-load-balancer-controller-role:
...
...
- apiGroups: ["coordination.k8s.io"]
resources: [leases]
verbs: [get, list, watch, create, patch, update]
-
重新啟動控制器 Pod。
若要新增資源,請執行下列命令:
kubectl edit clusterrole aws-load-balancer-controller-role
若要建立部署,請執行下列命令:
kubectl rollout restart deployment -n
您會在控制器 Pod 日誌中收到「執行管理器時出現問題:錯誤領導者選舉失敗」
當叢集中相同控制器的多個執行個體處於作用中時,您會收到執行管理器時出現問題錯誤訊息。領導者選舉過程確定其中一個執行個體失去了其領導者身分。當多個執行個體處於作用中狀態時,其中一個執行個體失去其領導者身分是預期的行為。領導者選舉機可確保只有一個執行個體執行特定的關鍵作業。您不需要採取行動。
若要確保始終有一個已選出的領導者 Pod,請將複本數從 2 設定為 3 或其他奇數。