Karpenter 0.32.0+ 버전부터 v1을 준비하기 위한 v1beta1 단계로 들어선다.
1. Provisioner -> NodePool
2. AWSNodeTemplate -> EC2NodeClass

참조

기본적인 업그레이드 방법은 위 문서를 참조하는 것이 가장 효율적이고 핵심만 짚어보자면

  1. alpha 매니페스트를 beta 매니페스트로 변환하는데 도움이 되는 도구 설치
$ go install github.com/aws/karpenter/tools/karpenter-convert/cmd/karpenter-convert@release-v0.32.x
  1. Convert to EC2NodeClass
$ karpenter-convert -f awsnodetemplate.yaml | envsubst > ec2nodeclass.yaml
  1. Convert to NodePool
$ karpenter-convert -f provisioner.yaml > nodepool.yaml
  1. Roll over nodes: Add the following taint to the old Provisioner: karpenter.sh/legacy=true:NoSchedule

  2. Ensure that there are no more Machine resources

# provisioners
$ kubectl get machines
> No resources found

# nodepools
$ kubectl get nodeclaims

상세한 내용은 GitHub SourceCode에서 참고, 마이그레이션을 위한 간단한 스크립트를 작성해두었다.

Provisioner와 Nodepool 두 개를 동시에 운영하며 빠르게 전환이 완료될 수 있도록 모니터링에 힘쓰는 것이 좋고 Latest 버전까지 업데이트하여 오픈소스 컨트리뷰션 활동의 길을 열어두도록 하자.

추가적으로 Amazon EKS에서 Karpenter의 예상치 못한 노드 교체로 이어질 수 있는 결함이 발견되어 권장버전으로 업그레이드를 해야한다.
문제의 근본 원인은 Karpenter AMI Drift 탐지 로직의 결함이 있으며 영향 받은 리소스 목록은 AWS Health Dashboard에서 확인 가능하다.

profile
Soomgo, DevOps

0개의 댓글