Visualização-criar um contêiner do Windows Server em um cluster do AKS (serviço kubernetes do Azure) usando o CLI do AzurePreview - Create a Windows Server container on an Azure Kubernetes Service (AKS) cluster using the Azure CLI

O AKS (serviço kubernetes do Azure) é um serviço gerenciado kubernetes que permite implantar e gerenciar clusters rapidamente.Azure Kubernetes Service (AKS) is a managed Kubernetes service that lets you quickly deploy and manage clusters. Neste artigo, você implanta um cluster AKS usando o CLI do Azure.In this article, you deploy an AKS cluster using the Azure CLI. Você também implanta um aplicativo de exemplo ASP.NET em um contêiner do Windows Server para o cluster.You also deploy an ASP.NET sample application in a Windows Server container to the cluster.

Esta funcionalidade encontra-se em pré-visualização.This feature is currently in preview.

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

Este artigo pressupõe uma compreensão básica dos conceitos de kubernetes.This article assumes a basic understanding of Kubernetes concepts. Para obter mais informações, consulte kubernetes Core Concepts for Azure kubernetes Service (AKs).For more information, see Kubernetes core concepts for Azure Kubernetes Service (AKS).

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Utilizar o Azure Cloud ShellUse Azure Cloud Shell

O Azure hospeda Azure Cloud Shell, um ambiente de shell interativo que você pode usar por meio de seu navegador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell permite que você use bash o PowerShell ou o para trabalhar com os serviços do Azure.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Você pode usar os comandos pré-instalados Cloud Shell para executar o código neste artigo sem precisar instalar nada em seu ambiente local.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Para iniciar o Azure Cloud Shell:To launch Azure Cloud Shell:

OpçãoOption Exemplo/linkExample/Link
Selecione Experimentar no canto superior direito de um bloco de código.Select Try It in the upper-right corner of a code block. A seleção de try não copia automaticamente o código para Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemplo de teste para Azure Cloud Shell
Vá para https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir Cloud Shell em seu navegador.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell em uma nova janelaLaunch Cloud Shell in a new window
Selecione o botão Cloud Shell na barra de menus superior direita na portal do Azure.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Botão Cloud Shell no portal do Azure

Para executar o código neste artigo em Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Abra o Cloud Shell.Open Cloud Shell.
  2. Selecione o botão copiar em um bloco de código para copiar o código.Select the Copy button on a code block to copy the code.
  3. Cole o código na sessão de Cloud shell com Ctrl+Shift+v no Windows e Linux, ou cmd+Shift+v no MacOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Pressione Enter para executar o código.Press Enter to run the code.

Se você optar por instalar e usar a CLI localmente, este artigo exigirá que você esteja executando o CLI do Azure versão 2.0.61 ou posterior.If you choose to install and use the CLI locally, this article requires that you are running the Azure CLI version 2.0.61 or later. Executar az --version para localizar a versão.Run az --version to find the version. Se precisar de instalar ou atualizar, veja Instalar a CLI do Azure.If you need to install or upgrade, see Install Azure CLI.

Antes de começarBefore you begin

Você deve adicionar um pool de nós adicional depois de criar o cluster que pode executar contêineres do Windows Server.You must add an additional node pool after you create your cluster that can run Windows Server containers. Adicionar um pool de nós adicional é abordado em uma etapa posterior, mas primeiro você precisa habilitar alguns recursos de visualização.Adding an additional node pool is covered in a later step, but you first need to enable a few preview features.

Importante

Os recursos de visualização do AKS são consentimento de autoatendimento.AKS preview features are self-service opt-in. As visualizações são fornecidas "no estado em que se encontram" e "como disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada.Previews are provided "as-is" and "as available" and are excluded from the service level agreements and limited warranty. As visualizações do AKS são parcialmente cobertas pelo suporte ao cliente com base no melhor esforço.AKS Previews are partially covered by customer support on best effort basis. Dessa forma, esses recursos não são destinados ao uso em produção.As such, these features are not meant for production use. Para obter outras incompatibilidades, consulte os seguintes artigos de suporte:For additional infromation, please see the following support articles:

Instalar a extensão da CLI do AKS-PreviewInstall aks-preview CLI extension

Para usar contêineres do Windows Server, você precisa da extensão da CLI do AKs versão 0.4.1 ou superior.To use Windows Server containers, you need the aks-preview CLI extension version 0.4.1 or higher. Instale a extensão de CLI do Azure de AKs-Preview usando o comando AZ Extension Add e, em seguida, verifique se há atualizações disponíveis usando o comando AZ Extension Update ::Install the aks-preview Azure CLI extension using the az extension add command, then check for any available updates using the az extension update command::

