Создание контейнеров Windows Server
Область применения: Azure Stack HCI, версия 23H2
В этой статье описано, как использовать Azure CLI для развертывания пула узлов в существующем кластере AKS, где выполняются контейнеры Windows Server. Затем вы развернете в кластере пример приложения ASP.NET, помещенный в контейнер Windows Server.
Предварительные требования
Создайте кластер AKS, следуя инструкциям в статье Создание кластеров AKS.
Добавление пула узлов
По умолчанию кластер Kubernetes создается с пулом узлов, который может запускать контейнеры Linux. Необходимо добавить еще один пул узлов, который может запускать контейнеры Windows Server вместе с пулом узлов Linux.
Добавьте пул узлов с узлами контейнеров Windows с az aksarc nodepool add
помощью команды с параметром --os-type Windows
. Если номер SKU операционной системы не указан, для пула узлов устанавливается ОС по умолчанию на основе версии Кластера Kubernetes. Windows Server 2022 — это операционная система по умолчанию для Kubernetes версии 1.25.0 и более поздних версий. Windows Server 2019 является ОС по умолчанию для более ранних версий.
- Чтобы использовать Windows Server 2019, укажите следующие параметры:
os-type
Задайте значениеWindows
.os-sku
Задайте значениеWindows2019
.
- Чтобы использовать Windows Server 2022, укажите следующие параметры:
os-type
Задайте значениеWindows
.os-sku
задайте значениеWindows2022
(необязательно).
Следующая команда создает пул узлов с именем $mynodepool
и добавляет его в $myAKSCluster
с одним узлом Windows 2019.
az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2019
Подключение к кластеру AKS
Теперь вы можете подключиться к кластеру Kubernetes, выполнив команду с локального az connectedk8s proxy
компьютера. Перед выполнением этой команды убедитесь, что вы войли в Azure. Если у вас несколько подписок Azure, выберите соответствующий идентификатор подписки с помощью команды az account set .
Эта команда скачивает kubeconfig кластера Kubernetes на локальный компьютер и открывает прокси-канал подключения к локальному кластеру Kubernetes. Канал открыт до тех пор, пока выполняется эта команда. Пусть эта команда выполняется до тех пор, пока вы хотите получить доступ к кластеру. Если время ожидания команды истекло, закройте окно CLI, откройте новое, а затем выполните команду еще раз.
Чтобы успешно выполнить следующую команду, необходимо иметь разрешения участника на группу ресурсов, в которой размещен кластер AKS:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Ожидаемые выходные данные:
Proxy is listening on port 47011
Merged "aks-workload" as current context in .\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using kubeconfig at .\aks-arc-kube-config
Press Ctrl+C to close proxy.
Сохраните этот сеанс и подключитесь к кластеру Kubernetes из другого терминала или командной строки. Убедитесь, что вы можете подключиться к кластеру Kubernetes, выполнив команду kubectl get. Эта команда возвращает список узлов кластера:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
В следующем примере выходных данных показан узел, созданный на предыдущих шагах. Убедитесь, что этот узел находится в состоянии готовности:
NAME STATUS ROLES AGE VERSION
moc-lesdc78871d Ready control-plane 6d8h v1.26.3
moc-lupeeyd0f8c Ready <none> 6d8h v1.26.3
moc-ww2c8d5ranw Ready <none> 7m18s v1.26.3
Развертывание приложения
Файл манифеста Kubernetes используется для определения требуемого состояния кластера, например выполняемых в нем образов контейнеров.
Манифест YAML можно использовать для создания всех объектов, необходимых для запуска примера приложения ASP.NET в контейнере Windows Server. Этот манифест включает развертывание Kubernetes для примера приложения ASP.NET и службу Kubernetes для доступа к приложению из Интернета.
Пример приложения ASP.NET предоставляется в составе примеров платформа .NET Framework и выполняется в контейнере Windows Server. AKS требует использовать контейнеры Windows Server на основе образов Windows Server 2019 или более поздней версии. Файл манифеста Kubernetes также должен определить селектор узлов , чтобы убедиться, что модули 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.
Разверните приложение с помощью команды kubectl apply и укажите имя манифеста YAML:
kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
В следующем примере выходных данных показано успешное развертывание и служба.
deployment.apps/sample created
service/sample created
Тестирование приложения
При запуске приложения Служба Kubernetes предоставляет внешний интерфейс приложения в Интернете. Процесс создания может занять несколько минут. Иногда подготовка службы может занять больше нескольких минут. Подождите до 10 минут для подготовки.
Ход выполнения можно отслеживать с помощью команды kubectl get service с аргументом
--watch
.kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
Изначально в выходных данных external-IP для примера службы отображается как ожидающий:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Если внешний IP-адрес изменится с ожидающего на IP-адрес, нажмите клавиши CTRL+C, чтобы остановить процесс kubectl watch. В следующем примере выходных данных показан общедоступный IP-адрес, присвоенный службе.
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Просмотрите пример приложения в действии, открыв в веб-браузере внешний IP-адрес и порт образца службы.
Если при попытке загрузить страницу появляется время ожидания подключения, с помощью
kubectl get pods --watch
команды убедитесь, что пример приложения готов. Иногда контейнер Windows не запускается к тому времени, когда будет доступен внешний IP-адрес.
Удаление пула узлов
Удалите пул узлов с помощью az akshybrid nodepool delete
команды .
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait
Дальнейшие действия
В этой статье вы развернули пул узлов Windows в существующем кластере AKS и развернули в нем ASP.NET пример приложения в контейнере Windows Server.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по