Azure Kubernetes Service (AKS) 동일한 구성의 노드는 node 풀 그룹화됩니다. 노드 풀에는 애플리케이션을 실행하는 기본 VM(가상 머신)이 포함됩니다. 시스템 노드 풀과 사용자 노드 풀은 AKS 클러스터의 두 가지 서로 다른 노드 풀 모드입니다. 이 문서에서는 AKS에서 시스템 노드 풀을 관리하는 방법을 설명합니다. 여러 노드 풀을 사용하는 방법에 대한 자세한 내용은 노드 풀 만들기를 참조하세요.
-
시스템 노드 풀: 주요 목적은 다음과 같은
CoreDNSmetrics-server중요한 시스템 Pod를 호스트하는 것입니다. 시스템 노드 풀은 애플리케이션을 실행하는 데 사용하면 안 됩니다. 시스템 노드 풀은 Ubuntu Linux 또는 Azure Linux를 사용합니다. - 사용자 노드 풀: 기본 목적은 애플리케이션 Pod를 호스트하고 시스템 노드 풀에서 애플리케이션을 격리하는 것입니다. 이 격리는 애플리케이션이 클러스터의 시스템 노드 풀을 불안정하게 하는 것을 방지합니다. 사용자 노드 풀은 Ubuntu Linux, Azure Linux 또는 Windows 사용할 수 있습니다.
단일 시스템 노드 풀이 있는 프로덕션 AKS 클러스터에는 두 개 이상의 노드가 포함되어야 합니다. 단일 시스템 노드 풀이 있는 프로덕션 AKS 클러스터에 대한 권장 사항은 향상된 내결함성 및 가용성 영역을 위해 3개 이상의 노드를 갖는 것입니다. 예를 들어 az aks create 명령의 기본 노드 수는 3개이며 단일 Linux 시스템 노드 풀과 3개의 Linux 노드를 사용하여 새 클러스터를 만듭니다.
AKS 클러스터에 노드 풀이 하나만 있는 경우 시스템 노드 풀에서 애플리케이션 Pod를 예약할 수는 있지만 권장되지는 않습니다. 더 나은 솔루션은 애플리케이션에 대한 사용자 노드 풀을 만드는 것입니다.
시작하기 전에
Azure CLI 버전 2.3.1 이상을 설치하고 구성해야 합니다. 버전을 찾으려면 az --version 명령을 실행합니다. 설치 또는 업그레이드가 필요한 경우 Azure CLI를 참조하세요.
제한 사항
시스템 노드 풀을 지원하는 AKS 클러스터를 만들고 관리할 때 다음 제한 사항이 적용됩니다.
- AKS의 할당량, VM 크기 제한 사항 및 지역 가용성을 참조하세요.
- 노드 풀 모드를
2020-03-01설정하려면 API 버전 이상이 사용되어야 합니다. API 버전2020-03-01에서 만든 클러스터는 사용자 노드 풀만 포함하지만 업데이트 풀 모드 단계에 따라 시스템 노드 풀을 포함하도록 마이그레이션할 수 있습니다. - 노드 풀의 이름은 소문자 영숫자 문자만 포함할 수 있으며 소문자로 시작해야 합니다. Linux 노드 풀의 경우 길이가 1~12자 사이여야 합니다. Windows 노드 풀의 경우 길이는 1자에서 6자 사이여야 합니다.
- 노드 풀의 모드는 필수 속성이며 ARM 템플릿 또는 직접 API 호출을 사용할 때 명시적으로 설정되어 있어야 합니다.
시스템 및 사용자 노드 풀
시스템 노드 풀의 경우 AKS는 해당 노드에 레이블 kubernetes.azure.com/mode: system 을 자동으로 할당합니다. 따라서 AKS에서는 이 레이블을 포함하는 노드 풀에서 시스템 Pod를 예약하는 방식이 선호됩니다. 이 레이블은 시스템 노드 풀에서 애플리케이션 팟을 예약하지 못하도록 막지 않습니다. 그러나 잘못 구성되거나 불량한 애플리케이션 Pod가 실수로 시스템 Pod를 삭제하지 않도록 애플리케이션 Pod에서 중요한 시스템 Pod를 격리하는 것이 좋습니다.
전용 시스템 노드 풀을 만들어 이 동작을 적용할 수 있습니다.
CriticalAddonsOnly=true:NoSchedule taint를 사용하여 애플리케이션 포드가 시스템 노드 풀에 스케줄링되지 않도록 막을 수 있습니다.
시스템 노드 풀에 대한 제한은 다음과 같습니다.
- 시스템 노드 풀은 Pod의 최솟값 및 최댓값 수식에 설명된 대로 최소 30개 이상의 Pod를 지원해야 합니다.
- 시스템 풀은
osTypeLinux여야 합니다. - 사용자 노드 풀
osTypeLinux 또는 Windows 수 있습니다. - 시스템 풀에는 두 개 이상의 노드가 포함되어야 하지만 권장 사항은 3개의 노드입니다. 사용자 노드 풀은 0개 이상의 노드를 포함할 수 있습니다.
- 시스템 노드 풀에는 4개 이상의 vCPU 및 4GB 메모리의 VM SKU가 필요합니다.
- B 시리즈 VM은 시스템 노드 풀에 대해 지원되지 않습니다.
- 특히 대규모 클러스터(여러 CoreDNS Pod 복제본, 3~4개 이상의 추가 항목 등)의 경우 최소 8개의 vCPU로 구성된 최소 3개의 노드 또는 최소 16개의 vCPU로 구성된 2개의 노드가 권장됩니다(예: Standard_DS4_v2).
- 스폿 노드 풀에는 사용자 노드 풀이 필요합니다.
- 다른 시스템 노드 풀을 추가하거나 시스템 노드 풀인 노드 풀을 변경해도 시스템 Pod는 자동으로 이동되지 않습니다. 사용자 노드 풀로 변경하더라도 시스템 Pod는 동일한 노드 풀에서 계속 실행될 수 있습니다. 이전에 시스템 노드 풀이었던 시스템 노드 Pod를 실행하는 노드 풀을 삭제하거나 스케일 다운하면 해당 시스템 Pod는 원하는 일정에 따라 새 시스템 노드 풀에 다시 배포됩니다.
노드 풀에는 다음 작업을 수행할 수 있습니다.
- 전용 시스템 노드 풀 만들기(시스템 Pod를
mode:system의 노드 풀에 예약하는 방식 선호) - AKS 클러스터에서 수행할 다른 시스템 노드 풀이 있으면 시스템 노드 풀을 사용자 노드 풀로 변경합니다.
- 사용자 노드 풀을 시스템 노드 풀로 변경합니다.
- 사용자 노드 풀을 삭제합니다.
- 다른 시스템 노드 풀로 대체할 수 있는 경우, 시스템 노드 풀을 AKS 클러스터에서 삭제할 수 있습니다.
- AKS 클러스터에는 여러 시스템 노드 풀이 있을 수 있으며 하나 이상의 시스템 노드 풀이 필요합니다.
- 기존 노드 풀에서 여러 변경할 수 없는 설정을 변경하려는 경우 새 노드 풀을 만들어 이를 대체할 수 있습니다. 한 가지 예는 새 설정이 있는 새 노드 풀을
maxPods추가하고 이전 노드 풀을 삭제하는 것입니다. -
노드 선호도를 사용하여 노드 레이블에 따라 예약할 수 있는 노드를 요구하거나 기본 설정합니다.
key를kubernetes.azure.com으로 설정하고,operator를In으로 설정하고,values또는user의system를 YAML로 설정하면kubectl apply -f yourYAML.yaml을 사용하여 이 정의를 적용할 수 있습니다.
시스템 노드 풀로 새 AKS 클러스터 만들기
새 AKS 클러스터를 만들 때 초기 노드 풀은 기본적으로 System 유형의 모드로 설정됩니다.
az aks nodepool add로 새 노드 풀을 만들 때 모드 매개변수를 명시적으로 지정하지 않으면 해당 노드 풀이 사용자 노드 풀입니다.
이 문서에서 사용되는 명령의 리소스 그룹, 클러스터 이름 및 위치에 대한 변수를 만듭니다. 이 문서에서는 값을 지정하거나 사용자 고유의 값을 사용할 수 있습니다.
export RESOURCE_GROUP="myResourceGroup"
export CLUSTER_NAME="myAKSCluster"
export LOCATION="eastus"
export NEW_SYSTEM_NP="systempool"
export NEW_NODE_POOL="mynodepool"
다음 예제에서는 미국 동부 지역에 myResourceGroup이라는 리소스 그룹을 만듭니다.
az group create --name $RESOURCE_GROUP --location $LOCATION
az aks create 명령을 사용하여 AKS 클러스터를 만듭니다. 다음 예제에서는 두 개의 노드를 포함하는 하나의 전용 시스템 풀을 사용하여 myAKSCluster라고 명명된 클러스터를 만듭니다. 프로덕션 워크로드의 경우 노드가 3개 이상인 시스템 노드 풀을 사용해야 합니다. 이 작업을 완료하는 데 몇 분 정도 걸립니다.
az aks create --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --node-count 2 --generate-ssh-keys
기존 AKS 클러스터에 전용 시스템 노드 풀 추가
기존 AKS 클러스터에 하나 이상의 시스템 노드 풀을 추가할 수 있습니다. 사용자 노드 풀에서 애플리케이션 Pod를 예약하고 시스템 노드 풀을 중요한 시스템 Pod에만 헌정하는 것이 좋습니다. 이 분리는 불량 애플리케이션 Pod가 실수로 시스템 Pod를 삭제하는 것을 방지합니다. 시스템 노드 풀에 대해 CriticalAddonsOnly=true:NoScheduletaint로 이 동작을 적용합니다.
다음 명령은 3개의 노드가 있는 모드 유형의 System 전용 노드 풀을 추가합니다. 이 az aks nodepool add 명령은 기본적으로 3개의 노드를 추가하지만 매개 변수를 --node-count 사용하여 원하는 노드 수를 지정합니다.
az aks nodepool add \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_SYSTEM_NP \
--node-count 3 \
--node-taints CriticalAddonsOnly=true:NoSchedule \
--mode System
노드 풀의 세부 정보 표시
다음 명령으로 노드 풀의 세부 정보를 확인할 수 있습니다.
az aks nodepool show \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_SYSTEM_NP \
--query "{Count:count, Mode:mode, NodePool:name, NodeTaint:nodeTaints, ResourceGroup:resourceGroup}"
시스템 유형 모드는 시스템 노드 풀에 대해 정의되고, 사용자 유형 모드는 사용자 노드 풀에 대해 정의됩니다. 시스템 풀의 경우, nodeTaints 속성이 CriticalAddonsOnly=true:NoSchedule(으)로 설정되어 있는지 확인하십시오. 이렇게 하면 애플리케이션 파드가 이 노드 풀에 예약되지 않습니다.
{
"Count": 3,
"Mode": "System",
"NodePool": "systempool",
"NodeTaint": [
"CriticalAddonsOnly=true:NoSchedule"
],
"ResourceGroup": "myResourceGroup"
}
기존 클러스터 시스템 및 사용자 노드 풀 업데이트
참고 사항
API 이상 버전을 2020-03-01 사용하여 시스템 노드 풀 모드를 설정해야 합니다.
2020-03-01보다 오래된 API 버전에서 생성된 클러스터에는 결과적으로 사용자 노드 풀만 포함됩니다. 이전 클러스터에서 시스템 노드 풀 기능 및 이점을 받으려면 최신 Azure CLI 버전에서 다음 명령을 사용하여 기존 노드 풀의 모드를 업데이트합니다.
시스템 노드 풀과 사용자 노드 풀 모두에 대한 모드를 변경할 수 있습니다. AKS 클러스터에 다른 시스템 노드 풀이 이미 있는 경우에만 시스템 노드 풀을 사용자 노드 풀로 변경할 수 있습니다.
이 명령을 실행하여 새 시스템 모드 노드 풀을 만듭니다.
az aks nodepool add \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--node-count 3 \
--mode System
다음 명령을 사용하여 모드를 확인할 수 있습니다.
az aks nodepool show \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--query mode --output tsv
System
이 명령을 실행하여 시스템 노드 풀을 사용자 노드 풀로 변경합니다.
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--mode User
다음 명령을 사용하여 모드가 변경되었는지 확인할 수 있습니다.
az aks nodepool show \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--query mode --output tsv
User
이 명령을 실행하여 사용자 노드 풀을 시스템 노드 풀로 변경합니다.
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--mode System
이전 명령을 실행하여 모드가 변경되었는지 확인합니다.
시스템 노드 풀 삭제
참고 사항
API 버전 2020-03-01이전에 AKS 클러스터에서 시스템 노드 풀을 사용하려면 새 시스템 노드 풀을 추가한 다음 원래 기본 노드 풀을 삭제합니다.
노드 풀을 삭제하려면 AKS 클러스터에 시스템 노드 풀이 2개 이상 있어야 합니다.
az aks nodepool delete \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL
시스템 노드 풀을 삭제한 후에는 클러스터를 사용하여 만든 원래 시스템 노드 풀이 있어야 하며 섹션에서 만든 시스템 노드 풀은 기존 AKS 클러스터에 전용 시스템 노드 풀을 추가합니다.
az aks nodepool list \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--query "[].{Name:name, Mode:mode}" --output table
리소스 정리
AKS 클러스터의 리소스 그룹을 삭제하면 모든 클러스터 리소스와 관련된 노드 리소스 그룹(MC_)이 삭제됩니다.
클러스터를 삭제하려면 az group delete 명령을 사용하여 AKS 리소스 그룹을 삭제합니다.
az group delete --name $RESOURCE_GROUP --yes --no-wait
다음 단계
이 문서에서는 AKS 클러스터에서 시스템 노드 풀을 만들고 관리하는 방법을 배웠습니다. AKS 노드 풀을 시작하고 중지하는 방법에 대한 내용은 AKS 노드 풀 시작 및 중지를 참조하세요.