# Install the aks-preview extension
az extension add --name aks-preview

# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview

Registrar o recurso de visualização do WindowsRegister Windows preview feature

Para criar um cluster AKS que pode usar vários pools de nó e executar contêineres do Windows Server, primeiro habilite os sinalizadores de recurso WindowsPreview em sua assinatura.To create an AKS cluster that can use multiple node pools and run Windows Server containers, first enable the WindowsPreview feature flags on your subscription. O recurso WindowsPreview também usa clusters de pool de vários nós e conjunto de dimensionamento de máquinas virtuais para gerenciar a implantação e a configuração dos nós kubernetes.The WindowsPreview feature also uses multi-node pool clusters and virtual machine scale set to manage the deployment and configuration of the Kubernetes nodes. Registre o sinalizador de recurso WindowsPreview usando o comando AZ Feature Register , conforme mostrado no exemplo a seguir:Register the WindowsPreview feature flag using the az feature register command as shown in the following example:

az feature register --name WindowsPreview --namespace Microsoft.ContainerService

Nota

Qualquer cluster AKS que você criar depois de registrar com êxito o sinalizador de recurso WindowsPreview usará essa experiência de visualização de cluster.Any AKS cluster you create after you've successfully registered the WindowsPreview feature flag use this preview cluster experience. Para continuar a criar clusters regulares e com suporte total, não habilite os recursos de visualização em assinaturas de produção.To continue to create regular, fully-supported clusters, don't enable preview features on production subscriptions. Use uma assinatura de teste ou desenvolvimento separada do Azure para testar os recursos de visualização.Use a separate test or development Azure subscription for testing preview features.

Demora alguns minutos para que o registro seja concluído.It takes a few minutes for the registration to complete. Verifique o status do registro usando o comando AZ Feature List :Check on the registration status using the az feature list command:

az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/WindowsPreview')].{Name:name,State:properties.state}"

Quando o estado do registro Registeredfor, pressione CTRL-C para parar de monitorar o estado.When the registration state is Registered, press Ctrl-C to stop monitoring the state. Em seguida, atualize o registro do provedor de recursos Microsoft. ContainerService usando o comando AZ Provider Register :Then refresh the registration of the Microsoft.ContainerService resource provider using the az provider register command:

az provider register --namespace Microsoft.ContainerService

LimitaçõesLimitations

As seguintes limitações se aplicam quando você cria e gerencia clusters AKS que dão suporte a vários pools de nós:The following limitations apply when you create and manage AKS clusters that support multiple node pools:

  • Vários pools de nó estão disponíveis para clusters criados depois que você registrou o WindowsPreviewcom êxito.Multiple node pools are available for clusters created after you've successfully registered the WindowsPreview. Vários pools de nós também estarão disponíveis se você registrar os recursos MultiAgentpoolPreview e VMSSPreview para sua assinatura.Multiple node pools are also available if you register the MultiAgentpoolPreview and VMSSPreview features for your subscription. Você não pode adicionar ou gerenciar pools de nós com um cluster AKS existente criado antes que esses recursos tenham sido registrados com êxito.You can't add or manage node pools with an existing AKS cluster created before these features were successfully registered.
  • Não é possível excluir o primeiro pool de nós.You can't delete the first node pool.

Embora esse recurso esteja em versão prévia, as seguintes limitações adicionais se aplicam:While this feature is in preview, the following additional limitations apply:

  • O cluster AKS pode ter um máximo de oito pools de nós.The AKS cluster can have a maximum of eight node pools.
  • O cluster AKS pode ter um máximo de 400 nós entre esses oito pools de nós.The AKS cluster can have a maximum of 400 nodes across those eight node pools.
  • O nome do pool de nós do Windows Server tem um limite de 6 caracteres.The Windows Server node pool name has a limit of 6 characters.

Criar um grupo de recursosCreate a resource group

Um grupo de recursos do Azure é um grupo lógico, no qual os recursos do Azure são implementados e geridos.An Azure resource group is a logical group in which Azure resources are deployed and managed. Quando cria um grupo de recursos, é-lhe pedido que especifique uma localização.When you create a resource group, you are asked to specify a location. Esse local é onde os metadados do grupo de recursos são armazenados, também é onde os recursos são executados no Azure se você não especificar outra região durante a criação do recurso.This location is where resource group metadata is stored, it is also where your resources run in Azure if you don't specify another region during resource creation. Crie um grupo de recursos usando o comando AZ Group Create .Create a resource group using the az group create command.

O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.The following example creates a resource group named myResourceGroup in the eastus location.

Nota

Este artigo usa a sintaxe bash para os comandos neste tutorial.This article uses Bash syntax for the commands in this tutorial. Se você estiver usando Azure Cloud Shell, verifique se a lista suspensa no canto superior esquerdo da janela Cloud Shell está definida como bash.If you are using Azure Cloud Shell, ensure that the dropdown in the upper-left of the Cloud Shell window is set to Bash.

az group create --name myResourceGroup --location eastus

A saída de exemplo a seguir mostra o grupo de recursos criado com êxito:The following example output shows the resource group created successfully:

{
  "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
  "location": "eastus",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": null
}

Criar um cluster do AKS (Create an AKS cluster)Create an AKS cluster

Para executar um cluster AKS que dá suporte a pools de nós para contêineres do Windows Server, o cluster precisa usar uma política de rede que usa o plug-in de rede CNI do Azure (avançado).In order to run an AKS cluster that supports node pools for Windows Server containers, your cluster needs to use a network policy that uses Azure CNI (advanced) network plugin. Para obter informações mais detalhadas para ajudar a planejar os intervalos de sub-rede e as considerações de rede necessários, consulte Configurar a rede CNI do Azure.For more detailed information to help plan out the required subnet ranges and network considerations, see configure Azure CNI networking. Use o comando AZ AKs Create para criar um cluster AKs chamado myAKSCluster.Use the az aks create command to create an AKS cluster named myAKSCluster. Esse comando criará os recursos de rede necessários, se eles não existirem.This command will create the necessary network resources if they don't exist.

  • O cluster está configurado com um nóThe cluster is configured with one node
  • Os parâmetros Windows-admin-password e Windows-admin-username definem as credenciais de administrador para qualquer contêiner do Windows Server criado no cluster.The windows-admin-password and windows-admin-username parameters set the admin credentials for any Windows Server containers created on the cluster.

Forneça seu próprio PASSWORD_WIN seguro (Lembre-se de que os comandos neste artigo são inseridos em um shell bash):Provide your own secure PASSWORD_WIN (remember that the commands in this article are entered into a BASH shell):

PASSWORD_WIN="P@ssw0rd1234"

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 1 \
    --enable-addons monitoring \
    --kubernetes-version 1.14.6 \
    --generate-ssh-keys \
    --windows-admin-password $PASSWORD_WIN \
    --windows-admin-username azureuser \
    --enable-vmss \
    --network-plugin azure

Nota

Se você receber um erro de validação de senha, tente criar seu grupo de recursos em outra região.If you get a password validation error, try creating your resource group in another region. Em seguida, tente criar o cluster com o novo grupo de recursos.Then try creating the cluster with the new resource group.

Após alguns minutos, o comando é concluído e retorna informações formatadas em JSON sobre o cluster.After a few minutes, the command completes and returns JSON-formatted information about the cluster.

Adicionar um pool de nós do Windows ServerAdd a Windows Server node pool

Por padrão, um cluster AKS é criado com um pool de nós que pode executar contêineres do Linux.By default, an AKS cluster is created with a node pool that can run Linux containers. Use az aks nodepool add o comando para adicionar um pool de nós adicional que pode executar contêineres do Windows Server.Use az aks nodepool add command to add an additional node pool that can run Windows Server containers.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --os-type Windows \
    --name npwin \
    --node-count 1 \
    --kubernetes-version 1.14.6

O comando acima cria um novo pool de nós chamado npwin e o adiciona ao myAKSCluster.The above command creates a new node pool named npwin and adds it to the myAKSCluster. Ao criar um pool de nós para executar contêineres do Windows Server, o valor padrão para node-VM-size é Standard_D2s_v3.When creating a node pool to run Windows Server containers, the default value for node-vm-size is Standard_D2s_v3. Se você optar por definir o parâmetro nó-VM-size , verifique a lista de tamanhos de VM restritos.If you choose to set the node-vm-size parameter, please check the list of restricted VM sizes. O tamanho mínimo recomendado é Standard_D2s_v3.The minimum recommended size is Standard_D2s_v3. O comando acima também usa a sub-rede padrão na vnet padrão criada durante a execução az aks create.The above command also uses the default subnet in the default vnet created when running az aks create.

