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


Развертывание контейнера Windows Server в кластере Службы Azure Kubernetes (AKS) с помощью PowerShell

Служба Azure Kubernetes (AKS) — это управляемая служба Kubernetes, которая позволяет быстро развертывать кластеры и управлять ими. В этой статье вы используете Azure PowerShell для развертывания кластера AKS, на котором выполняются контейнеры Windows Server. Вы также развертываете пример приложения ASP.NET в контейнере Windows Server в кластере.

Замечание

Чтобы приступить к быстрой подготовке кластера AKS, в этой статье содержатся действия по развертыванию кластера с параметрами по умолчанию только для оценки. Прежде чем развертывать готовый к работе кластер, рекомендуется ознакомиться с базовой эталонной архитектурой , чтобы понять, как она соответствует вашим бизнес-требованиям.

Перед тем как начать

В этом руководстве быстрого старта предполагается, что у вас есть базовое понимание концепций Kubernetes. Дополнительные сведения см. в статье Ключевые концепции Kubernetes для службы Azure Kubernetes (AKS).

  • Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.

  • Чтобы упростить использование, попробуйте использовать среду PowerShell в Azure Cloud Shell. Для получения дополнительной информации см. краткое руководство по Azure Cloud Shell.

    Если вы хотите локально использовать PowerShell, установите модуль Az PowerShell и подключитесь к учетной записи Azure с помощью командлета Connect-AzAccount. Убедитесь, что команды выполняются с правами администратора. Дополнительные сведения см. в статье Установка Azure PowerShell.

  • Убедитесь, что удостоверение, которое вы используете для создания кластера, имеет необходимые минимальные разрешения. Дополнительные сведения о доступе и удостоверении для AKS см. в статье Возможности контроля доступа и идентификации в Службе Azure Kubernetes (AKS).

  • Если у вас несколько подписок Azure, выберите подписку, которую вы хотите использовать для быстрого старта, вызвав командлет Set-AzContext. Дополнительные сведения см. в статье Управление подписками Azure с помощьюAzure PowerShell.

  • Если вы используете osSku Windows2025, необходимо установить aks-preview расширение и зарегистрировать флаг предварительной версии.

  • Указание параметра OsSKU требует модуль PowerShell Az версии 9.2.0 или более поздней.

Установите расширение aks-preview

Это важно

Предварительные версии функций AKS доступны на условиях самообслуживания и добровольного выбора. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:

  1. aks-preview Установите расширение Azure CLI с помощью az extension add команды.
az extension add --name aks-preview
  1. Обновите до последней версии расширения с помощью az extension update команды. Для Windows Server 2025 требуется не менее 18.0.0b40.
az extension update --name aks-preview

Регистрация флага компонента AksWindows2025Preview

  1. AksWindows2025Preview Зарегистрируйте флаг компонента с помощью команды [az feature register][az-feature-register].
az feature register --name AksWindows2025Preview --namespace Microsoft.ContainerService
  1. Проверьте состояние регистрации с помощью команды [az feature show][az-feature-show]. Через несколько минут отобразится состояние Registered (Зарегистрировано).
az feature show --name AksWindows2025Preview --namespace Microsoft.ContainerService
  1. Когда состояние отражает зарегистрировано, обновите регистрацию поставщика ресурсов Microsoft.ContainerService с помощью команды [az provider register][az-provider-register].

    az provider register --namespace Microsoft.ContainerService
    

Создайте группу ресурсов

Группа ресурсов Azure — это логическая группа, в которой развертываются и управляются ресурсы Azure. При создании группы ресурсов вам будет предложено указать расположение. В этом расположении хранятся метаданные группы ресурсов, и здесь выполняются ваши ресурсы в Azure, если вы не указываете другой регион при создании ресурса.

  • Создайте группу ресурсов с помощью командлета New-AzResourceGroup . В следующем примере создается группа ресурсов с именем myResourceGroup в регионе eastus .

    New-AzResourceGroup -Name myResourceGroup -Location eastus
    

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

    ResourceGroupName : myResourceGroup
    Location          : eastus
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourceGroups/myResourceGroup
    

Создание кластера AKS

В этом разделе мы создадим кластер AKS со следующей конфигурацией:

  • Кластер настроен с двумя узлами, чтобы обеспечить надежную работу. Узел — это виртуальная машина Azure, которая запускает компоненты узлов Kubernetes и среду выполнения контейнера.
  • Параметры -WindowsProfileAdminUserName задают учетные данные администратора для всех узлов Windows Server в кластере и должны соответствовать -WindowsProfileAdminUserPassword.
  • Пул узлов использует VirtualMachineScaleSets.

