Implementar aplicações do Windows

Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server

Este tutorial descreve como implementar uma aplicação de exemplo ASP.NET num contentor do Windows Server no cluster do Azure Kubernetes Service (AKS) no AKS ativado pelo Arc e, em seguida, testar e dimensionar a sua aplicação. Também irá aprender a associar um nó do Windows a um domínio do Active Directory.

Este tutorial pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, veja Kubernetes core concepts for AKS enabled by Azure Arc (Conceitos fundamentais do Kubernetes para o AKS ativado pelo Azure Arc).

Antes de começar

Certifique-se de que cumpriu os seguintes requisitos:

Quando seguir os procedimentos:

  • Execute os comandos numa janela administrativa do PowerShell.
  • Certifique-se de que as cargas de trabalho específicas do SO se baseiam no anfitrião de contentor adequado. Se o cluster do Kubernetes tiver uma mistura de nós de trabalho do Linux e do Windows, pode utilizar seletores de nós ou taints e tolerâncias. Para obter mais informações, veja utilizar seletores de nós, taints e tolerâncias.

Implementar a aplicação

Um ficheiro de manifesto do Kubernetes define um estado pretendido para o cluster, como as imagens de contentor a executar. Nestes procedimentos, é utilizado um manifesto para criar todos os objetos necessários para executar o ASP.NET aplicação de exemplo num contentor do Windows Server. Este manifesto inclui uma implementação do Kubernetes para o ASP.NET aplicação de exemplo e um serviço do Kubernetes externo para aceder à aplicação a partir da Internet.

A aplicação de exemplo ASP.NET é fornecida como parte do .NET Framework exemplos e é executada num contentor do Windows Server. O AKS Arc requer que os contentores do Windows Server se baseiem em imagens do Windows Server 2019.

O ficheiro de manifesto do Kubernetes também tem de definir um seletor de nós para indicar ao cluster para executar o ASP.NET pod da aplicação de exemplo num nó que possa executar contentores do Windows Server.

Create um ficheiro com o nome sample.yamle copie/cole a seguinte definição 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

Implemente a aplicação com o kubectl apply comando e especifique o nome do seu manifesto YAML:

kubectl apply -f sample.yaml

O seguinte resultado de exemplo mostra que a implementação e o serviço foram criados com êxito:

deployment.apps/sample created
service/sample created

Testar a aplicação

Quando a aplicação é executada, um serviço do Kubernetes expõe o front-end da aplicação à Internet. Este processo pode demorar alguns minutos a concluir. Ocasionalmente, o serviço pode demorar mais do que alguns minutos a aprovisionar. Aguarde até 10 minutos nestes casos.

Para monitorizar o progresso, utilize o kubectl get service comando com o --watch argumento :

kubectl get service sample --watch

Inicialmente, o EXTERNAL-IP do serviço de exemplo é apresentado como pendente.

NAME    TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
sample  LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

Quando o endereço IP EXTERNO mudar de pendente para um endereço IP público real, utilize CTRL-C para parar o kubectl processo de watch. O resultado de exemplo seguinte mostra um endereço IP público válido atribuído ao serviço:

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

Para ver a aplicação de exemplo em ação, abra um browser para o endereço IP externo do seu serviço.

Captura de ecrã da home page do ASP.NET aplicação de exemplo para Windows implementada num cluster do AKS.

Se a ligação exceder o limite de tempo quando tentar carregar a página, verifique se a aplicação de exemplo está pronta ao executar o kubectl get pods --watch comando . Por vezes, o endereço IP externo está disponível antes do início do contentor do Windows.

Dimensionar pods de aplicações

Criámos uma única réplica do front-end da aplicação. Para ver o número e o estado dos pods no cluster, utilize o comando da kubectl get seguinte forma:

kubectl get pods -n default

Para alterar o número de pods na implementação de exemplo , utilize o kubectl scale comando . O exemplo seguinte aumenta o número de pods de front-end para 3:

kubectl scale --replicas=3 deployment/sample

Execute kubectl get pods novamente para verificar se os pods foram criados. Um ou dois minutos depois, os pods adicionais estão disponíveis no seu cluster:

kubectl get pods -n default

Passos seguintes