Ligar ao clusterConnect to the cluster

Para gerenciar um cluster kubernetes, você usa kubectl, o cliente de linha de comando kubernetes.To manage a Kubernetes cluster, you use kubectl, the Kubernetes command-line client. Se você usar o Azure cloud Shell kubectl , o já estará instalado.If you use Azure Cloud Shell, kubectl is already installed. Para instalar kubectl localmente, use o comando AZ AKs install-CLI :To install kubectl locally, use the az aks install-cli command:

az aks install-cli

Para configurar kubectl o para se conectar ao cluster do kubernetes, use o comando AZ AKs Get-Credentials .To configure kubectl to connect to your Kubernetes cluster, use the az aks get-credentials command. Esse comando baixa as credenciais e configura a CLI do kubernetes para usá-las.This command downloads credentials and configures the Kubernetes CLI to use them.

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

Para verificar a ligação ao cluster, utilize o comando kubectl get para devolver uma lista de nós do cluster.To verify the connection to your cluster, use the kubectl get command to return a list of the cluster nodes.

kubectl get nodes

A saída de exemplo seguinte mostra o nó único criado nos passos anteriores.The following example output shows the single node created in the previous steps. Verifique se o status do nó está pronto:Make sure that the status of the node is Ready:

NAME                                STATUS   ROLES   AGE    VERSION
aks-nodepool1-12345678-vmssfedcba   Ready    agent   13m    v1.14.6
aksnpwin987654                      Ready    agent   108s   v1.14.6

Executar a aplicaçãoRun the application

Um arquivo de manifesto kubernetes define um estado desejado para o cluster, como quais imagens de contêiner executar.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 kubernetes externo para acessar o 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 do .NET Framework amostras 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 AKS requer que os contêineres do Windows Server sejam baseados em imagens do Windows Server 2019 ou superior.AKS requires Windows Server containers to be based on images of Windows Server 2019 or greater. O arquivo de manifesto kubernetes também deve definir um seletor de para instruir o cluster AKs a executar o Pod do 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 na seguinte definição de YAML.Create a file named sample.yaml and copy in the following YAML definition. Se você usar o Azure cloud Shell, esse arquivo poderá ser criado usando vi ou nano como se estiver trabalhando em um sistema físico ou virtual:If you use the Azure Cloud Shell, this file can be created using vi or nano as if working on a virtual or physical system:

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 comando kubectl Apply 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 a aplicaçãoTest the application

Quando o aplicativo é executado, um serviço kubernetes expõe o front-end do aplicativo à Internet.When the application runs, a Kubernetes service exposes the application front end to the internet. Este processo pode demorar alguns minutos a concluir.This process can take a few minutes to complete.

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

kubectl get service sample --watch

Inicialmente, o IP externo 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 IP externo for alterado de pendente para um endereço IP público real, use CTRL-C para interromper o kubectl processo de inspeção.When the EXTERNAL-IP address changes from pending to an actual public IP address, use CTRL-C to stop the kubectl watch process. A saída de exemplo a seguir 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:

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 para o endereço IP externo do seu 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 de exemplo ASP.NET

Eliminar o clusterDelete cluster

Quando o cluster não for mais necessário, use o comando AZ Group Delete para remover o grupo de recursos, o serviço de contêiner e todos os recursos relacionados.When the cluster is no longer needed, use the az group delete command to remove the resource group, container service, and all related resources.

az group delete --name myResourceGroup --yes --no-wait

Nota

Quando elimina o cluster, o principal de serviço do Azure Active Directory utilizado pelo cluster do AKS não é removido.When you delete the cluster, the Azure Active Directory service principal used by the AKS cluster is not removed. Para obter as etapas sobre como remover a entidade de serviço, consulte considerações e exclusão da entidade de serviço AKs.For steps on how to remove the service principal, see AKS service principal considerations and deletion.

Passos seguintesNext steps

Neste artigo, você implantou um cluster kubernetes e implantou um aplicativo de exemplo ASP.NET em um contêiner do Windows Server para ele.In this article, you deployed a Kubernetes cluster and deployed an ASP.NET sample application in a Windows Server container to it. Acesse o painel da Web do kubernetes para o cluster que você acabou de criar.Access the Kubernetes web dashboard for the cluster you just created.

Para saber mais sobre o AKS e ver um exemplo completo de código para implementação, avance para o tutorial dos clusters de Kubernetes.To learn more about AKS, and walk through a complete code to deployment example, continue to the Kubernetes cluster tutorial.