노드 구성을 사용자 지정하여 운영 체제(OS) 설정 또는 kubelet 매개 변수를 워크로드 요구 사항에 맞게 조정할 수 있습니다. AKS 클러스터를 만들거나 클러스터에 노드 풀을 추가할 때는 일반적으로 사용되는 OS 및 kubelet 설정의 하위 집합을 사용자 지정할 수 있습니다. 이 하위 집합 이외의 설정을 구성하려면 디먼 집합을 사용하여 노드에 대한 AKS 지원을 잃지 않고 필요한 구성을 사용자 지정합니다.
Prerequisites
서비스에서 새 설정 및 kubelet 매개 변수에 대한 지원을 추가하므로 미리 보기 기능 플래그 등록이 필요할 수 있습니다. 미리 보기 플래그가 필요한 경우 사용자 지정 노드 구성 매개 변수 참조 에서 호출합니다.
hardEvictionThreshold 및 kubeReserved kubelet 설정에 대한 프리뷰 요구 사항
중요
AKS 미리 보기 기능은 셀프 서비스에서 사용할 수 있습니다(옵트인 방식). 미리 보기는 "있는 그대로" 및 "사용 가능한 상태로" 제공되며 서비스 수준 계약 및 제한적 보증에서 제외됩니다. AKS 미리 보기의 일부는 고객 지원팀에서 최선을 다해 지원합니다. 따라서 이러한 기능은 프로덕션 용도로 사용할 수 없습니다. 자세한 내용은 다음 지원 문서를 참조하세요.
aks-preview Azure CLI 확장 설치
aks-preview 확장을 설치하려면 다음 명령을 실행합니다.
az extension add --name aks-preview다음 명령을 실행하여 최신 버전의 확장으로 업데이트합니다.
az extension update --name aks-preview
CustomNodeConfigPreview 미리 보기 kubeReserved 및 hardEvictionThreshold kubelet 설정을 사용하기 전에 Azure 구독에 기능 플래그를 등록합니다.
CustomNodeConfigPreview 기능 플래그 등록
CustomNodeConfigPreview명령을 사용하여 기능 플래그를 등록합니다az feature register.az feature register --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"상태가 Registered로 표시되는 데 몇 분 정도 걸립니다.
명령을 사용하여 등록 상태를 확인합니다
az feature show.az feature show --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"상태가 Registered로 표시되면 명령을 사용하여
az provider register리소스 공급자의 등록을 새로 고치세요.az provider register --namespace "Microsoft.ContainerService"
AKS 노드 풀에 대한 사용자 지정 노드 구성 파일 만들기
OS 및 kubelet 구성을 변경하려면 원하는 매개 변수와 설정을 사용하여 새 구성 파일을 만듭니다. 매개 변수의 값을 지정하지 않으면 기본값이 사용됩니다.
참고
다음 예제에서는 일반적인 구성 설정을 보여 줍니다. 워크로드 요구 사항을 충족하도록 설정을 수정합니다. 지원되는 사용자 지정 구성 매개 변수의 전체 목록은 AKS에 대한 사용자 지정 노드 구성 매개 변수를 참조하세요.
Kubelet 구성
다음 콘텐츠가 포함된 linuxkubeletconfig.json 파일을 만듭니다.
{
"cpuManagerPolicy": "static",
"cpuCfsQuota": true,
"cpuCfsQuotaPeriod": "200ms",
"imageGcHighThreshold": 90,
"imageGcLowThreshold": 70,
"topologyManagerPolicy": "best-effort",
"allowedUnsafeSysctls": [
"kernel.msg*",
"net.*"
],
"failSwapOn": false
}
Linux 노드 풀에서 노드 사용자 지정 미리 보기 kubelet 설정을 사용하려면 kubelet 구성 파일에 kubeReserved 및 hardEvictionThreshold를 추가하세요. 다음 예제에서는 Kubernetes 시스템 디먼에 대한 CPU 및 메모리를 예약하고 kubelet 하드 제거 임계값을 구성합니다.
{
"cpuManagerPolicy": "static",
"kubeReserved": {
"cpuMillicores": 200,
"memoryMB": 1024
},
"hardEvictionThreshold": {
"memoryAvailable": "20%",
"nodeFsAvailable": "10%",
"nodeFsInodesFree": "5%"
}
}
Linux 노드 풀에서만 kubeReserved 및 hardEvictionThreshold을 사용하세요. 두 설정 모두 기능 플래그가 CustomNodeConfigPreview 필요합니다.
OS 구성
다음 콘텐츠가 포함된 linuxosconfig.json 파일을 만듭니다.
{
"transparentHugePageEnabled": "madvise",
"transparentHugePageDefrag": "defer+madvise",
"swapFileSizeMB": 1500,
"sysctls": {
"netCoreSomaxconn": 163849,
"netIpv4TcpTwReuse": true,
"netIpv4IpLocalPortRange": "32000 60000"
}
}
사용자 지정 구성 파일을 사용하여 AKS 클러스터 만들기
참고
새 AKS 클러스터를 만들 때 사용자 지정 구성 파일을 사용할 때 다음 정보를 유의하세요.
- 클러스터를 만들 때 구성을 지정하는 경우 구성은 초기 노드 풀의 노드에만 적용됩니다. 클러스터는 JSON 파일에 구성되지 않은 설정에 대한 기본값을 유지합니다.
-
CustomLinuxOsConfig는 Windows OS 유형에 대해 지원되지 않습니다. - 미리 보기
kubeReserved및hardEvictionThresholdkubelet 설정은 Linux 노드 풀에 대해서만 지원되며 기능 플래그가CustomNodeConfigPreview필요합니다. 클러스터 또는 노드 풀을 만들기 전에 미리 보기 요구 사항kubeReserved및hardEvictionThresholdkubelet 설정 의 등록 단계를 완료합니다.
az aks create 명령을 실행하고 --kubelet-config 및 --linux-os-config 매개 변수에 대한 구성 파일을 지정하여 사용자 지정 구성 파일을 사용해 새 클러스터를 생성합니다. 다음 예제 명령은 사용자 지정 ./linuxkubeletconfig.json 및 ./linuxosconfig.json 파일을 사용하여 새 클러스터를 만듭니다.
az aks create --name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json
사용자 지정 구성 파일을 사용하여 노드 풀 추가
참고
사용자 지정 구성 파일을 사용하여 기존 AKS 클러스터에 새 노드 풀을 추가할 때 다음 정보를 염두에 두세요.
- 기존 클러스터에 Linux 노드 풀을 추가하는 경우 kubelet 구성, OS 구성 또는 둘 다를 지정할 수 있습니다. 기존 클러스터에 Windows 노드 풀을 추가하는 경우 kubelet 구성만 지정할 수 있습니다. 노드 풀을 추가할 때 구성을 지정하는 경우 구성은 새 노드 풀의 노드에만 적용됩니다. 노드 풀은 JSON 파일에 구성되지 않은 설정에 대한 기본값을 유지합니다.
-
CustomKubeletConfig는 Linux 및 Windows 노드 풀에 지원됩니다. - 미리 보기
kubeReserved및hardEvictionThresholdkubelet 설정은 Linux 노드 풀에 대해서만 지원되며 기능 플래그가CustomNodeConfigPreview필요합니다. 클러스터 또는 노드 풀을 만들기 전에 미리 보기 요구 사항kubeReserved및hardEvictionThresholdkubelet 설정 의 등록 단계를 완료합니다.
az aks nodepool add 명령을 사용하고 --kubelet-config 및 --linux-os-config 매개 변수에 대한 구성 파일을 지정하여 새 Linux 노드 풀을 만드세요. 다음 예제 명령은 사용자 지정 ./linuxkubeletconfig.json 파일을 사용하여 새 Linux 노드 풀을 만듭니다.
az aks nodepool add --name <node-pool-name> --cluster-name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json
설정이 적용되었는지 확인
사용자 지정 노드 구성을 적용한 후에는 호스트에 연결 하여 파일 시스템에서 구성 변경 여부를 확인함으로써 설정이 노드에 제대로 적용되었는지 확인할 수 있습니다.
지원되는 사용자 지정 구성 매개 변수 검토
지원되는 kubelet 및 Linux OS 구성 매개 변수, 허용되는 값, 기본값 및 설명의 전체 목록은 AKS에 대한 사용자 지정 노드 구성 매개 변수를 참조하세요.
사용자 지정 노드 구성에 대한 고려 사항
노드 구성을 사용자 지정할 때는 다음 사항을 고려해야 합니다.
- 노드 이미지 업그레이드 시 사용자 지정 노드 구성이 다시 적용됩니다.
- 스케일 아웃 작업은 사용자 지정 노드 구성을 유지합니다.
- AKS는 모든 사용자 지정 노드 구성 매개 변수 또는 값에 대해 플라이트 전 유효성 검사를 수행하지 않습니다. 클러스터 노드와 관련된 잠재적인 문제를 방지하기 위해 지정한 사용자 지정 노드 구성 매개 변수 및 값이 지원되고 유효한지 확인합니다.
- 미리 보기
kubeReserved및hardEvictionThreshold설정은 Linux 노드 풀에서만 사용할 수 있습니다. - 구성하는
kubeReserved경우 값은 양수여야 하며 대상 노드 풀에서 사용할 수 있는 CPU 또는 메모리 용량을 초과할 수 없습니다. -
hardEvictionThreshold를 구성하는 경우,Ki및Mi에는 지원되는 단위인Gi,%,memoryAvailable또는nodeFsAvailable만 사용하고,%에는 숫자만 또는nodeFsInodesFree를 사용합니다. - 사용자 지정 노드 구성 매개 변수의 기본값은 종종 새 운영 체제 버전에서 변경됩니다. 사용자 지정 노드 구성을 적용할 때 구성 중인 매개 변수의 기본값을 검토하여 사용자 지정 설정이 클러스터 노드의 OS 버전에 적합한지 확인합니다.
- 클러스터 안정성 및 성능에 의도하지 않은 결과를 방지하기 위해 사용자 지정 노드 구성을 수정할 수 있는 권한이 있는 사용자 수를 제한합니다. Kubernetes API에 Microsoft Entra ID 권한 부여를 사용하여 클러스터 구성 설정에 대한 액세스를 제한하는 것이 좋습니다.
- 사용자 지정 구성이 있는 노드 풀을 사용자 지정 구성이 없는 풀과 분리하여 특정 구성 변경에 민감할 수 있는 워크로드에 의도하지 않은 결과를 방지합니다. 예를 들어 특정 kubelet 설정이 필요한 중요한 워크로드가 있는 경우 필요한 사용자 지정 kubelet 구성을 사용하여 해당 워크로드를 전용 노드 풀로 격리하는 것이 좋습니다.
관련 콘텐츠
- AKS 클러스터를 구성하는 방법을 알아봅니다.
- 클러스터 에서 노드 이미지를 업그레이드하는 방법을 알아봅니다.
- 클러스터를 최신 버전의 Kubernetes로 업그레이드하는 방법을 알아보려면 AKS(Azure Kubernetes Service) 클러스터 업그레이드를 참조하세요.
- 몇 가지 일반적인 AKS 질문에 대한 답변을 확인하려면 AKS에 대한 질문과 대답 목록을 참조하세요.