내용으로 건너뛰기

Amazon EKS에서 AWS Load Balancer Controller와 관련된 리더 선택 문제를 해결하려면 어떻게 해야 합니까?

2분 분량
0

AWS Load Balancer Controller 포드에 장애가 발생하고 Amazon Elastic Kubernetes Service(Amazon EKS)에서 "Forbidden" 오류가 표시됩니다. 또는 로드 밸런서 컨트롤러 포드 로그에 "problem running manager: error leader election lost" 오류가 표시됩니다.

해결 방법

AWS Load Balancer Controller 포드에 장애가 발생하면 "Forbidden" 오류가 표시됨

Forbidden 오류는 aws-load-balancer-controller-role Amazon EKS 클러스터 역할이 coordination.k8s.io apiGroups에서 리소스를 임대할 권한이 없을 때 발생합니다. 새 인바운드 리소스가 예상대로 작동하지 않고 기존 수신 리소스에 대한 수정 사항이 적용되지 않습니다.

다음과 같은 오류가 표시됩니다.

"E0830 08:37:41.717952 1 leaderelection.go:330] error retrieving resource lock kube-system/aws-load-balancer-controller-leader: leases.coordination.k8s.io "aws-load-balancer-controller-leader" is forbidden: User "system:serviceaccount:kube-system:aws-load-balancer-controller" cannot get resource "leases" in API group "coordination.k8s.io" in the namespace "kube-system""

해당 오류가 컨트롤러 포드 로그에 계속 기록되며 다른 오류는 없습니다. 컨트롤러 패드를 다시 시작해도 문제가 해결되지 않습니다.

참고: AWS Load Balancer Controller를 버전 2.5.x로 업데이트하십시오. 또한 컨트롤러 포드가 활성 상태인지 확인하십시오.

이 문제를 해결하려면 다음 단계를 완료하십시오.

  1. aws-load-balancer-controller-role에 다음 항목을 추가합니다.

    ...
    ...
    - apiGroups: ["coordination.k8s.io"]
      resources: [leases]
      verbs: [get, list, watch, create, patch, update]
  2. 컨트롤러 포드를 다시 시작합니다.

리소스를 추가하려면 다음 명령을 실행합니다.

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

배포를 다시 시작하려면 다음 명령을 실행합니다.

kubectl rollout restart deployment  -n

컨트롤러 포드 로그에 "problem running manager: error leader election lost"가 표시됨

클러스터에서 동일한 컨트롤러의 여러 인스턴스가 활성 상태일 때 problem running manager 오류 메시지가 표시됩니다. 리더 선택 프로세스에서 인스턴스 중 하나가 리더 상태를 잃은 것으로 확인되었습니다. 여러 인스턴스가 활성화된 경우 인스턴스가 리더 상태를 잃는 것이 예상됩니다. 리더 선택 메커니즘은 하나의 인스턴스만 특정 중요 작업을 수행하도록 합니다. 조치를 취할 필요는 없습니다.

선택된 리더 포드가 항상 있도록 하려면 복제본 수를 2에서 3으로 설정하거나 다른 홀수로 설정하십시오.

AWS 공식업데이트됨 10달 전
댓글 없음