跳至内容

如何解决 Amazon EKS 中 AWS 负载均衡器控制器的领导者选举问题?

1 分钟阅读
0

我的 AWS 负载均衡器控制器容器组 (pod) 出现故障,且我在 Amazon Elastic Kubernetes Service (Amazon EKS) 中收到“Forbidden”(禁止访问)错误。或者,我在负载均衡器控制器容器组 (pod) 日志中收到“problem running manager: error leader election lost”(运行管理器时出现问题:领导者选举失败错误)错误。

解决方法

当 AWS 负载均衡器控制器容器组 (pod) 出现故障时,您会收到“Forbidden”(禁止访问)错误

当 Amazon EKS 集群角色 aws-load-balancer-controller-role 无权从 coordination.k8s.io apiGroups 租用资源时,将会出现 Forbidden(禁止访问)错误。新的入站资源未按预期运行,且对现有入口资源的修改未生效。

您会收到以下错误:

“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) 处于 Active(活动)状态。

要解决此问题,请完成以下步骤:

  1. 将以下条目添加到 aws-load-balancer-controller-role 中:

    ...
    ...
    - apiGroups: ["coordination.k8s.io"]
      resources: [leases]
      verbs: [get, list, watch, create, patch, update]
  2. 重启控制器容器组 (pod)。

要添加资源,请运行以下命令:

kubectl edit clusterrole aws-load-balancer-controller-role

要重启部署,请运行以下命令:

kubectl rollout restart deployment  -n

您在控制器容器组 (pod) 日志中收到“problem running manager: error leader election lost”(运行管理器时出现问题:领导者选举失败错误)

当集群中同一控制器的多个实例处于活动状态时,您会收到 problem running manager(运行管理器时出现问题)错误消息。领导者选举流程确定其中一个实例失去了其领导者状态。当多个实例处于活动状态时,预期会有一个实例失去其领导者状态。领导者选举机制可确保只有一个实例执行特定的关键操作。您无需采取操作。

要确保始终有一个选定的领导者容器组 (pod),请将副本数从 2 更改为 3 或其他奇数。

AWS 官方已更新 1 年前