본문 바로가기
AWS/EKS

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

by 삼콩 2022. 5. 5.

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/

댓글