관리형 노드 그룹 업데이트 - 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 EC2 노드에 사용 가능한 IP 주소의 양 늘리기을 참조하십시오.

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

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

노드 그룹 버전 업데이트

eksctl 또는 AWS Management Console을 사용하여 노드 그룹 버전을 업데이트할 수 있습니다. 노드 그룹을 업데이트하는 데 사용할 도구 이름이 있는 탭을 선택합니다. 업데이트하는 버전은 컨트롤 플레인 버전보다 이후일 수 없습니다.

eksctl

eksctl이 있는 노드 그룹 버전을 업데이트하려면

  • 다음 명령을 사용하여 노드에 현재 배포된 동일한 Kubernetes 버전의 최신 AMI 릴리스로 관리형 노드 그룹을 업데이트합니다. example value를 고유한 값으로 바꿉니다.

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

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

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

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

    eksctl upgrade nodegroup \ --name=node-group-name \ --cluster=my-cluster \ --kubernetes-version=1.23
AWS Management Console

AWS Management Console이 있는 노드 그룹 버전을 업데이트하려면

  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

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

  3. 하나 이상의 노드 그룹에 사용 가능한 업데이트가 있는 경우 페이지 상단에 사용 가능한 업데이트를 알리는 상자가 나타납니다. 컴퓨팅(Compute) 탭을 선택하면 사용 가능한 업데이트가 있는 노드 그룹에 대한 노드 그룹(Node Groups) 테이블의 AMI 릴리스 버전(AMI release version) 열에 지금 업데이트(Update now)가 표시됩니다. 노드 그룹을 업데이트하려면 [지금 업데이트(Update now)]를 선택합니다. 사용자 지정 AMI와 함께 배포된 노드 그룹에 대한 알림이 표시되지 않습니다. 노드가 사용자 지정 AMI와 함께 배포된 경우 다음 단계를 완료하여 새로운 업데이트된 사용자 지정 AMI를 배포합니다.

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

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

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

  4. [노드 그룹 버전 업데이트(Update Node Group version)] 페이지에서 다음을 선택합니다.

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

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

  5. [전략 업데이트(Update strategy)]에서 다음 옵션 중 하나를 선택한 후 [업데이트(Update)]를 선택합니다.

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

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

노드 그룹 구성 편집

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

노드 그룹 구성을 편집하려면

  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

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

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

  4. 편집할 노드 그룹을 선택하고 편집을 선택합니다.

  5. (선택 사항) [노드 그룹 편집(Edit node group)] 페이지에서 [그룹 구성(Group configuration)]을 편집합니다.

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

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

    • Kubernetes 테인트 - 노드 그룹의 노드에 Kubernetes 테인트를 추가하거나 제거합니다. 추가된 테인트는 No_Schedule,Prefer_No_Schedule 또는 No_Execute 중 하나의 효과를 가질 수 있습니다.

  6. (선택 사항) [노드 그룹 편집(Edit node group)] 페이지에서 [그룹 크기(Group size)]를 편집합니다.

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

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

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

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

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

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

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