View a markdown version of this page

EKS Auto Mode 클러스터 롤백 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

EKS Auto Mode 클러스터 롤백

EKS Auto Mode를 실행하는 클러스터에서 버전 롤백을 시작하면 Amazon EKS는 컨트롤 플레인을 되돌리기 전에 Auto Mode 워커 노드의 롤백을 자동으로 관리합니다. 이 페이지에서는 Auto Mode 노드 롤백의 작동 방식, 속도를 높이는 방법, 필요한 경우 취소하는 방법을 설명합니다.

사전 조건, 인사이트 검사, 전체 롤백 프로세스를 포함하여 버전 롤백에 대한 일반적인 정보는 클러스터를 이전 Kubernetes 버전으로 롤백 섹션을 참조하세요.

Auto Mode 롤백 작동 방식

EKS Auto Mode는 Karpenter 기반 시스템을 사용하여 Kubernetes 버전 업그레이드 및 롤백 등 워커 노드 인프라를 관리합니다. Auto Mode가 활성화된 클러스터에서 이전(N-1) 버전으로 UpdateClusterVersion을 직접적으로 호출하면 EKS는 다음 시퀀스를 수행합니다.

  1. 사전 조건을 검증하고 롤백 준비 인사이트를 새로 고칩니다.

  2. 구성된 중단 제어를 준수하면서 Karpenter 기반 시스템을 사용하여 노드를 원하는 롤백 버전으로 드리프트합니다.

  3. 모든 노드가 원하는 롤백 버전에 대한 Kubernetes 버전 차이 정책 내에 있으면 EKS는 인사이트를 다시 검사하고 컨트롤 플레인 롤백을 진행합니다.

컨트롤 플레인은 현재(최신) 버전을 유지하며 노드가 롤백되는 동안 트래픽을 정상적으로 계속 처리합니다. Kubernetes 버전 차이 정책을 사용하면 노드가 kube-apiserver보다 최대 3개의 마이너 버전까지 실행할 수 있으므로 이 중간 상태가 유효합니다.

참고

클러스터를 이전 Kubernetes 버전으로 롤백 섹션에 설명된 것과 동일한 API 및 프로세스를 사용하여 롤백을 트리거합니다. Auto Mode 노드 롤백을 위한 별도의 API는 없습니다.

참고

노드 롤백 단계(2단계)는 중단 제어에 따라 몇 분에서 7일까지 걸릴 수 있습니다. 구성된 제한 시간 내에 노드 롤백이 완료되지 않으면 업데이트가 실패로 표시됩니다.

참고

롤백이 진행되는 동안에는 다른 고객 트리거 컨트롤 플레인 업데이트가 차단됩니다. 다른 업데이트를 수행하려면 먼저 CancelUpdate API를 사용하여 롤백을 취소합니다.

롤백 중 클러스터 상태

Phase(단계) 클러스터 상태 진행 상황

노드 롤백 진행 중

ACTIVE

Karpenter가 노드를 이전 버전 AMI로 바꾸고 있습니다. 컨트롤 플레인이 정상이고 현재 버전에서 트래픽을 처리합니다.

컨트롤 플레인 롤백

UPDATING

API 서버 및 컨트롤 플레인 구성 요소가 이전 버전으로 되돌아가고 있습니다.

롤백 완료

ACTIVE

클러스터가 완전히 이전 버전으로 전환되었습니다.

클러스터 상태는 노드 롤백 단계에서 ACTIVE로 유지됩니다. ListUpdates 또는 DescribeUpdate를 사용하여 롤백이 진행 중인지 확인합니다. Amazon EKS 콘솔에서 클러스터로 이동하여 업데이트 기록 탭을 열고 롤백과 연결된 업데이트 ID의 상태를 확인합니다.

롤백 중에 개별 노드 진행 상황을 추적하려면 Auto Mode 노드의 Kubernetes 버전을 확인하세요.

kubectl get nodes -l karpenter.sh/nodepool=<nodepool-name> -o wide

중단 제어

Auto Mode 롤백은 기존의 모든 중단 제어를 준수합니다. 이러한 제어는 노드를 교체할 수 있는 속도를 결정하며 롤백 기간에 상당한 영향을 미칠 수 있습니다.

NodePool 중단 예산

NodePool 중단 예산은 동시에 중단할 수 있는 노드 수를 제어합니다. 롤백 중에 Karpenter는 노드를 이전 버전으로 드리프트할 때 이러한 예산을 준수합니다.

  • 드리프트 예산이 nodes: 0이면 롤백이 무기한 차단됩니다. 그러면 ERROR 인사이트가 트리거됩니다.

  • 제한적 예산(예: nodes: 1)은 롤백 속도를 늦추지만 진행을 허용합니다.

