Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se para: AKS no Windows Server
Este guia descreve como implementar uma aplicação multi-contentor que inclua uma interface web e uma instância de base de dados Redis no seu cluster Kubernetes no AKS no Windows Server. Também aprende a testar e escalar a sua aplicação.
Este guia prático assume uma compreensão básica dos conceitos do Kubernetes. Para mais informações, consulte os conceitos centrais do Kubernetes.
Antes de começares
Verifique se tem os seguintes pré-requisitos:
- Um cluster do AKS com pelo menos um nó de trabalho Linux em execução e operacional.
- Um arquivo kubeconfig para acessar o cluster.
- O módulo PowerShell AksHci está instalado. Para mais informações, consulte Install-AksHci.
Quando executar os procedimentos:
- Executa os comandos numa janela PowerShell aberta com privilégios administrativos.
- Certifique-se de que as cargas de trabalho específicas do SO aterrissem no host de contêiner apropriado. Se o seu cluster do Kubernetes tiver uma mistura de nós de trabalho Linux e Windows, pode utilizar seletores de nós ou taints e tolerations. Para obter mais informações, consulte Usando seletores de nó e manchas e tolerâncias.
Note
A implementação de um cluster alvo que partilha uma rede com outro cluster alvo pode levar a conflitos de endereços IP do balanceador de carga.
Conflitos de endereços IP podem ocorrer se implementares duas cargas de trabalho que usam portas diferentes em clusters alvo que partilham o mesmo AksHciClusterNetwork objeto. Devido à forma como os endereços IP e os mapeamentos de portas são alocados dentro do Proxy HA, pode levar à atribuição de endereços IP duplicados. Se isso ocorrer, uma ou ambas as cargas de trabalho podem encontrar problemas aleatórios de conectividade de rede até que você reimplante suas cargas de trabalho. Quando reimplantas as tuas cargas de trabalho, podes usar a mesma porta, que atribui um endereço IP de serviço a cada carga de trabalho, ou podes redistribuir as cargas de trabalho em clusters alvo que usam objetos diferentes AksHciClusterNetwork .
Implantar o aplicativo
Um arquivo de manifesto do Kubernetes define um estado desejado para o cluster, como quais imagens de contêiner devem ser executadas. Este tutorial usa um manifesto para criar todos os objetos necessários para correr a aplicação de voto do Azure. Este manifesto inclui duas implementações Kubernetes: uma para as aplicações Azure Vote Python de exemplo, e outra para uma instância Redis. São também criados dois serviços Kubernetes: um serviço interno para a instância Redis e um serviço externo para aceder à aplicação Azure Vote a partir da internet.
Crie um ficheiro chamado azure-vote.yaml e copie/cole a seguinte definição YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: redis
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-front
template:
metadata:
labels:
app: azure-vote-front
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: <path to image>/azure-vote-front:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
Implementa a aplicação usando o kubectl apply comando e especifica o nome do teu manifesto YAML:
kubectl apply -f azure-vote.yaml
O seguinte exemplo mostra implementações e serviços que foram criados com sucesso:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Testar a aplicação
Quando a aplicação corre, um serviço Kubernetes expõe a interface da aplicação à internet. Este processo pode demorar alguns minutos a concluir.
Para monitorar o progresso, use o kubectl get service comando com o --watch argumento:
kubectl get service azure-vote-front --watch
Inicialmente, o EXTERNAL-IP do serviço azure-vote-front é apresentado como pendente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 22m
Quando o endereço IP EXTERNO muda de pendente para um endereço IP público real, use CTRL-C para interromper o kubectl processo de vigilância. A saída de exemplo a seguir mostra um endereço IP público válido atribuído ao serviço:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 24m
Para ver o aplicativo Azure Vote em ação, abra um navegador da Web para o endereço IP externo do seu serviço.
Dimensionar pods de aplicação
Criámos uma única réplica da interface da aplicação de votação do Azure e da instância do Redis. Para ver o número e o estado dos pods no seu cluster, use o kubectl get comando:
kubectl get pods -n default
O seguinte exemplo de saída mostra um pod front-end e um pod back-end:
NAME READY STATUS RESTARTS AGE
azure-vote-back-6bdcb87f89-g2pqg 1/1 Running 0 25m
azure-vote-front-84c8bf64fc-cdq86 1/1 Running 0 25m
Para alterar o número de pods na implementação azure-vote-front, use o comando kubectl scale. O exemplo seguinte aumenta o número de pods front-end para 5:
kubectl scale --replicas=5 deployment/azure-vote-front
Execute kubectl get pods novamente para verificar se foram criados pods adicionais. Depois de cerca de um minuto, os pods adicionais estão disponíveis no seu cluster.
kubectl get pods -n default
Name READY STATUS RESTARTS AGE
azure-vote-back-6bdcb87f89-g2pqg 1/1 Running 0 31m
azure-vote-front-84c8bf64fc-cdq86 1/1 Running 0 31m
azure-vote-front-84c8bf64fc-56h64 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-djkp8 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-jmmvs 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-znc6z 1/1 Running 0 80s
Passos seguintes
Usar o Azure Monitor para monitorar seu cluster e aplicativo