Criar contentores do Windows Server
Aplica-se a: Azure Stack HCI, versão 23H2
Neste artigo, vai utilizar a CLI do Azure para implementar um conjunto de nós num cluster do AKS existente que executa contentores do Windows Server. Também implementa um ASP.NET aplicação de exemplo num contentor do Windows Server no cluster.
Pré-requisitos
Crie um cluster do AKS ao seguir as instruções em Como criar clusters do AKS.
Adicionar um conjunto de nós
Por predefinição, é criado um cluster do Kubernetes com um conjunto de nós que pode executar contentores do Linux. Tem de adicionar outro conjunto de nós que possa executar contentores do Windows Server juntamente com o conjunto de nós do Linux.
Adicione um conjunto de nós com anfitriões de contentores do Windows com o az aksarc nodepool add
comando com o parâmetro --os-type Windows
. Se o SKU do sistema operativo não for especificado, o conjunto de nós está definido para o SO predefinido com base na versão do Kubernetes do cluster. O Windows Server 2022 é o sistema operativo predefinido para as versões 1.25.0 e superiores do Kubernetes. O Windows Server 2019 é o SO predefinido para versões anteriores.
- Para utilizar o Windows Server 2019, especifique os seguintes parâmetros:
os-type
defina comoWindows
.os-sku
defina comoWindows2019
.
- Para utilizar o Windows Server 2022, especifique os seguintes parâmetros:
os-type
defina comoWindows
.os-sku
definido comoWindows2022
(opcional).
O comando seguinte cria um novo conjunto de nós com o nome $mynodepool
e adiciona-o a $myAKSCluster
um nó do Windows 2019.
az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2019
Ligar ao cluster do AKS
Agora, pode ligar ao cluster do Kubernetes ao executar o comando a az connectedk8s proxy
partir do seu computador local. Certifique-se de que inicia sessão no Azure antes de executar este comando. Se tiver várias subscrições do Azure, selecione o ID de subscrição adequado com o comando az account set .
Este comando transfere o kubeconfig do cluster do Kubernetes para o seu computador local e abre um canal de ligação proxy para o cluster do Kubernetes no local. O canal está aberto enquanto este comando for executado. Deixe que este comando seja executado enquanto quiser aceder ao cluster. Se o comando exceder o limite de tempo, feche a janela da CLI, abra uma nova e, em seguida, execute o comando novamente.
Tem de ter permissões de Contribuidor no grupo de recursos que aloja o cluster do AKS para executar o seguinte comando com êxito:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Resultado esperado:
Proxy is listening on port 47011
Merged "aks-workload" as current context in .\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using kubeconfig at .\aks-arc-kube-config
Press Ctrl+C to close proxy.
Mantenha esta sessão em execução e ligue-se ao cluster do Kubernetes a partir de uma linha de comandos/terminal diferente. Verifique se consegue ligar ao cluster do Kubernetes ao executar o comando kubectl get. Este comando devolve uma lista dos nós de cluster:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
O exemplo de saída seguinte mostra o nó criado nos passos anteriores. Certifique-se de que o estado do nó é Pronto:
NAME STATUS ROLES AGE VERSION
moc-lesdc78871d Ready control-plane 6d8h v1.26.3
moc-lupeeyd0f8c Ready <none> 6d8h v1.26.3
moc-ww2c8d5ranw Ready <none> 7m18s v1.26.3
Implementar a aplicação
Um ficheiro de manifesto do Kubernetes define o estado pretendido de um cluster, como as imagens de contentor a executar.
Pode utilizar um manifesto YAML 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 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 requer que os contentores do Windows Server se baseiem em imagens do Windows Server 2019 ou superior. O ficheiro de manifesto do Kubernetes também tem de definir um seletor de nós para garantir que os pods da aplicação de exemplo ASP.NET estão agendados num nó que pode executar contentores do Windows Server.
Crie um ficheiro com o nome sample.yaml e copie na 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: "kubernetes.io/os": windows containers: - name: sample image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp resources: limits: cpu: 1 memory: 800M 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
Para obter uma discriminação dos ficheiros de manifesto YAML, veja Deployments and YAML manifests (Implementações e manifestos YAML).
Implemente a aplicação com o comando kubectl apply e especifique o nome do seu manifesto YAML:
kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
O resultado de exemplo seguinte mostra a implementação e o serviço 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 para o aprovisionamento.
Monitorize o progresso com o comando kubectl get service com o
--watch
argumento .kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
Inicialmente, o resultado mostra o EXTERNAL-IP do serviço de exemplo 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 mudar de pendente para um endereço IP, utilize CTRL-C para parar o processo de watch kubectl. O resultado de exemplo seguinte mostra um endereço IP público válido atribuído ao serviço:
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Veja a aplicação de exemplo em ação ao abrir um browser para o endereço IP externo e a porta do serviço de exemplo.
Se receber um tempo limite de ligação ao tentar carregar a página, deve verificar se a aplicação de exemplo está pronta com o
kubectl get pods --watch
comando . Por vezes, o contentor do Windows não é iniciado quando o endereço IP externo está disponível.
Eliminar conjunto de nós
Elimine o conjunto de nós com o az akshybrid nodepool delete
comando .
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait
Passos seguintes
Neste artigo, implementou um conjunto de nós do Windows num cluster do AKS existente e implementou um ASP.NET aplicação de exemplo num contentor do Windows Server no mesmo.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários