Implantar aplicativos do Windows no serviço kubernetes do Azure no HCI Azure StackDeploy Windows applications in Azure Kubernetes Service on Azure Stack HCI

Aplica-se a: AKS em Azure Stack HCI, tempo de execução de AKS no Windows Server 2019 datacenterApplies to: AKS on Azure Stack HCI, AKS runtime on Windows Server 2019 Datacenter

Neste tutorial, você implanta um aplicativo de exemplo ASP.NET em um contêiner do Windows Server para o cluster kubernetes e aprende a ver como testar e dimensionar seu aplicativo.In this tutorial, you deploy an ASP.NET sample application in a Windows Server container to the Kubernetes cluster and learn how to see how to test and scale your application. Você também aprenderá como unir um nó do Windows a um domínio Active Directory.You will also learn how to join a Windows nodes to an Active Directory domain. Este tutorial pressupõe uma compreensão básica dos conceitos de kubernetes.This tutorial assumes a basic understanding of Kubernetes concepts. Para obter mais informações, consulte kubernetes Core Concepts for Azure kubernetes Service on Azure Stack HCI.For more information, see Kubernetes core concepts for Azure Kubernetes Service on Azure Stack HCI.

Antes de começarBefore you begin

Verifique se os seguintes requisitos estão prontos:Verify you have the following requirements ready:

  • Um serviço kubernetes do Azure em Azure Stack cluster HCI com pelo menos um nó de trabalho do Windows em execução.An Azure Kubernetes Service on Azure Stack HCI cluster with at least one Windows worker node that is up and running.
  • Um arquivo kubeconfig para acessar o cluster.A kubeconfig file to access the cluster.
  • Tenha o serviço kubernetes do Azure em Azure Stack módulo do PowerShell do HCI instalado.Have the Azure Kubernetes Service on Azure Stack HCI PowerShell module installed.
  • Execute os comandos deste documento em uma janela administrativa do PowerShell.Run the commands in this document in a PowerShell administrative window.
  • Verifique se as cargas de trabalho específicas do sistema operacional estão no host do contêiner apropriado.Ensure that OS specific workloads land on the appropriate container host. Se você tiver um cluster misto de nós de trabalho do Linux e do Windows kubernetes, poderá usar seletores de nó ou os comparações e o Tolerations.If you have a mixed Linux and Windows worker nodes Kubernetes cluster, you can either use node selectors or taints and tolerations. Para obter mais informações, consulte usando seletores de nó e seus Tolerations.For more information, see using node selectors and taints and tolerations.

Implantar o aplicativoDeploy the application

Um arquivo de manifesto do Kubernetes define um estado desejado para o cluster, como as imagens de contêiner a serem executadas.A Kubernetes manifest file defines a desired state for the cluster, such as what container images to run. Neste artigo, 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.In this article, a manifest is used to create all objects needed to run the ASP.NET sample application in a Windows Server container. 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.This manifest includes a Kubernetes deployment for the ASP.NET sample application and an external Kubernetes service to access the application from the internet.

O aplicativo de exemplo ASP.NET é fornecido como parte das Amostras .NET Framework e é executado em um contêiner do Windows Server.The ASP.NET sample application is provided as part of the .NET Framework Samples and runs in a Windows Server container. O serviço kubernetes do Azure na Azure Stack HCI requer que os contêineres do Windows Server sejam baseados em imagens do Windows server 2019.Azure Kubernetes Service on Azure Stack HCI requires Windows Server containers to be based on images of 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.The Kubernetes manifest file must also define a node selector to tell your AKS cluster to run your ASP.NET sample application's pod on a node that can run Windows Server containers.

Crie um arquivo chamado sample.yaml e copie a definição YAML a seguir.Create a file named sample.yaml and copy in the following YAML definition.

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 seu manifesto YAML:Deploy the application using the kubectl apply command and specify the name of your YAML manifest:

kubectl apply -f sample.yaml

A saída de exemplo a seguir mostra a implantação e o serviço criados com êxito:The following example output shows the deployment and service created successfully:

deployment.apps/sample created
service/sample created

Testar o aplicativoTest the application

Quando o aplicativo é executado, um serviço de Kubernetes expõe o front-end do aplicativo à Internet.When the application runs, a Kubernetes service exposes the application front end to the internet. A conclusão desse processo pode levar alguns minutos.This process can take a few minutes to complete. Ocasionalmente, o serviço pode levar mais de alguns minutos para ser provisionado.Occasionally the service can take longer than a few minutes to provision. Aguarde até dez minutos nesses casos.Allow up to 10 minutes in these cases.

Para monitorar o progresso, use o kubectl get service comando com o --watch argumento.To monitor progress, use the kubectl get service command with the --watch argument.

kubectl get service sample --watch

Inicialmente, o EXTERNAL-IP para o serviço de exemplo é mostrado como pendente.Initially the EXTERNAL-IP for the sample service is shown as pending.

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.When the EXTERNAL-IP address changes from pending to an actual public IP address, use CTRL-C to stop the kubectl watch process. A seguinte saída de exemplo mostra um endereço IP público válido atribuído ao serviço:The following example output shows a valid public IP address assigned to the service:

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.To see the sample app in action, open a web browser to the external IP address of your service.

Imagem de navegação para o aplicativo ASP.NET de exemplo

Se você receber um tempo limite de conexão ao tentar carregar a página, verifique se o aplicativo de exemplo está pronto com o kubectl get pods --watch comando.If you receive a connection timeout when trying to load the page, verify if the sample app is ready with kubectl get pods --watch command. Às vezes, o endereço IP externo está disponível antes do contêiner do Windows ser iniciado.Sometimes, the external IP address is available before the windows container has started.

Dimensionar pods de aplicativoScale application pods

Criamos uma única réplica do front-end do aplicativo.We have created a single replica of the application front-end. Para ver o número e o estado de pods em seu cluster, use o kubectl get comando da seguinte maneira:To see the number and state of pods in your cluster, use the kubectl get command as follows:

kubectl get pods -n default

Para alterar o número de pods na implantação de exemplo , use o kubectl scale comando.To change the number of pods in the sample deployment, use the kubectl scale command. O exemplo a seguir aumenta o número de pods de front-end para 3:The following example increases the number of front-end pods to 3:

kubectl scale --replicas=3 deployment/sample

Execute kubectl get pods novamente para verificar se os pods adicionais foram criados.Run kubectl get pods again to verify that additional pods have been created. Após aproximadamente um minuto, os pods adicionais estão disponíveis em seu cluster:After a minute or so, the additional pods are available in your cluster:

kubectl get pods -n default

Próximas etapasNext steps