Azure Linux 컨테이너 호스트 노드 이미지에서 오래된 커널 버전 문제 해결
마이그레이션하는 동안 또는 Azure Linux 컨테이너 호스트에 새 노드 풀을 추가할 때 오래된 커널 버전에 문제가 발생할 수 있습니다. AKS(Azure Kubernetes Service) 새 노드 풀 및 확장의 시작 이미지로 사용되는 새 Azure Linux 노드 이미지를 매주 릴리스합니다. 그러나 이전 노드 풀은 예상대로 커널 버전을 업데이트하지 않을 수 있습니다.
노드 풀의 KERNEL-VERSION을 확인하려면 다음을 실행합니다.
kubectl get nodes -o wide
그런 다음 노드 풀의 커널 버전을 packages.microsoft.com에 게시된 최신 커널과 비교합니다.
증상
이 문제의 일반적인 증상은 다음과 같습니다.
- Azure Linux 노드는 최신 커널 버전을 사용하지 않습니다.
원인
이 문제의 주요 원인은 두 가지입니다.
- 노드 풀을 만들 때 자동 노드 이미지 업그레이드가 사용하도록 설정되지 않았습니다.
- AKS에서 클러스터를 시작하는 데 사용하는 기본 이미지는 출시 절차로 인해 최신 커널 버전에서 2주 후에 실행됩니다.
솔루션
GitHub Actions을 사용하여 자동 업그레이드를 사용하도록 설정하고 노드를 다시 부팅하여 이 문제를 해결할 수 있습니다.
Azure CLI를 사용하여 자동 노드 이미지 업그레이드 사용
az-cli에서 클러스터를 배포할 때 자동 노드 이미지 업그레이드를 사용하도록 설정하려면 매개 변수 --auto-upgrade-channel node-image
(을)를 추가합니다.
az aks create --name testAzureLinuxCluster --resource-group testAzureLinuxResourceGroup --os-sku AzureLinux --auto-upgrade-channel node-image
ARM 템플릿을 사용하여 자동 노드 이미지 업그레이드 사용
ARM 템플릿을 사용할 때 자동 노드 이미지 업그레이드를 사용하도록 설정하려면 upgradeChannel 속성을 autoUpgradeProfile
에서 node-image
(으)로 설정할 수 있습니다.
autoUpgradeProfile: {
upgradeChannel: 'node-image'
}
노드를 다시 부팅합니다.
커널 버전을 업데이트할 때 새 커널 버전을 사용하려면 노드를 다시 부팅해야 합니다. kured daemonset을 설정하는 것이 좋습니다. kured에서 /var/run/reboot-required
파일을 위해 노드를 모니터링하고 워크로드를 드레이닝한 다음 노드를 다시 부팅합니다.
해결 방법: 수동 업그레이드
빠른 해결 방법이 필요한 경우 az aks nodepool 업그레이드를 사용하여 클러스터에서 노드 이미지를 수동으로 업그레이드할 수 있습니다. 이 작업은 실행하여 수행할 수 있습니다.
az aks nodepool upgrade \
--resource-group testAzureLinuxResourceGroup \
--cluster-name testAzureLinuxCluster \
--name myAzureLinuxNodepool \
--node-image-only
다음 단계
앞의 단계에서 문제가 해결되지 않으면 지원 티켓을 엽니다.