Чтобы создать кластер AKS с помощью Azure PowerShell, выполните следующие действия.

  1. Создайте учетные данные администратора для контейнеров Windows Server с помощью следующей команды. Эта команда запрашивает вас ввести WindowsProfileAdminUserName и WindowsProfileAdminUserPassword. Пароль должен быть не менее 14 символов и соответствовать требованиям к сложности паролей Windows Server.

    $AdminCreds = Get-Credential `
        -Message 'Please create the administrator credentials for your Windows Server containers'
    
  2. Создайте кластер с помощью командлета New-AzAksCluster и укажите параметры WindowsProfileAdminUserNameWindowsProfileAdminUserPassword.

    New-AzAksCluster -ResourceGroupName myResourceGroup `
        -Name myAKSCluster `
        -NodeCount 2 `
        -NetworkPlugin azure `
        -NodeVmSetType VirtualMachineScaleSets `
        -WindowsProfileAdminUserName $AdminCreds.UserName `
        -WindowsProfileAdminUserPassword $secureString `
        -GenerateSshKey
    

    Через несколько минут команда завершается и возвращает информацию о кластере в формате JSON. Иногда для подготовки кластера может потребоваться больше нескольких минут. Время подготовки может занять до 10 минут.

    Если вы получаете ошибку проверки пароля, и ваш пароль соответствует требованиям к длине и сложности, попробуйте создать группу ресурсов в другом регионе. Затем попробуйте создать кластер с новой группой ресурсов.

    Если при создании пула узлов имя администратора и пароль не указаны, имя пользователя устанавливается в azureuser , а пароль имеет случайное значение. Дополнительные сведения см. в разделе часто задаваемых вопросов о Windows Server.

    Имя пользователя администратора нельзя изменить, но вы можете изменить пароль администратора, который использует кластер AKS для узлов Windows Server.az aks update Дополнительные сведения см. в разделе часто задаваемых вопросов о Windows Server.

    Чтобы запустить кластер AKS, поддерживающий пулы узлов для контейнеров Windows Server, кластер должен использовать сетевую политику, использующую подключаемый модуль сети Azure CNI (advanced). Параметр -NetworkPlugin azure указывает Azure CNI.

Добавление пула узлов

По умолчанию кластер AKS создается с пулом узлов, который может запускать контейнеры Linux. Необходимо добавить другой пул узлов, который может запускать контейнеры Windows Server вместе с пулом узлов Linux.

Чтобы создать пул узлов Windows, необходимо указать поддерживаемый OsType и OsSku. Используйте сведения в следующей таблице, чтобы определить, какой вариант подходит для кластера:

OsType OsSku По умолчанию Поддерживаемые версии K8s Сведения
windows Windows2025 В настоящее время находится на этапе предварительной версии. Не является параметром по умолчанию. 1.32+ Обновленные значения по умолчанию: containerd 2.0 и образ поколения 2 используются по умолчанию.
windows Windows2022 По умолчанию в версии «K8s» 1.25-1.35 Недоступно в K8s 1.36+ Уходит в отставку в марте 2027 года. Обновленные значения по умолчанию: FIPS включен по умолчанию.
windows Windows2019 Значение по умолчанию в K8s 1.24 и ниже Недоступно в K8s 1.33+ Уходит в отставку в марте 2026 года.

Windows Server 2022 — это операционная система по умолчанию для Kubernetes версии 1.25-1.35. Windows Server 2019 — это ос по умолчанию для более ранних версий. Если вы не указываете определенный номер SKU ОС, Azure создает новый пул узлов с номером SKU по умолчанию для версии Kubernetes, используемой кластером.

Это важно

Начиная с 1 марта 2026 г. служба Azure Kubernetes (AKS) больше не поддерживает пулы узлов Windows Server 2019. Пулы узлов под управлением Kubernetes версии 1.33+ не могут использовать Windows Server 2019. Начиная с 1 апреля 2027 г. AKS удаляет все существующие образы узлов для Windows Server 2019, что означает, что операции масштабирования завершаются сбоем. Дополнительные сведения об этом устаревании см. в вопросе устаревания на GitHub и объявлении об устаревании обновлений Azure. Чтобы оставаться в курсе объявлений и обновлений, следуйте заметкам о выпуске AKS.

Это важно

