AWS/EKS

[EKS/Error] aws-node 동작 안됨 문제 (EKS Node NotReady)

삼콩 2022. 5. 5. 23:32

AWS EKS에 생성된 Pod들에는 EKS Cluster 생성시 선택하였던 Subnet의 IP들이 할당되며 이를 VPC 네트워킹이라고 한다. 이전 포스팅에서 EKS가 이러한 동작을 할 수 있도록 VPC_CNI 플러그인 설정을 해주었다. 이 VPC_CNI는 EKS kube-system 네임스페이스에서 aws-node라는 이름의 DaemonSet 형태로 배포되어있다.

 

이 aws-node가 정상적으로 동작되지 않으면 노드그룹의 인스턴스들이 모두 NotReady 상태가 된다 (Pod가 생성될 공간이 존재하지 않게 됨). 

AWS에서는 다음 글과 같이 aws-node가 정상 동작하지 않을 때 확인해야할 부분 (서브넷 내 가용 IP 수, CNI)을 알려주고있다 (https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-cni-plugin-troubleshooting/). 

 

[증상]

본 오류는 kube-proxy는 Running이나, aws-node가 정상적으로 생성되지 않았었다 (반복적으로 재생성 시도).

aws-node에서 발생되는 로그는 아래와 같았다 (다음 로그에서 멈춰져있었다).

$ kubectl logs pod/aws-node-25xl4 -n kube-system

{"level":"info","ts":"2022-05-01T07:45:15.055Z","caller":"entrypoint.sh","msg":"Validating env variables ..."}
{"level":"info","ts":"2022-05-01T07:45:15.056Z","caller":"entrypoint.sh","msg":"Install CNI binary.."}
{"level":"info","ts":"2022-05-01T07:45:15.068Z","caller":"entrypoint.sh","msg":"Starting IPAM daemon in the background ... "}
{"level":"info","ts":"2022-05-01T07:45:15.070Z","caller":"entrypoint.sh","msg":"Checking for IPAM connectivity ... "}
I0501 07:45:16.178456      11 request.go:621] Throttling request took 1.044116002s, request: GET:https://10.100.0.1:443/apis/elbv2.k8s.aws/v1beta1?timeout=32s

 

 

 

이 부분을 확인해도 안된다면 마지막으로 관련 리소스가 수정/삭제된 것은 아닌지 확인해본다.

  • AmazonEKS_CNI_Policy가 연결되어있는 IAM Role (vpc-cni plugin에 적용)
  • 해당 역할의 신뢰 관계 확인 (OIDC 정보 및 관련 namespace, service 이름 확인)
  • 자격 증명 공급자 존재 여부 확인 (EKS Cluster ODIC Provider URL과 일치하는지 확인)

 

나의 경우 원인은 자격 증명 공급자 삭제 때문이었다.

  • 위치: IAM > 자격증명 공급자

 

EKS Cluster의 자격 증명 공급자를 다시 생성한다.

EKS Cluster의 OIDC Provider URL은 아래 위치에 존재한다.

EKS Cluster - OpenID Provider URL

 

 

AWS IAM 자격 증명 공급자 재생성 후 aws-node pod들을 재시작 해주었으며, 그 결과 aws-node가 정상 동작하고, 각 노드 인스턴스가 EKS Cluster에 정상 조인 된 것을 확인할 수 있었다.

$ kubectl logs pod/aws-node-gdknp -n kube-system

{"level":"info","ts":"2022-05-01T07:55:40.418Z","caller":"entrypoint.sh","msg":"Validating env variables ..."}
{"level":"info","ts":"2022-05-01T07:55:40.419Z","caller":"entrypoint.sh","msg":"Install CNI binary.."}
{"level":"info","ts":"2022-05-01T07:55:40.432Z","caller":"entrypoint.sh","msg":"Starting IPAM daemon in the background ... "}
{"level":"info","ts":"2022-05-01T07:55:40.433Z","caller":"entrypoint.sh","msg":"Checking for IPAM connectivity ... "}
I0501 07:55:41.527829      11 request.go:621] Throttling request took 1.044246955s, request: GET:https://10.100.0.1:443/apis/elbv2.k8s.aws/v1beta1?timeout=32s
{"level":"info","ts":"2022-05-01T07:55:46.464Z","caller":"entrypoint.sh","msg":"Copying config file ... "}
{"level":"info","ts":"2022-05-01T07:55:46.469Z","caller":"entrypoint.sh","msg":"Successfully copied CNI plugin binary and config file."}
{"level":"info","ts":"2022-05-01T07:55:46.470Z","caller":"entrypoint.sh","msg":"Foregrounding IPAM daemon ..."}

 

 

 

+ 추가로 CloudTrail을 사용하고 있으며 비교적 최근 발생 된 일이라면 어느 사용자, 역할 등을 통해 삭제되었는지 확인 가능하다.

IAM은 글로벌 서비스이므로 검색시 미국 동부 (버지니아 북부 us-east-1)에서 검색해야한다.

본 포스팅 오류 원인은 OIDC Provider 삭제였으므로 DeleteOpenIDConnectProvider를 검색하였음

 

[참고]

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/pod-networking.html

https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-cni-plugin-troubleshooting/