노드의 10%를 한 번에 교체할 수 있는 중단 예산이 지정된 예제 NodePool:

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: disruption: budgets: - nodes: "10%" reasons: - Drifted

NodePool 중단 예산 구성에 대한 자세한 내용은 EKS Auto Mode용 노드 풀 생성Karpenter 중단 예산을 참조하세요.

PodDisruptionBudgets

노드 교체 중에 Kubernetes PodDisruptionBudgets가 준수됩니다. PDB가 포드 제거를 방지하는 경우 노드 중단이 최대 TerminationGracePeriod까지 지연됩니다.

  • maxUnavailable: 0이 설정된 PDB는 노드 중단을 지연시킵니다. 그러면 WARNING 인사이트가 트리거됩니다.

  • PDB는 롤백을 영구적으로 차단하지 않지만 롤백 속도를 크게 늦출 수 있습니다.

자세한 내용은 PDB로 중요한 워크로드 보호Kubernetes PDB documentation을 참조하세요.

Do-not-disrupt 주석

노드 또는 포드에서 karpenter.sh/do-not-disrupt 주석을 설정할 수 있습니다.

노드: 노드 중단을 무기한 차단합니다. 그러면 ERROR 인사이트가 트리거되며 해당 노드에서 롤백을 진행하기 전에 제거해야 합니다.

포드: 최대 TerminationGracePeriod까지 노드 중단을 지연합니다. 이렇게 하면 WARNING 인사이트가 트리거되지만 롤백이 영구적으로 차단되지는 않습니다.

Karpenter 중단 동작에 대한 자세한 내용은 Karpenter disruption documentation을 참조하세요.

롤백 속도 향상

롤백이 예상보다 오래 걸리는 경우 롤백이 진행되는 동안 중단 제어를 조정할 수 있습니다.

NodePool 중단 예산 상향

더 많은 동시 노드 교체를 허용하도록 NodePool 리소스를 편집합니다.

kubectl edit nodepool default

예산을 더 높은 값으로 변경합니다.

spec: disruption: budgets: - nodes: "50%" reasons: - Drifted

노드에서 do-not-disrupt 주석 제거

주석이 있는 노드를 나열하고 주석을 제거합니다.

# List nodes with the annotation kubectl get nodes -o json | jq '.items[] | select(.metadata.annotations["karpenter.sh/do-not-disrupt"] == "true") | .metadata.name' # Remove from a specific node kubectl annotate node <node-name> karpenter.sh/do-not-disrupt-

PodDisruptionBudgets 조정

PDB가 포드 제거 속도를 늦추는 경우 일시적으로 조정합니다.

kubectl edit pdb <pdb-name> -n <namespace>
주의

중단 제어를 조정하면 애플리케이션 가용성 보장에 영향을 미칩니다. 프로덕션에서 중단 제어를 변경하기 전에 그 영향을 이해해야 합니다.

중단 제어 관리에 대한 자세한 내용은 Amazon EKS Auto Mode에서 포드 및 노드 중단 방지를 참조하세요.

롤백 취소

롤백은 노드가 롤백되는 동안에만 취소 가능 상태입니다. 이 단계에서 CancelUpdate를 사용하여 작업을 중지할 수 있습니다.

aws eks cancel-update \ --name my-cluster \ --update-id <update-id> \ --region us-west-2

취소 동작

속성 동작

취소 가능한 경우

Auto Mode 노드가 롤백되는 동안에만(컨트롤 플레인 롤백이 시작되기 전)

시맨틱

최선의 노력 기준 중지입니다. 노드 롤백 작업을 중지합니다.

중단 중 노드

노드가 취소 시 중단 중이면 현재 작업이 완료됩니다.

취소 후 상태

전환을 Cancelling에서 Cancelled로 업데이트합니다.

클러스터 상태

전체적으로 ACTIVE가 유지됩니다.

취소 후

취소에 성공하면 노드가 평소와 같이 현재 클러스터 버전으로 드리프트합니다. 업데이트가 Cancelling에서 Cancelled로 전환됩니다.

취소 후 즉시 다음을 수행할 수 있습니다.

  • 롤백을 다시 시도합니다(7일 자격 기간 내에 있는 경우).

  • 다른 클러스터 업데이트를 수행합니다.

  • 클러스터를 현재 버전에 그대로 둡니다.

취소가 불가능한 경우

