Поделиться через


Обновление версии ОС для рабочих нагрузок Windows Служба Azure Kubernetes (AKS)

При обновлении версии ОС работающей рабочей нагрузки Windows на Служба Azure Kubernetes (AKS) необходимо развернуть новый пул узлов, чтобы обеспечить соответствие версий Windows в каждом пуле узлов. В этой статье описаны шаги по обновлению версии ОС для рабочих нагрузок Windows в AKS. Хотя в этом примере основное внимание уделяется обновлению с Windows Server 2019 до Windows Server 2022, то же самое можно выполнить для обновления с любой версии Windows Server до другой.

Поддержка версий ОС Windows Server

Когда выпущена новая версия операционной системы Windows Server, AKS стремится поддерживать ее и рекомендует обновить до последней версии, чтобы воспользоваться исправлениями, улучшениями и новыми функциями. AKS предоставляет пятилетний жизненный цикл поддержки для каждой версии Windows Server, начиная с Windows Server 2022. В течение этого периода AKS выпустит новую версию, которая поддерживает более новую версию ОС Windows Server для обновления до.

Примечание.

  • Windows Server 2019 прекращается после окончания срока действия Kubernetes версии 1.32. Дополнительные сведения см . в заметках о выпуске AKS.
  • Windows Server 2022 уходит в отставку после того, как Kubernetes версии 1.34 достигает конца срока жизни (EOL). Дополнительные сведения см . в заметках о выпуске AKS.

Ограничения

Windows Server 2019 и Windows Server 2022 не могут совместно существовать в одном пуле узлов в AKS. Для размещения новой версии ОС необходимо создать пул узлов. Важно обеспечить соответствие разрешений и доступа между предыдущим и новым пулами узлов.

Подготовка к работе

  • Обновите инструкцию FROM в Dockerfile до новой версии ОС.
  • Проверьте приложение и проверьте, работает ли приложение-контейнер в новой версии ОС.
  • Разверните проверенное контейнерное приложение в AKS в среде разработки или тестирования.
  • Запишите новое имя изображения или тег для использования в этой статье.

Примечание.

Сведения о создании Файла Dockerfile для рабочих нагрузок Windows см. в разделе Dockerfile в Windows и оптимизации Файлов Dockerfile.

Добавление пула узлов Windows Server 2022 в существующий кластер

Обновление YAML-файла

Селектор узлов — это наиболее распространенный и рекомендуемый вариант размещения модулей pod Windows в узлах Windows.

  1. Добавьте селектор узла в файл YAML, добавив следующую заметку:

          nodeSelector:
            "kubernetes.io/os": windows
    

    Заметка находит любой доступный узел Windows и помещает модуль pod на этот узел (следуя всем другим правилам планирования). При обновлении с Windows Server 2019 до Windows Server 2022 необходимо применить размещение на узле Windows и узле под управлением последней версии ОС. Для этого можно использовать другую заметку:

          nodeSelector:
            "kubernetes.azure.com/os-sku": Windows2022
    
  2. После обновления nodeSelector в YAML-файле необходимо также обновить образ контейнера, который вы хотите использовать. Эти сведения можно получить на предыдущем шаге, в котором вы создали новую версию контейнерного приложения, изменив FROM инструкцию в Dockerfile.

Примечание.

Следует использовать тот же файл YAML, который использовался для первоначального развертывания приложения. Это гарантирует, что другие изменения конфигурации, кроме nodeSelector образа контейнера, не изменяются.

Применение обновленного YAML-файла к существующей рабочей нагрузке

  1. Просмотрите узлы в кластере kubectl get nodes с помощью команды.

    kubectl get nodes -o wide
    

    В следующем примере выходных данных показаны все узлы кластера, включая созданный пул узлов и существующие пулы узлов:

    NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
    aks-agentpool-18877473-vmss000000   Ready    agent   5h40m   v1.23.8   10.240.0.4     <none>        Ubuntu 18.04.6 LTS               5.4.0-1085-azure   containerd://1.5.11+azure-2
    akspoolws000000                     Ready    agent   3h15m   v1.23.8   10.240.0.208   <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akspoolws000001                     Ready    agent   3h17m   v1.23.8   10.240.0.239   <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akspoolws000002                     Ready    agent   3h17m   v1.23.8   10.240.1.14    <none>        Windows Server 2022 Datacenter   10.0.20348.825     containerd://1.6.6+azure
    akswspool000000                     Ready    agent   5h37m   v1.23.8   10.240.0.115   <none>        Windows Server 2019 Datacenter   10.0.17763.3165    containerd://1.6.6+azure
    akswspool000001                     Ready    agent   5h37m   v1.23.8   10.240.0.146   <none>        Windows Server 2019 Datacenter   10.0.17763.3165    containerd://1.6.6+azure
    akswspool000002                     Ready    agent   5h37m   v1.23.8   10.240.0.177   <none>        Windows Server 2019 Datacenter   10.0.17763.3165    containerd://1.6.6+azure
    
  2. Примените обновленный ФАЙЛ YAML к существующей рабочей нагрузке с помощью kubectl apply команды и укажите имя YAML-файла.

    kubectl apply -f <filename>
    

    В следующем примере выходных данных отображается настроенное состояние развертывания:

    deployment.apps/sample configured
    service/sample unchanged
    

    На этом этапе AKS запускает процесс завершения существующих модулей pod и развертывания новых модулей pod на узлах Windows Server 2022.

  3. Проверьте состояние развертывания с помощью kubectl get pods команды.

    kubectl get pods -o wide
    

    В следующем примере выходных данных показаны модули pod в default пространстве имен:

    NAME                      READY   STATUS    RESTARTS   AGE     IP             NODE              NOMINATED NODE   READINESS GATES
    sample-7794bfcc4c-k62cq   1/1     Running   0          2m49s   10.240.0.238   akspoolws000000   <none>           <none>
    sample-7794bfcc4c-rswq9   1/1     Running   0          2m49s   10.240.1.10    akspoolws000001   <none>           <none>
    sample-7794bfcc4c-sh78c   1/1     Running   0          2m49s   10.240.0.228   akspoolws000000   <none>           <none>
    

Рекомендации по безопасности и проверке подлинности

Если вы используете управляемые группы учетные записи служб (gMSA), необходимо обновить конфигурацию управляемого удостоверения для нового пула узлов. gMSA использует секрет (учетную запись пользователя и пароль), чтобы узел, на котором выполняется модуль pod Windows, может пройти проверку подлинности контейнера в идентификаторе Microsoft Entra. Для доступа к этому секрету в Azure Key Vault узел использует управляемое удостоверение, которое предоставляет узлу доступ к ресурсу. Так как для каждого пула узлов настроены управляемые удостоверения и модуль pod теперь находится в новом пуле узлов, необходимо обновить эту конфигурацию. Дополнительные сведения см. в статье Включение групповых управляемых учетных записей (GMSA) для узлов Windows Server в кластере Службы Azure Kubernetes (AKS).

Тот же принцип применяется к управляемым удостоверениям для любого другого пула модулей pod или узлов при доступе к другим ресурсам Azure. Необходимо обновить любой доступ, который предоставляет управляемое удостоверение, чтобы отразить новый пул узлов. Чтобы узнать, как просматривать сведения о действиях по обновлению и входу, см. статью Как просмотреть сведения о действиях для управляемых удостоверений.

Следующие шаги

Из этой статьи вы узнали, как обновить версию ОС для рабочих нагрузок Windows в AKS. Дополнительные сведения о рабочих нагрузках Windows в AKS см. в статье "Развертывание приложения контейнера Windows в Служба Azure Kubernetes(AKS)".