Amazon EKS 노드 그룹이 Degraded 상태인 이유는 무엇입니까?

6분 분량
0

Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터의 관리형 노드 그룹이 Degraded 상태입니다.

해결 방법

NodegroupHealth에 표시되는 오류 메시지를 기반으로 다음과 같은 문제 해결 조치를 취하십시오.

AccessDenied

AccessDenied 오류는 Amazon EKS 또는 관리형 노드 중 하나가 Kubernetes 클러스터 API 서버에서 인증 또는 권한을 부여할 수 없을 때 발생합니다. 다음 예시와 유사한 오류가 표시됩니다.

"Your worker nodes do not have access to the cluster. Verify if the node instance role is present and correctly configured in the aws-auth ConfigMap."

이 문제를 해결하려면 다음 명령을 실행하여 aws-auth configmap에서 노드 인스턴스 역할 권한이 올바른지 확인하십시오.

kubectl get configmap aws-auth -n kube-system -o yaml

또는 노드 역할을 액세스 항목에 올바르게 매핑했는지 확인하십시오.

워커 노드 인스턴스 역할이 존재하고 올바르게 구성되어야 합니다. 노드 역할을 system:bootstrappers 또는 system:nodes에만 매핑해야 합니다. 노드 역할을 system:masters 그룹에 매핑하는 것은 바람직하지 않습니다.

또한 관리형 노드 그룹에서 작업을 수행하는 역할에 eks:node-manager ClusterRole 또는 ClusterRoleBinding 권한이 없는 경우에도 AccessDenied 오류가 표시됩니다. 이 문제를 해결하려면 역할 권한을 업데이트하십시오.

프라이빗 Windows Amazon Machine Image(AMI)를 사용하여 관리형 노드 그룹을 시작하는 경우 Not authorized for images 오류 메시지가 표시될 수 있습니다. AWS가 새로운 Windows AMI를 시작하면 AWS는 4개월 이전의 모든 AMI를 프라이빗으로 전환합니다. 이 문제를 해결하려면 승인되지 않은 이미지를 참조하십시오.

AmiIdNotFound

AmiIdNotFound 오류는 Amazon EKS에서 시작 템플릿과 연결된 AMI ID를 찾을 수 없을 때 발생합니다. 다음 예시와 유사한 오류가 표시됩니다.

"AmiIdNotFound: The ami id '[ami-0cxx]' does not exist"

이 문제를 해결하려면 사용자 지정 시작 템플릿에 추가한 AMI ID가 존재하는지 확인하십시오. 또한 AWS 계정과 AMI ID를 공유해야 합니다.

AutoScalingGroupNotFound

AutoScalingGroupNotFound 오류는 Amazon EKS가 관리형 노드 그룹과 연결된 Amazon Elastic Compute Cloud(EC2) Auto Scaling 그룹을 찾을 수 없을 때 발생합니다. 다음 예시와 유사한 오류가 표시됩니다.

"AutoScalingGroupNotFound - The Amazon AutoScalingGroup ASG Name was not found."

이 문제를 해결하려면 관리형 노드 그룹과 연결된 EC2 Auto Scaling 그룹을 삭제하지 않았는지 확인하십시오. 실수로 EC2 Auto Scaling 그룹을 삭제한 경우 이름이 동일한 EC2 Auto Scaling 그룹을 생성하십시오. 몇 분 정도 기다리고, 노드 그룹이 Active 상태가 되었는지 확인합니다.

ClusterUnreachable

ClusterUnreachable 오류는 Amazon EKS 또는 관리형 노드가 Kubernetes 클러스터 API 서버와 통신할 수 없을 때 발생합니다. 다음 예시와 유사한 오류가 표시됩니다.

"Ec2SecurityGroupNotFound You must use a valid fully-formed launch template. The security group 'sg-09fxx' does not exist in VPC 'vpc-0a8cxx'"

이 오류는 일반적으로 네트워크 장애 또는 API 서버가 요청을 제출할 때 제한 시간이 초과되면 발생합니다. 이 오류는 etcd 데이터베이스에 대한 8GB 할당량 크기를 초과하는 경우에도 발생합니다. 이 문제를 해결하려면 Amazon EKS 클러스터의 etcd 데이터베이스 크기 관리를 참조하십시오. 또한 kube-proxy, Amazon Virtual Private Cloud(Amazon VPC) CNICoreDNS와 같은 코어 애드온이 최신 버전으로 업데이트되어 있어야 합니다.

AutoScalingGroupInvalidConfiguration

관리형 노드 그룹의 EC2 Auto Scaling 그룹을 잘못 구성하면 AutoScalingGroupInvalidConfiguration 오류가 발생합니다. 다음 예시와 유사한 오류가 표시됩니다.

"AutoScalingGroupInvalidConfiguration: The Amazon AutoScalingGroup ASG Name has subnets ([Incorrect Subnet ID 1, Incorrect Subnet ID 2, Incorrect Subnet ID 3]) which is not expected by Amazon EKS. Expected subnets : ([Correct Subnet ID 1, Correct Subnet ID 2, Correct Subnet ID 3])."

이 문제를 해결하려면 EC2 Auto Scaling 그룹의 변경 사항을 식별하고 제거하십시오. 연결된 서브넷이 변경되지 않아야 합니다. 오류 메시지에 나열된 서브넷을 사용하도록 노드 그룹과 연결된 EC2 Auto Scaling을 업데이트하십시오.

관리형 노드 그룹에 연결된 EC2 Auto Scaling 그룹을 수동으로 업데이트하는 것은 바람직하지 않습니다. 수동 변경만을 사용하여 이전의 수동 변경 사항을 되돌리십시오.

Ec2SecurityGroupNotFound

