Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба Azure Kubernetes (AKS) — это управляемая служба Kubernetes, которая позволяет быстро развертывать кластеры и управлять ими. В этой статье вы используете Azure CLI для развертывания кластера AKS, на котором выполняются контейнеры Windows Server. Вы также развертываете пример приложения ASP.NET в контейнере Windows Server в кластере.
Замечание
Чтобы приступить к быстрой подготовке кластера AKS, в этой статье содержатся действия по развертыванию кластера с параметрами по умолчанию только для оценки. Прежде чем развертывать готовый к работе кластер, рекомендуется ознакомиться с базовой эталонной архитектурой , чтобы понять, как она соответствует вашим бизнес-требованиям.
Перед тем как начать
В этом руководстве быстрого старта предполагается, что у вас есть базовое понимание концепций Kubernetes. Дополнительные сведения см. в статье Ключевые концепции Kubernetes для службы Azure Kubernetes (AKS).
- Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, подумайте о запуске Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login . Чтобы завершить процесс аутентификации, следуйте шагам, отображаемым в вашем терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Когда вас попросят, установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
- Для работы с этой статьей требуется Azure CLI версии 2.0.64 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена там.
- Убедитесь, что удостоверение, которое вы используете для создания кластера, имеет необходимые минимальные разрешения. Дополнительные сведения о доступе и удостоверении для AKS см. в статье Возможности контроля доступа и идентификации в Службе Azure Kubernetes (AKS).
- Если у вас несколько подписок Azure, выберите соответствующий идентификатор подписки, в котором должны выставляться счета за ресурсы с помощью
az account setкоманды. Дополнительные сведения см. в статье "Управление подписками Azure" — Azure CLI. - Если вы используете
--os-sku Windows2025, необходимо установитьaks-previewрасширение и зарегистрировать флаг предварительной версии. Минимальная версия — 18.0.0b40.
Установите расширение aks-preview
Это важно
Предварительные версии функций AKS доступны на условиях самообслуживания и добровольного выбора. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:
-
aks-previewУстановите расширение Azure CLI с помощьюaz extension addкоманды.
az extension add --name aks-preview
- Обновите до последней версии расширения с помощью
az extension updateкоманды. Для Windows Server 2025 требуется не менее 18.0.0b40.
az extension update --name aks-preview
Регистрация флага компонента AksWindows2025Preview
-
AksWindows2025PreviewЗарегистрируйте флаг компонента с помощью команды [az feature register][az-feature-register].
az feature register --name AksWindows2025Preview --namespace Microsoft.ContainerService
- Проверьте состояние регистрации с помощью команды [
az feature show][az-feature-show]. Через несколько минут отобразится состояние Registered (Зарегистрировано).
az feature show --name AksWindows2025Preview --namespace Microsoft.ContainerService
Когда состояние отражает зарегистрировано, обновите регистрацию поставщика ресурсов Microsoft.ContainerService с помощью команды [
az provider register][az-provider-register].az provider register --namespace Microsoft.ContainerService
Создайте группу ресурсов
Группа ресурсов Azure — это логическая группа, в которой развертываются и управляются ресурсы Azure. При создании группы ресурсов вам будет предложено указать расположение. В этом расположении хранятся метаданные группы ресурсов, и здесь выполняются ваши ресурсы в Azure, если вы не указываете другой регион при создании ресурса.
Создайте группу ресурсов с помощью команды
az group create. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении WestUS2 .export RANDOM_SUFFIX=$(openssl rand -hex 3) export REGION="canadacentral" export MY_RESOURCE_GROUP_NAME="myAKSResourceGroup$RANDOM_SUFFIX" az group create --name $MY_RESOURCE_GROUP_NAME --location $REGIONРезультаты:
{ "id": "/subscriptions/xxxxx-xxxxx-xxxxx-xxxxx/resourceGroups/myResourceGroupxxxxx", "location": "WestUS2", "managedBy": null, "name": "myResourceGroupxxxxx", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": "Microsoft.Resources/resourceGroups" }
Создание кластера AKS
В этом разделе мы создадим кластер AKS со следующей конфигурацией:
- Кластер настроен с двумя узлами, чтобы обеспечить надежную работу. Узел — это виртуальная машина Azure, которая запускает компоненты узлов Kubernetes и среду выполнения контейнера.
- Параметры
--windows-admin-passwordзадают учетные данные администратора для всех узлов Windows Server в кластере и должны соответствовать--windows-admin-username. - Пул узлов использует
VirtualMachineScaleSets.
Чтобы создать кластер AKS с помощью Azure CLI, выполните следующие действия.
Создайте имя пользователя для использования в качестве учетных данных администратора для узлов Windows Server в кластере.
export WINDOWS_USERNAME="winadmin"Создайте пароль для имени администратора, созданного на предыдущем шаге. Пароль должен быть не менее 14 символов и соответствовать требованиям к сложности паролей Windows Server.
export WINDOWS_PASSWORD=$(echo "P@ssw0rd$(openssl rand -base64 10 | tr -dc 'A-Za-z0-9!@#$%^&*()' | cut -c1-6)")Создайте кластер с помощью команды
az aks createи укажите параметры--windows-admin-usernameи--windows-admin-password. Следующая команда создает кластер с помощью значений изWINDOWS_USERNAMEиWINDOWS_PASSWORDпредыдущих команд. Случайный суффикс добавляется к имени кластера для уникальности.export MY_AKS_CLUSTER="myAKSCluster$RANDOM_SUFFIX" az aks create \ --resource-group $MY_RESOURCE_GROUP_NAME \ --name $MY_AKS_CLUSTER \ --node-count 2 \ --enable-addons monitoring \ --generate-ssh-keys \ --windows-admin-username $WINDOWS_USERNAME \ --windows-admin-password $WINDOWS_PASSWORD \ --vm-set-type VirtualMachineScaleSets \ --network-plugin azureЧерез несколько минут команда завершается и возвращает информацию о кластере в формате JSON. Иногда для подготовки кластера может потребоваться больше нескольких минут. Время подготовки может занять до 10 минут.
Если вы получаете ошибку проверки пароля, и ваш пароль соответствует требованиям к длине и сложности, попробуйте создать группу ресурсов в другом регионе. Затем попробуйте создать кластер с новой группой ресурсов.
Если при создании пула узлов имя администратора и пароль не указаны, имя пользователя устанавливается в azureuser , а пароль имеет случайное значение. Дополнительные сведения см. в разделе "Вопросы и ответы о Windows Server"
Вы не можете изменить имя пользователя администратора, но вы можете изменить пароль администратора, который использует кластер AKS для узлов Windows Server.
az aks updateДополнительные сведения см. в разделе часто задаваемые вопросы о Windows Server.Чтобы запустить кластер AKS, поддерживающий пулы узлов для контейнеров Windows Server, кластер должен использовать сетевую политику, использующую подключаемый модуль сети Azure CNI (advanced). Параметр
--network-plugin azureуказывает Azure CNI.
Добавление пула узлов
По умолчанию все кластеры AKS создаются с пулом узлов, который может запускать контейнеры Linux. Необходимо добавить пул узлов Windows, который может запускать контейнеры Windows Server вместе с пулом узлов Linux. Чтобы проверить наличие пула узлов Windows в кластере, можно просмотреть узлы в кластере kubectl get nodes -o wide с помощью команды.
Чтобы создать пул узлов 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, используемой кластером.
Замечание
- Windows Server 2019 выходит на пенсию 1 марта 2026 г. После этой даты AKS больше не будет создавать новые образы узлов или предоставлять исправления безопасности. После этой даты вы не сможете создавать пулы узлов с Windows Server 2019 в любой версии Kubernetes. Все существующие пулы узлов с Windows Server 2019 будут неподдерживаться. Windows Server 2019 не поддерживается в Kubernetes версии 1.33 и выше. Начиная с 1 апреля 2027 года AKS удалит все существующие образы узлов для Windows Server 2019, что означает, что операции по масштабированию не удастся.
- Windows Server 2022 выходит на пенсию 15 марта 2027 г. После этой даты AKS больше не будет создавать новые образы узлов или предоставлять исправления безопасности. После этой даты вы не сможете создавать пулы узлов с Windows Server 2022 в любой версии Kubernetes. Все существующие пулы узлов с Windows Server 2022 будут неподдерживаемые. Windows Server 2022 не поддерживается в Kubernetes версии 1.36 и выше. Начиная с 1 апреля 2028 г. AKS удаляет все существующие образы узлов для Windows Server 2022, что означает, что операции масштабирования завершаются сбоем.
Смотрите заметки о выпуске AKS для получения дополнительной информации. Чтобы оставаться в курсе последних версий ОС Windows Server и узнать больше о нашей стратегии поддержки в AKS, ознакомьтесь с нашей общедоступной стратегией развития AKS.
Добавьте пул узлов Windows с использованием команды
az aks nodepool addс указанными параметрамиOsTypeиOsSku. Если вы не указываете определенный номер SKU ОС, Azure создает новый пул узлов с номером SKU по умолчанию для версии Kubernetes, используемой кластером.az aks nodepool add \ --resource-group $MY_RESOURCE_GROUP_NAME \ --cluster-name $MY_AKS_CLUSTER \ --os-type Windows \ --os-sku Windows2022 \ --name npwin \ --node-count 1Эта команда создает пул узлов с именем npwin и добавляет его в myAKSCluster. Команда также использует подсеть по умолчанию в виртуальной сети по умолчанию, созданной при выполнении
az aks create.
Подключение к кластеру
Для управления кластерами Kubernetes используется kubectl, клиент командной строки Kubernetes. Если вы используете Azure Cloud Shell, kubectl уже установлен. Если вы хотите установить и запустить kubectl локально, используйте az aks install-cli команду.
Настройте
kubectlдля подключения к вашему кластеру Kubernetes с помощью командыaz aks get-credentials. Эта команда скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования.az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTERПроверьте подключение к кластеру с помощью команды
kubectl get, которая возвращает список узлов кластера.kubectl get nodes -o wideВ следующем примере выходных данных показаны все узлы в кластере. Убедитесь, что состояние всех узлов Готово.
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME aks-nodepool1-20786768-vmss000000 Ready agent 22h v1.27.7 10.224.0.4 <none> Ubuntu 22.04.3 LTS 5.15.0-1052-azure containerd://1.7.5-1 aks-nodepool1-20786768-vmss000001 Ready agent 22h v1.27.7 10.224.0.33 <none> Ubuntu 22.04.3 LTS 5.15.0-1052-azure containerd://1.7.5-1 aksnpwin000000 Ready agent 20h v1.27.7 10.224.0.62 <none> Windows Server 2022 Datacenter 10.0.20348.2159 containerd://1.6.21+azureЗамечание
Среда выполнения контейнера для каждого пула узлов отображается в разделе CONTAINER-RUNTIME. Значения среды выполнения контейнера начинаются с
containerd://, что означает, что каждое из них используетcontainerdдля среды выполнения контейнера.
Развертывание приложения
Файл манифеста 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.
Создайте файл с именем
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, нажав кнопку "Отправить и скачать файлы " и выбрав файл из локальной файловой системы.
Разверните приложение с помощью
kubectl applyкоманды и укажите имя манифеста YAML.kubectl apply -f sample.yamlВ следующем примере выходных данных показано, что развертывание и служба успешно созданы:
{ "deployment.apps/sample": "created", "service/sample": "created" }
Тестирование приложения
При запуске приложения Служба Kubernetes предоставляет внешний интерфейс приложения в Интернете. Процесс может занять несколько минут для завершения. Иногда подготовка к включению услуги может занять больше времени, чем несколько минут. Время подготовки может занять до 10 минут.
Проверьте состояние развернутых подов с помощью команды
kubectl get pods. Убедитесь, что все поды имеют статусRunning, прежде чем продолжить.kubectl get podsОтслеживайте ход выполнения, используя команду
kubectl get serviceс аргументом--watch.while true; do export EXTERNAL_IP=$(kubectl get service sample -o jsonpath="{.status.loadBalancer.ingress[0].ip}" 2>/dev/null) if [[ -n "$EXTERNAL_IP" && "$EXTERNAL_IP" != "<pending>" ]]; then kubectl get service sample break fi echo "Still waiting for external IP assignment..." sleep 5 doneИзначально выходные данные отображают внешний IP-адрес для примера службы в ожидании:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer xx.xx.xx.xx pending xx:xxxx/TCP 2mКогда значение EXTERNAL-IP изменится с состояния pending на фактический общедоступный IP-адрес, используйте команду
CTRL-C, чтобы остановить процесс отслеживанияkubectl.В следующем примере выходных данных показан общедоступный IP-адрес, присвоенный службе.
{ "NAME": "sample", "TYPE": "LoadBalancer", "CLUSTER-IP": "10.0.37.27", "EXTERNAL-IP": "52.179.23.131", "PORT(S)": "80:30572/TCP", "AGE": "2m" }Просмотрите пример приложения в действии, открыв веб-браузер на внешний IP-адрес службы через несколько минут.
Дальнейшие шаги
В этом кратком руководстве вы развернули кластер Kubernetes, а затем развернули в нем пример приложения ASP.NET в контейнере Windows Server. Этот пример приложения предназначен только для демонстрационных целей и не представляет все рекомендации для приложений Kubernetes. Рекомендации по созданию полных решений с помощью AKS для использования в производственной среде см. в руководстве по решению AKS.
Дополнительные сведения об AKS и полный пример развертывания см. в руководстве по кластеру Kubernetes.