다음을 통해 공유

AKS 노드풀 이미지 버전 업그레이드 작업시 기존 노드를 유지하고 싶습니다

최동희 20 평판 포인트
2026-05-13T01:12:53.39+00:00

안녕하세요.

일반적인 노드풀 이미지 업그레이드를 진행하면 max surge에 따른 임시 노드풀 생성 후 drain을 이용한 작업이 진행되는걸로 알고 있습니다. 제가 아는 순서로는 아래와 같습니다.

  1. nodepool image upgrade 시작.
  2. surge에 맞게 임시 노드 생성. 여기서는 1개 생성.
  3. 기존 노드에서 임시 노드로 drain.
  4. 기존 노드 이미지 버전 업그레이드.
  5. 임시 노드에서 기존 노드로 drain.
  6. 임시 노드 제거.

혹시 이런 순서가 아니라면 정정 부탁드립니다.

제가 원하는건 여기서 기존 노드는 유지하고 새로 생성하는 노드만 업그레이드된 버전을 적용할 수 있을지 입니다.

사유는 drain할 때 여러가지 이유로 pod가 넘어가지 않을 경우를 대비하고자 합니다.

우선 docs를 검토해봤을 때는 불가능한걸로 생각되나, 혹시나 실무에서는 가능한 부분일지 자문을 구하고자 질문을 올립니다.

다른 방법으론 노드풀 자체를 수동으로 동일하게 새로 만들고, 신규 노드풀의 노드로 pod를 배포하는 방법도 생각해봤습니다.

다만, 이 방법은 직접하는터라 실수가 발생할 수도 있고, 특히 subnetIP가 부족한 환경에선 사용하긴 어려운 방법으로 생각됩니다.

요약하자면 아래 3가지 방법을 고민 중입니다.

  1. 제공되는 방법으로 노드풀 이미지 업그레이드. (기존 노드 유지 불가)
  2. 같은 노드풀 안에서 최신 버전 이미지 노드를 생성하여 drain. (가능여부 모름)
  3. 동일형상 노드풀 자체를 생성하여 노드풀 끼리 drain. (다른 방법보다 리소스 많이 필요)

의견 부탁드립니다.

감사합니다.

Azure Kubernetes Service
Azure Kubernetes Service

서버리스 Kubernetes, 통합된 연속 통합 및 지속적인 업데이트 환경, 엔터프라이즈급 보안 및 거버넌스를 제공하는 Azure 서비스입니다.


질문 작성자가 수락한 답변

Himanshu Shekhar 6,710 평판 포인트 Microsoft 외부 직원 중재자
2026-05-13T01:54:47.82+00:00

안녕하세요 동희님,

문의하신 “기존 노드는 그대로 두고 새로 생성되는 노드만 업그레이드된 이미지로 띄울 수 있느냐”에 대해 정리드리면, 현재 AKS가 제공하는 az aks nodepool upgrade --node-image-only 흐름은 아래와 같이 동작하며 특정 인스턴스(기존 노드)만 업그레이드를 제외하는 옵션은 없습니다.

  1. max-surge 만큼(예: 기본 1) 새 노드를 VMSS로 생성
  2. 기존 노드들 중 drain 가능한 순서대로 pod를 옮기며 하나씩 교체(reimage)
  3. 교체된 노드가 준비되면 다음 노드를 교체…를 반복
  4. 완료 후 max-surge 수만큼 생성된 임시 노드 삭제

즉, 노드풀 레벨에서 업그레이드는 “새 노드 생성 → 기존 노드 교체 → 교체된 노드 삭제” 과정을 거치고, 이 과정 중에는 기존 노드를 완전히 유지만 하는 모드는 제공되지 않습니다.

따라서 제안하신 세 가지 방법 중 실무에서 활용 가능한 패턴은 다음과 같습니다.

  1. 기본 제공 방식으로 업그레이드 – 기존 노드가 단계별로 교체되며, “기존 노드 완전 유지”는 불가능 – PodDisruptionBudget(PDB), 충분한 max-surge 설정(>0)으로 무중단에 가깝게 운영
  2. 동일 노드풀 내에서 ‘새 노드만’ 올리고 기존은 그대로 두는 방법 – 불가능. 업그레이드 커맨드는 VMSS의 모든 인스턴스 교체를 전제로 함
  3. 신규 노드풀(blue) 생성 → 워크로드 마이그레이션 → 기존 노드풀 삭제 (green) – 가장 안전하게 이미지 변경을 검증하면서 전환 가능 – subnet IP 부족 등의 리소스 제약이 있다면 사전에 quota 확인 필요

종합하면, “2번”은 AKS가 지원하지 않는 기능이어서 선택할 수 없고, “3번 blue/green 방식”을 추천드립니다.

az aks nodepool add --name newpool --node-image-only …

• 새 노드풀에 워크로드가 정상 동작하는지 확인

kubectl drain oldnodepool → 워크로드 이관 → az aks nodepool delete oldpool

추가로 무중단 전환을 위해 아래를 같이 고려해 보세요.

• 충분한 max-surge(예: 100% surge) 설정

• PodDisruptionBudget(PDB) 적용

• 필요하다면 우선순위가 낮은 워크로드부터 순차 이동

도움이 되셨길 바라며, 추가로 알려주시면 더 도와드리겠습니다.

참고 문서

이 대답이 도움이 되었나요?

1명이 이 답변이 도움이 된다고 생각했습니다.

0 추가 답변

정렬 기준: 가장 유용함

답변

질문 작성자는 답변을 '승인됨'으로 표시하고, 중재자는 답변을 '추천됨'으로 표시할 수 있습니다. 이를 통해 사용자는 해당 답변이 작성자의 문제를 해결했다는 것을 알 수 있습니다.