Начиная с 15 марта 2027 г. служба Azure Kubernetes (AKS) больше не поддерживает пулы узлов Windows Server 2022. Пулы узлов под управлением Kubernetes версии 1.36+ не могут использовать Windows Server 2022. Начиная с 1 апреля 2028 г. AKS удаляет все существующие образы узлов для Windows Server 2022, что означает, что операции масштабирования завершаются сбоем. Дополнительные сведения об этом устаревании см. в вопросе устаревания на GitHub и объявлении об устаревании обновлений Azure. Чтобы оставаться в курсе объявлений и обновлений, следуйте заметкам о выпуске AKS.

  • Добавьте пул узлов Windows Server с помощью командлета New-AzAksNodePool . Следующая команда создает пул узлов с именем npwin и добавляет его в myAKSCluster. Команда также использует подсеть по умолчанию в виртуальной сети по умолчанию, созданной при выполнении New-AzAksCluster:

    New-AzAksNodePool -ResourceGroupName myResourceGroup `
        -ClusterName myAKSCluster `
        -VmSetType VirtualMachineScaleSets `
        -OsType Windows `
        -OsSKU Windows2022 `
        -Name npwin
    

Подключение к кластеру

Для управления кластерами Kubernetes используется kubectl, клиент командной строки Kubernetes. Если вы используете Azure Cloud Shell, kubectl уже установлен. Если вы хотите установить kubectl локально, вы можете использовать командлет Install-AzAzAksCliTool.

  1. Настройте kubectl для подключения к вашему кластеру Kubernetes с помощью командлета Import-AzAksCredential. Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.

    Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
    
  2. Проверьте подключение к кластеру с помощью команды kubectl get, которая возвращает список узлов кластера.

    kubectl get nodes
    

    В следующем примере выходных данных показаны все узлы в кластере. Убедитесь, что состояние всех узлов Готово.

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-20786768-vmss000000   Ready    agent   22h   v1.27.7
    aks-nodepool1-20786768-vmss000001   Ready    agent   22h   v1.27.7
    aksnpwin000000                      Ready    agent   21h   v1.27.7
    

Развертывание приложения

Файл манифеста Kubernetes определяет требуемое состояние для кластера, например, какие образы контейнеров запускать. В этой статье вы используете манифест для создания всех объектов, необходимых для запуска примера приложения ASP.NET в контейнере Windows Server. Этот манифест включает развертывание Kubernetes для примера приложения ASP.NET и внешней службы Kubernetes для доступа к приложению из Интернета.

Пример приложения ASP.NET предоставляется в составе примеров .NET Framework и выполняется в контейнере Windows Server. AKS требует, чтобы контейнеры Windows Server были основаны на образах Windows Server 2019 или более поздней версии. Файл манифеста Kubernetes также должен определить селектор узлов, чтобы сообщить кластеру AKS запустить pod образца ASP.NET приложения на узле, способном запускать контейнеры Windows Server.

  1. Создайте файл с именем sample.yaml и скопируйте его в следующем определении YAML:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sample
      labels:
        app: sample
    spec:
      replicas: 1
      template:
        metadata:
          name: sample
          labels:
            app: sample
        spec:
          nodeSelector:
            "kubernetes.io/os": windows
          containers:
          - name: sample
            image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
            resources:
              limits:
                cpu: 1
                memory: 800M
            ports:
              - containerPort: 80
      selector:
        matchLabels:
          app: sample
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sample
    spec:
      type: LoadBalancer
      ports:
      - protocol: TCP
        port: 80
      selector:
        app: sample
    

    Сведения о разбивке файлов манифеста YAML см. в разделе "Развертывания" и "Манифесты YAML".

    Если вы создаете и сохраняете файл YAML локально, вы можете отправить файл манифеста в каталог по умолчанию в CloudShell, нажав кнопку "Отправить и скачать файлы " и выбрав файл из локальной файловой системы.

  2. Разверните приложение с помощью kubectl apply команды и укажите имя манифеста YAML.

    kubectl apply -f sample.yaml
    

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

    deployment.apps/sample created
    service/sample created
    

Тестирование приложения

При запуске приложения Служба Kubernetes предоставляет внешний интерфейс приложения в Интернете. Процесс может занять несколько минут для завершения. Иногда подготовка к включению услуги может занять больше времени, чем несколько минут. Время подготовки может занять до 10 минут.

  1. Проверьте состояние развернутых подов с помощью команды kubectl get pods. Убедитесь, что все модули pod находятся в состоянии Running прежде чем продолжить.

    kubectl get pods
    
  2. Отслеживайте ход выполнения, используя команду kubectl get service с аргументом --watch.

    kubectl get service sample --watch
    

    Изначально выходные данные отображают внешний IP-адрес для примера службы в ожидании:

    NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
    sample             LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s
    
  3. Когда значение EXTERNAL-IP изменится с состояния pending на фактический общедоступный IP-адрес, используйте команду CTRL-C, чтобы остановить процесс отслеживания kubectl.

    В следующем примере выходных данных показан общедоступный IP-адрес, присвоенный службе.

    sample  LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m
    
  4. Просмотрите пример приложения в действии, открыв веб-браузер для внешнего IP-адреса службы.

    Снимок экрана: просмотр примера приложения ASP.NET.

Удаление ресурсов

Если вы не планируете проходить руководство по AKS, удалите кластер, чтобы избежать расходов в Azure.

  • Удалите группу ресурсов, службу контейнеров и все связанные ресурсы с помощью командлета Remove-AzResourceGroup .

    Remove-AzResourceGroup -Name myResourceGroup
    

    Замечание

    Кластер AKS был создан с управляемым удостоверением, назначенным системой (параметр удостоверения по умолчанию, используемый в этом кратком руководстве). Платформа Azure управляет этим удостоверением, поэтому его не требуется удалять.

Дальнейшие шаги

В этом кратком руководстве вы развернули кластер Kubernetes, а затем развернули в нем пример приложения ASP.NET в контейнере Windows Server. Этот пример приложения предназначен только для демонстрационных целей и не представляет все рекомендации для приложений Kubernetes. Рекомендации по созданию полных решений с помощью AKS для использования в производственной среде см. в руководстве по решению AKS.

Дополнительные сведения об AKS и полный пример развертывания см. в руководстве по кластеру Kubernetes.