다음을 통해 공유


Azure Linux 컨테이너 호스트 노드 이미지에서 오래된 커널 버전 문제 해결

마이그레이션하는 동안 또는 Azure Linux 컨테이너 호스트에 새 노드 풀을 추가할 때 오래된 커널 버전에 문제가 발생할 수 있습니다. AKS(Azure Kubernetes Service) 새 노드 풀 및 확장의 시작 이미지로 사용되는 새 Azure Linux 노드 이미지를 매주 릴리스합니다. 그러나 이전 노드 풀은 예상대로 커널 버전을 업데이트하지 않을 수 있습니다.

노드 풀의 KERNEL-VERSION을 확인하려면 다음을 실행합니다.

    kubectl get nodes -o wide

그런 다음 노드 풀의 커널 버전을 packages.microsoft.com에 게시된 최신 커널과 비교합니다.

증상

이 문제의 일반적인 증상은 다음과 같습니다.

  • Azure Linux 노드는 최신 커널 버전을 사용하지 않습니다.

원인

이 문제의 주요 원인은 두 가지입니다.

  1. 노드 풀을 만들 때 자동 노드 이미지 업그레이드가 사용하도록 설정되지 않았습니다.
  2. 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

다음 단계

앞의 단계에서 문제가 해결되지 않으면 지원 티켓을 엽니다.