클러스터용 관리형 노드 그룹 업데이트

클러스터용 관리형 노드 그룹 업데이트

Amazon EKS 관리형 노드 그룹의 버전이나 구성을 업데이트하는 방법을 설명합니다.

출처: 문서

본문

관리형 노드 그룹 업데이트를 시작하면 Amazon EKS가 "노드 업데이트의 각 단계 이해"에 나열된 단계를 완료하여 노드를 자동으로 업데이트합니다. Amazon EKS 최적화 AMI를 사용한다면 Amazon EKS는 최신 AMI 릴리스 버전의 일부로 최신 보안 패치와 운영 체제 업데이트를 노드에 자동으로 적용합니다.

Amazon EKS 관리형 노드 그룹의 버전이나 구성을 업데이트하는 것이 유용한 시나리오는 여러 가지가 있습니다.

  • Amazon EKS 클러스터의 Kubernetes 버전을 업데이트했고 노드도 같은 Kubernetes 버전을 사용하도록 업데이트하려는 경우.
  • 관리형 노드 그룹에 새 AMI 릴리스 버전이 제공되는 경우. AMI 버전에 대한 자세한 내용은 다음 섹션을 참고하세요.
    • Amazon Linux AMI 버전 정보 검색
    • 최적화된 Bottlerocket AMI로 노드 생성
    • Windows AMI 버전 정보 검색
  • 관리형 노드 그룹의 인스턴스 최소, 최대 또는 원하는 수를 조정하려는 경우.
  • 관리형 노드 그룹의 인스턴스에서 Kubernetes 라벨을 추가하거나 제거하려는 경우.
  • 관리형 노드 그룹에 AWS 태그를 추가하거나 제거하려는 경우.
  • 업데이트된 사용자 지정 AMI 같은 구성 변경이 있는 새 버전의 런치 템플릿을 배포해야 하는 경우.
  • Amazon VPC CNI 애드온 버전 1.9.0 이상을 배포하고 애드온에 대해 prefix delegation을 활성화했으며, 노드 그룹의 새 AWS Nitro System 인스턴스가 훨씬 더 많은 수의 Pod를 지원하기를 원하는 경우. 자세한 내용은 "접두사를 사용해 Amazon EKS 노드에 더 많은 IP 주소 할당"을 참고하세요.
  • Windows 노드에 IP prefix delegation을 활성화했고, 노드 그룹의 새 AWS Nitro System 인스턴스가 훨씬 더 많은 수의 Pod를 지원하기를 원하는 경우. 자세한 내용은 "접두사를 사용해 Amazon EKS 노드에 더 많은 IP 주소 할당"을 참고하세요.

관리형 노드 그룹의 Kubernetes 버전에 더 새로운 AMI 릴리스 버전이 있다면 노드 그룹 버전을 업데이트해 더 새로운 AMI 버전을 사용할 수 있습니다. 마찬가지로 클러스터가 노드 그룹보다 더 새로운 Kubernetes 버전을 실행 중이라면, 클러스터의 Kubernetes 버전과 일치하도록 최신 AMI 릴리스 버전을 사용해 노드 그룹을 업데이트할 수 있습니다.

관리형 노드 그룹의 노드가 스케일링 작업이나 업데이트로 인해 종료될 때, 해당 노드의 Pod는 먼저 드레인됩니다. 자세한 내용은 "노드 업데이트의 각 단계 이해"를 참고하세요.

노드 그룹 버전 업데이트

다음 중 하나로 노드 그룹 버전을 업데이트할 수 있습니다: eksctl 또는 AWS Management Console.

업데이트하는 버전은 컨트롤 플레인의 버전보다 클 수 없습니다.

eksctl

다음 명령으로 관리형 노드 그룹을 현재 노드에 배포된 것과 같은 Kubernetes 버전의 최신 AMI 릴리스로 업데이트합니다. 모든 example value를 자신의 값으로 바꾸세요.

eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code

참고: 런치 템플릿으로 배포된 노드 그룹을 새 런치 템플릿 버전으로 업그레이드한다면 이전 명령에 --launch-template-version version-number를 추가하세요. 런치 템플릿은 "런치 템플릿으로 관리형 노드 사용자 지정"에 설명된 요구 사항을 충족해야 합니다. 런치 템플릿에 사용자 지정 AMI가 포함된 경우 AMI는 "AMI 지정"의 요구 사항을 충족해야 합니다. 노드 그룹을 새 런치 템플릿 버전으로 업그레이드하면 모든 노드가 지정된 런치 템플릿 버전의 새 구성과 일치하도록 재활용됩니다.

런치 템플릿 없이 배포된 노드 그룹을 새 런치 템플릿 버전으로 직접 업그레이드할 수 없습니다. 대신 런치 템플릿을 사용해 새 노드 그룹을 배포해 노드 그룹을 새 런치 템플릿 버전으로 업데이트해야 합니다.

노드 그룹을 컨트롤 플레인의 Kubernetes 버전과 같은 버전으로 업그레이드할 수 있습니다. 예를 들어 Kubernetes 1.36을 실행하는 클러스터가 있다면, 현재 Kubernetes 1.35를 실행하는 노드를 다음 명령으로 버전 1.36으로 업그레이드할 수 있습니다.

eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code \
  --kubernetes-version=1.36

AWS Management Console

  1. Amazon EKS 콘솔을 엽니다.
  2. 업데이트할 노드 그룹이 있는 클러스터를 선택합니다.
  3. 하나 이상의 노드 그룹에 사용 가능한 업데이트가 있다면 페이지 상단에 사용 가능한 업데이트를 알리는 상자가 나타납니다. Compute 탭을 선택하면 사용 가능한 업데이트가 있는 노드 그룹의 Node groups 테이블 AMI release version 열에 Update now가 표시됩니다. 노드 그룹을 업데이트하려면 Update now를 선택합니다.
  4. 사용자 지정 AMI로 배포된 노드 그룹에는 알림이 표시되지 않습니다. 노드가 사용자 지정 AMI로 배포되었다면 다음 단계를 완료해 새 업데이트된 사용자 지정 AMI를 배포하세요.
    • AMI의 새 버전을 만듭니다.
    • 새 AMI ID로 새 런치 템플릿 버전을 만듭니다.
    • 노드를 새 런치 템플릿 버전으로 업그레이드합니다.
  5. Update node group version 대화 상자에서 다음 옵션을 활성화하거나 비활성화합니다.
    • Update node group version – 사용자 지정 AMI를 배포했거나 Amazon EKS 최적화 AMI가 현재 클러스터에 대한 최신 버전이라면 이 옵션은 사용할 수 없습니다.
    • Change launch template version – 노드 그룹이 사용자 지정 런치 템플릿 없이 배포된 경우 이 옵션은 사용할 수 없습니다. 사용자 지정 런치 템플릿으로 배포된 노드 그룹에 대해서만 런치 템플릿 버전을 업데이트할 수 있습니다. 노드 그룹을 업데이트할 런치 템플릿 버전을 선택합니다. 노드 그룹이 사용자 지정 AMI로 구성된 경우 선택한 버전도 AMI를 지정해야 합니다. 새 런치 템플릿 버전으로 업그레이드하면 모든 노드가 지정된 런치 템플릿 버전의 새 구성과 일치하도록 재활용됩니다.
  6. Update strategy에서 다음 옵션 중 하나를 선택합니다.
    • Rolling update – 이 옵션은 클러스터의 Pod 중단 예산을 존중합니다. Pod 중단 예산 문제로 인해 Amazon EKS가 이 노드 그룹에서 실행 중인 Pod를 정상적으로 드레인할 수 없으면 업데이트가 실패합니다.
    • Force update – 이 옵션은 Pod 중단 예산을 존중하지 않습니다. 노드 재시작을 강제하여 Pod 중단 예산 문제와 무관하게 업데이트가 발생합니다.
  7. Update를 선택합니다.

노드 그룹 구성 편집

관리형 노드 그룹의 일부 구성을 수정할 수 있습니다.

  1. Amazon EKS 콘솔을 엽니다.
  2. 편집할 노드 그룹이 있는 클러스터를 선택합니다.
  3. Compute 탭을 선택합니다.
  4. 편집할 노드 그룹을 선택한 다음 Edit를 선택합니다.
  5. (선택 사항) Edit node group 페이지에서 다음을 수행합니다.
    • 노드 그룹 스케일링 구성을 편집합니다.
      • Desired size – 관리형 노드 그룹이 유지해야 하는 현재 노드 수를 지정합니다.
      • Minimum size – 관리형 노드 그룹이 축소할 수 있는 최소 노드 수를 지정합니다.
      • Maximum size – 관리형 노드 그룹이 확장할 수 있는 최대 노드 수를 지정합니다. 노드 그룹에서 지원되는 최대 노드 수는 "Amazon EKS 및 Fargate 서비스 할당량 보기 및 관리"를 참고하세요.
    • (선택 사항) 노드 그룹의 노드에 Kubernetes 라벨을 추가하거나 제거합니다. 여기에 표시된 라벨은 Amazon EKS로 적용한 라벨뿐입니다. 노드에 표시되지 않는 다른 라벨이 있을 수 있습니다.
    • (선택 사항) 노드 그룹의 노드에 Kubernetes taint를 추가하거나 제거합니다. 추가된 taint는 NoSchedule, NoExecute, PreferNoSchedule의 효과를 가질 수 있습니다. 자세한 내용은 "레시피: 특정 노드에 Pod가 스케줄되는 것 방지"를 참고하세요.
    • (선택 사항) 노드 그룹 리소스에 태그를 추가하거나 제거합니다. 이 태그는 Amazon EKS 노드 그룹에만 적용됩니다. 서브넷이나 노드 그룹의 Amazon EC2 인스턴스 같은 다른 리소스로 전파되지 않습니다.
    • (선택 사항) Node Group update configuration을 편집합니다. Number 또는 Percentage를 선택합니다.
      • Number – 노드 그룹에서 병렬로 업데이트할 수 있는 노드 수를 선택하고 지정합니다. 이 노드는 업데이트 중 사용할 수 없습니다.
      • Percentage – 노드 그룹에서 병렬로 업데이트할 수 있는 노드 백분율을 선택하고 지정합니다. 이 노드는 업데이트 중 사용할 수 없습니다. 노드 그룹에 노드가 많을 때 유용합니다.
  6. 편집이 끝나면 Save changes를 선택합니다.

중요: 노드 그룹 구성을 업데이트할 때 NodegroupScalingConfig 수정은 Pod 중단 예산(PDBs)을 존중하지 않습니다. 노드 그룹 업데이트 프로세스(업그레이드 단계 중에 노드를 드레인하고 PDB를 존중함)와 달리, 스케일링 구성 업데이트는 Auto Scaling Group(ASG) 축소 호출을 통해 노드를 즉시 종료시킵니다. 이는 축소하는 대상 크기와 무관하게 PDB를 고려하지 않고 발생합니다. 즉, Amazon EKS 관리형 노드 그룹의 desiredSize를 줄이면 PDB를 존중하지 않고 노드가 종료되는 즉시 Pod가 축출됩니다.

관리형 노드 그룹 버전 롤백

클러스터 컨트롤 플레인을 이전 Kubernetes 버전으로 롤백해야 한다면, Kubernetes 버전 불일치 정책을 준수하도록 먼저 관리형 노드 그룹을 롤백해야 합니다. 워커 노드는 컨트롤 플레인보다 더 새로운 버전을 실행할 수 없습니다.

UpdateNodegroupVersion API를 이전 Kubernetes 버전으로 사용해 관리형 노드 그룹을 롤백할 수 있습니다.

aws eks update-nodegroup-version \
  --cluster-name my-cluster \
  --nodegroup-name my-nodegroup \
  --kubernetes-version 1.30 \
  --region us-west-2

노드 그룹 롤백은 업그레이드와 마찬가지로 구성한 업데이트 설정(maxUnavailable 또는 maxUnavailablePercentage)과 업데이트 전략(Rolling 또는 Force)을 존중합니다.

전체 클러스터 롤백 프로세스에 대한 자세한 내용은 "클러스터를 이전 Kubernetes 버전으로 롤백"을 참고하세요.

더 알아보기 (Learn more)