클러스터에 대한 관리형 노드 그룹 업데이트 - Amazon EKS

클러스터에 대한 관리형 노드 그룹 업데이트

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

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

  • Amazon EKS 클러스터의 Kubernetes 버전을 업데이트했으며 동일한 Kubernetes 버전을 사용하도록 노드를 업데이트하려고 합니다.

  • 관리형 노드 그룹에 새 AMI 릴리스 버전을 사용할 수 있습니다. AMI 버전에 대한 자세한 내용은 다음 섹션을 참조하세요.

  • 관리형 노드 그룹에 있는 인스턴스의 최소, 최대 또는 원하는 수를 조정하려고 합니다.

  • 관리형 노드 그룹의 인스턴스에서 Kubernetes 레이블을 추가하거나 제거하려고 합니다.

  • 관리형 노드 그룹에서 AWS 태그를 추가하거나 제거하려고 합니다.

  • 업데이트된 사용자 지정 AMI와 같은 구성 변경 사항이 있는 시작 템플릿의 새 버전을 배포해야 합니다.

  • Amazon VPC CNI 추가 기능의 버전 1.9.0 이상을 배포하고, 접두사 위임에 대해 추가 기능을 사용하도록 설정했으며, 노드 그룹의 새로운 AWS Nitro System 인스턴스가 크게 증가된 Pods 수를 지원하도록 했습니다. 자세한 내용은 접두사를 사용하여 Amazon EKS 노드에 추가 IP 주소 할당 단원을 참조하십시오.

  • Windows 노드에 대해 IP 접두사 위임을 활성화했으며 노드 그룹의 새 AWS Nitro System 인스턴스가 크게 늘어난 수의 Pods를 지원하도록 하려고 합니다. 자세한 내용은 접두사를 사용하여 Amazon EKS 노드에 추가 IP 주소 할당 단원을 참조하십시오.

관리형 노드 그룹의 Kubernetes 버전에 대한 최신 AMI 릴리스 버전이 있는 경우 노드 그룹의 버전을 업데이트하여 최신 AMI 버전을 사용할 수 있습니다. 마찬가지로 클러스터에서 노드 그룹보다 최신 버전의 Kubernetes 버전을 실행 중인 경우 최신 AMI 릴리스 버전을 사용하여 클러스터의 Kubernetes 버전과 일치하도록 노드 그룹을 업데이트할 수 있습니다.

크기 조정 작업 또는 업데이트로 인해 관리형 노드 그룹의 노드가 종료되면 해당 노드의 Pods가 먼저 드레이닝됩니다. 자세한 내용은 노드 업데이트의 각 단계 이해 단원을 참조하십시오.

노드 그룹 버전 업데이트

다음 중 하나를 사용하여 노드 그룹 버전을 업데이트할 수 있습니다.

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

eksctl

eksctl를 사용하여 관리형 노드 그룹 업데이트

다음 명령을 사용하여 노드에 현재 배포된 동일한 Kubernetes 버전의 최신 AMI 릴리스로 관리형 노드 그룹을 업데이트합니다. 모든 예제 값을 자신의 값으로 바꾸세요.

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

시작 템플릿과 함께 배포된 노드 그룹을 새 시작 템플릿 버전으로 업그레이드하는 경우 이전 명령에 --launch-template-version version-number 을 추가합니다. 시작 템플릿은 시작 템플릿 을 사용하여 관리형 노드 사용자 지정에 설명된 요구 사항을 충족해야 합니다. 시작 템플릿에 사용자 지정 AMI 가 포함되어 있는 경우 해당 AMI가 AMI 지정의 요구 사항을 충족해야 합니다. 노드 그룹을 최신 버전의 시작 템플릿으로 업그레이드하면 지정된 시작 템플릿 버전의 새 구성과 일치하도록 모든 노드가 재활용됩니다.

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

노드 그룹을 컨트롤 플레인의 Kubernetes 버전과 동일한 버전으로 업그레이드할 수 있습니다. 예를 들어 Kubernetes 1.29을 실행하는 클러스터가 있는 경우 다음 명령을 사용하여 현재 Kubernetes 1.28을 실행 중인 작업자를 버전 1.29로 업그레이드할 수 있습니다.

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

AWS Management Console

AWS Management Console를 사용하여 관리형 노드 그룹 업데이트

  1. Amazon EKS 콘솔을 엽니다.

  2. 업데이트할 노드 그룹이 포함된 클러스터를 선택합니다.

  3. 하나 이상의 노드 그룹에 사용 가능한 업데이트가 있는 경우 페이지 상단에 사용 가능한 업데이트를 알리는 상자가 나타납니다. Compute(컴퓨팅) 탭을 선택하면 사용 가능한 업데이트가 있는 노드 그룹에 대한 Node groups(노드 그룹) 테이블의 AMI release version(AMI 릴리스 버전) 열에 Update now(지금 업데이트)가 표시됩니다. 노드 그룹을 업데이트하려면 Update now(지금 업데이트)를 선택합니다.

    사용자 지정 AMI와 함께 배포된 노드 그룹에 대한 알림이 표시되지 않습니다. 노드가 사용자 지정 AMI와 함께 배포된 경우 다음 단계를 완료하여 새로운 업데이트된 사용자 지정 AMI를 배포합니다.

    1. AMI의 새 버전을 생성합니다.

    2. 새 AMI ID를 사용하여 새 시작 템플릿 버전을 생성합니다.

    3. 노드를 새 버전의 시작 템플릿으로 업그레이드합니다.

  4. Update node group version(노드 그룹 버전 업데이트) 대화 상자에서 다음과 같은 옵션을 활성화하거나 비활성화합니다.

    • Update node group version(노드 그룹 버전 업데이트) - 사용자 지정 AMI를 배포했거나 Amazon EKS에 최적화된 AMI가 현재 클러스터의 최신 버전에 있는 경우에는 이 옵션을 사용할 수 없습니다.

    • Change launch template version(시작 템플릿 버전 변경) - 노드 그룹이 사용자 지정 시작 템플릿 없이 배포된 경우에는 이 옵션을 사용할 수 없습니다. 사용자 지정 시작 템플릿을 사용하여 배포된 노드 그룹의 시작 템플릿 버전만 업데이트할 수 있습니다. 노드 그룹을 업데이트할 Launch template version(시작 템플릿 버전)을 선택합니다. 노드 그룹이 사용자 지정 AMI로 구성된 경우 선택한 버전에서도 AMI를 지정해야 합니다. 최신 버전의 시작 템플릿으로 업그레이드하면 지정된 시작 템플릿 버전의 새 구성과 일치하도록 모든 노드가 재활용됩니다.

  5. Update strategy(전략 업데이트)의 경우 다음과 같은 옵션 중 하나를 선택합니다.

    • 롤링 업데이트(Rolling update) - 이 옵션은 클러스터에 대한 Pod 중단 예산을 고려합니다. Pod 중단 예산 문제로 인해 Amazon EKS에서 이 노드 그룹에서 실행 중인 Pods를 적절하게 드레이닝할 수 없는 경우 업데이트에 실패합니다.

    • 강제 업데이트(Force update) - 이 옵션은 Pod 중단 예산을 따르지 않습니다. 노드 재시작을 강제로 적용하여 Pod 중단 예산 문제와 관계없이 업데이트가 수행됩니다.

  6. 업데이트를 선택합니다.

노드 그룹 구성 편집

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

  1. Amazon EKS 콘솔을 엽니다.

  2. 편집할 노드 그룹이 포함된 클러스터를 선택합니다.

  3. 컴퓨팅(Compute) 탭을 선택합니다.

  4. 편집할 노드 그룹을 선택한 다음에 Edit(편집)를 선택합니다.

  5. (선택 사항) Edit node group(노드 그룹 편집) 페이지에서 다음을 수행합니다.

    1. Node group scaling configuration(노드 그룹 조정 구성)을 편집합니다.

      • 원하는 크기 - 관리형 노드 그룹에서 유지해야 하는 현재 노드 수를 지정합니다.

      • 최소 크기 - 관리형 노드 그룹이 확장될 수 있는 최소 노드 수를 지정합니다.

      • 최대 크기 - 관리형 노드 그룹이 확장될 수 있는 최대 노드 수를 지정합니다. 노드 그룹에서 지원되는 최대 노드 수는 Amazon EKS 및 Fargate Service Quotas 보기 및 관리 섹션을 참조하세요.

    2. (선택 사항) Kubernetes 레이블을 노드 그룹의 노드에 추가하거나 제거합니다. 여기에 표시된 레이블은 Amazon EKS에 적용한 레이블일 뿐입니다. 여기에 표시되지 않는 노드에 다른 레이블이 존재할 수 있습니다.

    3. (선택 사항) Kubernetes테인트를 노드 그룹의 노드에 추가하거나 제거합니다. 추가된 테인트는 NoSchedule , NoExecute 또는 PreferNoSchedule 중 하나의 효과를 가질 수 있습니다. 자세한 내용은 특정 노드에서 Pods가 스케줄링되지 않도록 방지 단원을 참조하십시오.

    4. (선택 사항) 태그를 추가하거나 노드 그룹 리소스에서 제거합니다. 이러한 태그는 Amazon EKS 노드 그룹에만 적용됩니다. 노드 그룹의 서브넷 또는 Amazon EC2 인스턴스 등의 다른 리소스로 전파되지 않습니다.

    5. (선택 사항) 노드 그룹 업데이트 구성(Node Group update configuration)을 편집합니다. [숫자(Number)] 또는 [비율(Percentage)]을 선택합니다.

      • 숫자(Number) - 노드 그룹에서 병렬로 업데이트할 수 있는 노드 수를 선택하고 지정합니다. 이러한 노드는 업데이트 중에 사용할 수 없습니다.

      • 비율(Percentage) - 노드 그룹에서 병렬로 업데이트할 수 있는 노드의 비율을 선택하고 지정합니다. 이러한 노드는 업데이트 중에 사용할 수 없습니다. 이 기능은 노드 그룹에 많은 노드가 있는 경우에 유용합니다.

    6. 편집을 마쳤으면 변경 사항 저장(Save changes)을 선택합니다.

중요

노드 그룹 구성을 업데이트할 때 NodegroupScalingConfig를 수정해도 Pod 중단 예산(PDB)이 반영되지 않습니다. 업그레이드 단계에서 노드를 소모시키고 PDB를 고려하는 노드 그룹 업데이트 프로세스와 달리, 스케일링 구성을 업데이트하면 Auto Scaling 그룹(ASG) 스케일 다운 호출을 통해 노드가 즉시 종료됩니다. 이는 스케일 다운하려는 대상 크기와 상관없이 PDB를 고려하지 않고 이루어집니다. 즉, Amazon EKS 관리형 노드 그룹의 desiredSize를 줄이면 Pods는 PDB를 적용하지 않고 노드가 종료되는 즉시 제거됩니다.