노드 롤백이 이미 완료되고 컨트롤 플레인 롤백이 시작된 경우 또는 업데이트가 Successful 또는 Failed 상태로 이미 완료된 경우 취소가 실패합니다.

참고

CloudFormation 및 Terraform은 CancelUpdate API를 직접 지원하지 않습니다. IaC를 통해 시작된 롤백을 취소해야 하는 경우 사용자가 직업 API를 직접적으로 호출해야 합니다.

롤백 제한 시간

Auto Mode 노드 롤백에는 rollbackConfigtimeoutMinutes 파라미터로 제어되는 구성 가능한 제한 시간이 있습니다. 기본 제한 시간은 720분(12시간)입니다. 120분(2시간)에서 10,080분(7일) 사이의 값을 설정할 수 있습니다. 제한 시간은 최소 바인딩 속성입니다. 즉, 지정한 시간보다 빠르지 않게 발생하지만 그 직후에 발생할 수 있습니다.

aws eks update-cluster-version \ --name my-cluster \ --kubernetes-version 1.30 \ --rollback-config timeoutMinutes=1440 \ --region us-west-2

모든 노드가 지정된 제한 시간 내에 롤백을 완료하지 않은 경우:

  1. 롤백이 시간 초과됩니다.

  2. 노드가 현재 클러스터 버전으로 다시 드리프트하기 시작합니다.

  3. 컨트롤 플레인이 현재 버전을 유지합니다(롤백되지 않음).

  4. 업데이트 상태가 Failed로 전환됩니다.

시간 초과 후 원래 업그레이드로부터 7일 롤백 자격 기간 내에 있는 경우 롤백을 다시 시도할 수 있습니다. 실제로는 노드 롤백이 7일에 시간 초과되는 경우 롤백 자격 기간도 모두 7일이므로 만료되었을 것입니다.

시간 초과를 방지하려면 롤백을 시작하기 전에 롤백 준비 인사이트를 검토하세요. 이러한 인사이트는 노드 롤백 프로세스를 지연시킬 수 있는 중단 예산 또는 주석에 대해 경고합니다.

--force 플래그 및 Auto Mode

UpdateClusterVersion--force 플래그는 클러스터 인사이트 검사만 우회합니다. Auto Mode 노드 중단 동작에는 영향을 주지 않습니다.

--force를 지정하더라도

  • NodePool 중단 예산은 계속 준수됩니다.

  • PodDisruptionBudgets는 계속 준수됩니다.

  • Do-not-disrupt 주석은 계속 준수됩니다.

  • 7일 노드 롤백 제한 시간은 계속 준수됩니다.

노드 롤백 속도를 높이는 유일한 방법은 중단 제어 자체를 조정하는 것입니다. 세부 정보는 롤백 속도 향상 섹션을 참조하세요.

IaC 제한 시간 충돌

코드형 인프라 도구에는 Auto Mode 롤백 기간과 충돌할 수 있는 제한 시간이 있습니다. CloudFormation은 리소스당 최대 36시간을 허용합니다. 작업이 시간 초과되면 CloudFormation은 이를 no-op로 취급하여 클러스터가 템플릿이 실제 클러스터 버전을 반영하지 않는 드리프트 상태로 남겨질 수 있습니다. 버전 롤백을 명시적으로 시작해야 합니다. Terraform Enterprise/Cloud의 제한 시간은 약 24시간이지만 클라이언트 측 제한 시간은 자격 증명 만료 및 기타 요인에 따라 다를 수 있습니다.

롤백 기간을 IaC 도구에 맞추려면 rollbackConfigtimeoutMinutes 파라미터를 사용하여 적절한 제한 시간을 설정합니다. IaC 도구가 시간 초과되면 직접 CancelUpdate API를 사용하여 제어를 다시 획득합니다. 중단 예산이 제한적인 경우 IaC 대신 CLI 또는 API를 통해 직접 롤백을 시작하는 것이 좋습니다.

노드 롤백 중 시스템 업데이트

Auto Mode 노드가 롤백되는 동안 EKS는 컨트롤 플레인의 보안 및 가용성을 계속 유지합니다.

노드 롤백이 진행되는 동안 고객 트리거 업데이트(예: UpdateClusterVersion 또는 UpdateClusterConfig)는 차단됩니다. 우선순위가 높은 업데이트를 수행해야 하는 경우 먼저 CancelUpdate를 사용하여 롤백을 취소한 다음 업데이트를 수행하고 자격 기간 내에 있는 경우 롤백을 다시 시작합니다.