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

Область применения: AKS в Azure Stack HCI 22H2, AKS на Windows Server

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

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

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

Убедитесь, что выполнены следующие требования:

  • Кластер Служба Azure Kubernetes с по крайней мере одним рабочим узлом Windows и запущенным.
  • Файл kubeconfig для доступа к кластеру.
  • Устанавливается модуль PowerShell AksHci.

При выполнении процедур:

  • Выполните команды в окне администратора PowerShell.
  • Убедитесь, что рабочие нагрузки, относящиеся к ОС, приземлились на соответствующем узле контейнера. Если в кластере Kubernetes имеется смесь рабочих узлов Linux и Windows, можно использовать селекторы узлов или селекторы узлов, а также ограничения и терпимые элементы. Дополнительные сведения см. в разделе об использовании селекторов узлов и селекторов и толерации.

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

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

Пример приложения ASP.NET предоставляется в составе платформа .NET Framework примеров и выполняется в контейнере Windows Server. AkS Arc требует, чтобы контейнеры 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:
        "beta.kubernetes.io/os": windows
      containers:
      - name: sample
        image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
        resources:
          limits:
            cpu: 1
            memory: 800M
          requests:
            cpu: .1
            memory: 300M
        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

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

kubectl apply -f sample.yaml

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

deployment.apps/sample created
service/sample created

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

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

Чтобы отслеживать ход выполнения, используйте 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

Когда значение EXTERNAL-IP изменится с состояния pending на фактический общедоступный IP-адрес, используйте команду CTRL-C, чтобы остановить процесс отслеживания kubectl. В следующем примере выходных данных показан общедоступный IP-адрес, присвоенный службе.

NAME    TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
sample  LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Чтобы увидеть пример приложения в действии, откройте в веб-браузере внешний IP-адрес вашей службы.

Снимок экрана: домашняя страница для примера приложения ASP.NET для Windows, развернутого в кластере AKS.

Если время ожидания подключения при попытке загрузить страницу, проверьте, готов ли пример приложения, выполнив kubectl get pods --watch команду. Иногда внешний IP-адрес доступен до запуска контейнера Windows.

Масштабирование модулей pod приложений

Мы создали одну реплику внешнего интерфейса приложения. Чтобы просмотреть количество и состояние модулей pod в кластере, выполните следующую kubectl get команду:

kubectl get pods -n default

Чтобы изменить количество модулей pod в примере развертывания, используйте kubectl scale команду. В следующем примере число интерфейсных модулей pod увеличивается до 3:

kubectl scale --replicas=3 deployment/sample

Запустите kubectl get pods еще раз, чтобы убедиться, что созданные модули pod были созданы. Они становятся доступными примерно через минуту.

kubectl get pods -n default

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