Ec2SecurityGroupNotFound 오류는 Amazon EKS가 클러스터 보안 그룹을 찾을 수 없을 때 발생합니다. 다음 예시와 유사한 오류가 표시됩니다.

"Ec2SecurityGroupNotFound The Amazon EC2 Security Group sg-04f3xx for node group-Name was not found."

이 오류 메시지가 표시되면 Degraded 상태의 관리형 노드 그룹을 더 이상 사용할 수 없습니다. 대신 새 노드 그룹을 시작해야 합니다. 그런 다음 이전 노드 그룹을 드레이닝하고 삭제합니다. 노드 그룹을 드레이닝하는 방법에 대한 자세한 내용은 Kubernetes 웹사이트에서 안전하게 노드 드레이닝을 참조하십시오.

Ec2LaunchTemplateNotFound

Ec2LaunchTemplateNotFound 오류는 관리형 노드 그룹의 Amazon Elastic Compute Cloud(Amazon EC2) 시작 템플릿이 Amazon EKS에서 생성한 버전과 일치하지 않을 때 발생합니다. 다음 예시와 유사한 오류가 표시됩니다.

"The Amazon EC2 Launch Template lt-0cdac3xxf version number was not found."

Amazon EKS는 기본 관리형 EC2 Auto Scaling 그룹과 연결된 관리형 시작 템플릿을 사용하여 관리형 그룹을 배포합니다.

실수로 시작 템플릿을 삭제한 경우 새 노드 그룹을 시작하는 것이 좋습니다. 그런 다음 이전 노드 그룹을 드레이닝하고 삭제합니다. 노드 그룹을 드레이닝하는 방법에 대한 자세한 내용은 Kubernetes 웹사이트에서 안전하게 노드 드레이닝을 참조하십시오.

관리형 노드 그룹에 연결된 EC2 Auto Scaling 그룹을 수동으로 업데이트하는 것은 바람직하지 않습니다. 수동 변경만을 사용하여 이전의 수동 변경 사항을 되돌리십시오.

Ec2LaunchTemplateVersionMismatch

Ec2LaunchTemplateVersionMismatch 오류는 관리형 노드 그룹의 EC2 Auto Scaling 그룹 시작 템플릿 버전이 Amazon EKS에서 생성한 버전과 일치하지 않을 때 발생합니다. 다음 예시와 유사한 오류가 표시됩니다.

"The Amazon EC2 Launch Template : lt-0cdacxx has a new version (number) associated with your Autoscaling group, which is not managed by Amazon EKS. Expected Launch Template version : (number) lt-0cdac39f3axx"

Amazon EKS는 항상 관리형 시작 템플릿을 사용하여 관리형 노드 그룹을 배포합니다. 시작 템플릿을 제공하지 않으면 Amazon EKS에서 계정의 기본값으로 시작 템플릿을 자동 생성합니다. 자동 생성된 템플릿을 수정하는 것은 바람직하지 않습니다. 또한 사용자 지정 시작 템플릿을 사용하지 않는 기존 노드 그룹은 직접 업데이트할 수 없습니다. 대신 사용자 지정 시작 템플릿을 사용하여 새 노드 그룹을 생성해야 합니다.

사용자 지정 시작 템플릿의 Ec2LaunchTemplateVersionMismatch 오류를 해결하려면 오류 메시지에 표시된 올바른 시작 템플릿 버전으로 시작 템플릿 버전을 업데이트하십시오.

Amazon EKS 노드 그룹의 시작 템플릿에서 허용되는 작업에 대한 자세한 내용은 시작 템플릿 구성 기본 사항을 참조하십시오.

AsgInstanceLaunchFailures

AsgInstanceLaunchFailures 오류는 EC2 Auto Scaling 그룹에서 인스턴스를 시작할 수 없을 때 발생합니다. 다음 예시와 유사한 오류가 표시됩니다.

"AsgInstanceLaunchFailures Could not launch Spot Instances. UnfulfillableCapacity - Unable to fulfill capacity due to your request configuration. Please adjust your request and try again. Launching EC2 instance failed."

이 오류는 일반적으로 요청한 인스턴스 유형에 충분한 스팟 인스턴스 용량이 없을 때 발생합니다. 용량을 확보하기 위해 다양한 스팟 인스턴스 풀의 인스턴스 유형과 패밀리를 혼합하여 사용하는 것이 좋습니다. 자세한 내용은 Amazon EKS 관리형 노드 그룹을 사용하여 스팟 인스턴스를 시작하고 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

InsufficientFreeAddresses

InsufficientFreeAddresses 오류는 관리형 노드 그룹과 연결된 서브넷에 새 노드에 사용할 수 있는 IP 주소가 충분하지 않을 때 발생합니다. 다음 예시와 유사한 오류가 표시됩니다.

"InsufficientFreeAddresses - Amazon AutoScaling was unable to launch instances because there are not enough free addresses in the subnet associated with your AutoScaling group(s)."

이 문제를 해결하려면 관리형 노드 그룹과 연결된 서브넷에 IP 주소가 충분한지 확인하십시오. 자세한 내용은 IP 주소 사용률 최적화를 참조하십시오.

IamInstanceProfileNotFound or IamNodeRoleNotFound

관리형 노드 그룹에 연결한 AWS Identity and Access Management(IAM) 역할 또는 프로파일을 삭제하면 IamInstanceProfileNotFound 또는 IamNodeRoleNotFound 오류가 발생합니다. 이 문제를 해결하려면 삭제된 역할 또는 프로파일과 이름 및 설정이 동일한 새 IAM 역할 또는 프로파일 생성하십시오.

AWS 공식
AWS 공식업데이트됨 한 달 전