Upgrade Managed Node Group

업그레이드의 마지막 절차로 노드 그룹에 대한 업그레이드를 수행합니다.

관리형 노드 그룹의 작업 방식은 다음과 같습니다.

  1. Amazon EKS는 노드 그룹과 연결된 자동 스케일링 그룹에 대한 새 Amazon EC2 실행 템플릿 버전을 만듭니다. 새 템플릿은 업데이트에 대상 AMI를 사용합니다.

  2. 최신 시작 템플릿을 새 AMI와 함께 사용하도록 자동 스케일링 그룹이 업데이트됩니다.

  3. 자동 스케일링 그룹 최대 크기 및 원하는 크기는 자동 스케일링 그룹이 배포된 영역의 가용성 영역 수의 최대 2배까지 증가합니다. 이렇게 하면 노드 그룹이 배포된 영역의 모든 가용성 영역에 하나 이상의 새 인스턴스가 표시됩니다.

  4. Amazon EKS는 노드 그룹의 노드에서 eks.amazonaws.com/nodegroup-image 레이블을 확인하고 eks.amazonaws.com/nodegroup=unschedulable을 적용합니다. NoSchedule은 최신 AMI ID로 레이블이 지정되지 않은 노드 그룹의 모든 노드에서 손상됩니다. 이렇게 하면 이전에 실패한 업데이트에서 이미 업데이트된 노드가 오염되지 않습니다.

  5. Amazon EKS는 노드 그룹에서 노드를 임의로 선택하고 노드 그룹에서 모든 포드를 제거합니다.

  6. 모든 포드가 제거되면 Amazon EKS가 노드의 전원을 차단합니다. 이렇게 하면 서비스 컨트롤러가 이 노드에 새 요청을 보내지 않고 정상 활성 노드 목록에서 이 노드를 제거합니다.

  7. Amazon EKS는 코드화된 노드의 자동 스케일링 그룹에 종료 요청을 보냅니다.

  8. 5-7단계는 노드 그룹에 이전 버전의 실행 템플릿으로 배포된 노드가 없을 때까지 반복됩니다.

  9. 자동 스케일링 그룹 최대 크기 및 원하는 크기가 1씩 줄어들어 업데이트 전 값으로 돌아갑니다.

첫 번째 단계는 클러스터 autoscaler을 사용하는 경우에만 적용됩니다. 업그레이드 중에 노드 scaling 동작이 충돌하는 것을 원치 않으므로 아래 명령을 사용합니다. 이 프로세스 중에 노드 확장 작업을 일시 중단하려면 노드 확장 작업을 0으로 확장해야 합니다. (AutoScaling-CA 구성하기 실습을 하지 않은 경우 이 단계를 건너뛸 수 있습니다.)

kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system

아래 명령어로 관리형 노드 업그레이드를 수행합니다.

eksctl upgrade nodegroup --name=nodegroup --cluster=eksworkshop-eksctl --kubernetes-version=1.21

터미널을 추가로 열어서 진행 상태를 모니터링 합니다.

kubectl get nodes --watch

위의 업그레이드 절차에 설명된 대로 새 노드가 올라오고(각 AZ에 3개씩), 이전 노드 중 하나가 STATUS SchedulingDisabled로 전환된 다음, 모든 이전 노드가 사라질 때까지 해당 노드가 사라지고 다른 노드가 새로 생성되어 교체됩니다. 그런 다음 노드 6개에서 원래 노드 3개로 축소됩니다.

진행 과정

Last updated