Implantar aplicativos do Windows no AKS híbrido

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

Neste tutorial, você aprenderá a implantar um aplicativo de exemplo ASP.NET em um contêiner do Windows Server no cluster Serviço de Kubernetes do Azure (AKS) no AKS híbrido e testar e dimensionar seu aplicativo. Você também aprenderá a unir 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, consulte Conceitos principais do Kubernetes para o AKS híbrido.

Antes de começar

Verifique se você atendeu aos seguintes requisitos:

Quando você faz os procedimentos:

  • Execute os comandos em uma janela administrativa do PowerShell.
  • Verifique se as cargas de trabalho específicas do sistema operacional chegam ao host de contêiner apropriado. Se o cluster do Kubernetes tiver uma combinação de nós de trabalho do Linux e do Windows, você poderá usar seletores de nó ou taints e tolerâncias. Para obter mais informações, consulte usando seletores de nó e taints e tolerâncias.

Implantar o aplicativo

Um arquivo de manifesto do Kubernetes define um estado desejado para o cluster, como quais imagens de contêiner serão executadas. Nesses procedimentos, um manifesto é usado para criar todos os objetos necessários para executar o aplicativo de exemplo ASP.NET em um contêiner do Windows Server. Esse manifesto inclui uma implantação do Kubernetes para o aplicativo de exemplo ASP.NET e um serviço do Kubernetes externo para acessar ao aplicativo da Internet.

O aplicativo de exemplo ASP.NET é fornecido como parte das Amostras .NET Framework e é executado em um contêiner do Windows Server. O AKS híbrido exige que os contêineres do Windows Server sejam baseados em imagens do Windows Server 2019.

O arquivo de manifesto Kubernetes também deve definir um seletor de nó para instruir o cluster AKS a executar o pod de seu aplicativo de exemplo ASP.NET em um nó que possa executar contêineres do Windows Server.

Crie um arquivo chamado sample.yamle copie na definição yaml a seguir.

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

Implante o aplicativo usando o kubectl apply comando e especifique o nome do manifesto YAML:

kubectl apply -f sample.yaml

A saída de exemplo a seguir mostra que a implantação e o serviço foram criados com êxito:

deployment.apps/sample created
service/sample created

Testar o aplicativo

Quando o aplicativo é executado, um serviço de Kubernetes expõe o front-end do aplicativo à Internet. A conclusão desse processo pode levar alguns minutos. Ocasionalmente, o serviço pode levar mais de alguns minutos para ser provisionado. Aguarde até dez minutos nesses casos.

Para monitorar o andamento, use o comando kubectl get service com o argumento --watch.

kubectl get service sample --watch

Inicialmente, o EXTERNAL-IP para o serviço de exemplo é mostrado 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 EXTERNAL-IP for alterado de pendente para um endereço IP público real, use CTRL-C para interromper o processo de inspeção do kubectl. A seguinte saída de exemplo 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 o aplicativo de exemplo em ação, abra um navegador da Web no endereço IP externo do serviço.

Captura de tela da home page do aplicativo de exemplo ASP.NET para Windows implantado em um cluster do AKS.

Se a conexão atingir o tempo limite ao tentar carregar a página, verifique se o aplicativo de exemplo está pronto executando o kubectl get pods --watch comando. Às vezes, o endereço IP externo está disponível antes do início do contêiner do Windows.

Dimensionar pods de aplicativo

Criamos uma única réplica do front-end do aplicativo. Para ver o número e o estado dos pods no cluster, use o comando da kubectl get seguinte maneira:

kubectl get pods -n default

Para alterar o número de pods na implantação de exemplo , use o kubectl scale comando . O exemplo a seguir aumenta o número de pods front-end para 3:

kubectl scale --replicas=3 deployment/sample

Execute kubectl get pods novamente para verificar se os pods foram criados. Após um minuto ou mais, os pods adicionais estão disponíveis no cluster.

kubectl get pods -n default

Próximas etapas