Tutorial: Implementar uma aplicação do Linux
Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server
Este tutorial descreve como implementar uma aplicação com vários contentores que inclui um front-end da Web e uma instância de base de dados Redis no cluster do Kubernetes no AKS ativado pelo Azure Arc. Também irá aprender a testar e dimensionar a sua aplicação.
Este tutorial pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, veja Kubernetes core concepts (Conceitos fundamentais do Kubernetes).
Antes de começar
Verifique se tem os seguintes requisitos prontos:
- Um cluster do AKS com, pelo menos, um nó de trabalho do Linux em execução.
- Um ficheiro kubeconfig para aceder ao cluster.
- O módulo AksHci do PowerShell está instalado. Para obter mais informações, veja Install-AksHci.
Quando efetua os procedimentos do tutorial:
- Execute os comandos numa janela do PowerShell aberta com privilégios administrativos.
- Certifique-se de que as cargas de trabalho específicas do SO se baseiam no anfitrião de contentor adequado. Se o cluster do Kubernetes tiver uma mistura de nós de trabalho do Linux e do Windows, pode utilizar seletores de nós ou taints e tolerâncias. Para obter mais informações, veja utilizar seletores de nós, taints e tolerâncias.
Nota
A implementação de um cluster de destino que partilha uma rede com outro cluster de destino pode levar a conflitos de endereços IP do balanceador de carga.
Os conflitos de endereços IP podem ocorrer se implementar duas cargas de trabalho que utilizam portas diferentes em clusters de destino 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 isto ocorrer, uma ou ambas as cargas de trabalho podem encontrar problemas de conectividade de rede aleatórios até voltar a implementar as cargas de trabalho. Quando implementar novamente as cargas de trabalho, pode utilizar a mesma porta, que atribui um endereço IP de serviço a cada carga de trabalho, ou pode voltar a implementar as cargas de trabalho em clusters de destino que utilizam objetos diferentes AksHciClusterNetwork
.
Implementar a aplicação
Um ficheiro de manifesto do Kubernetes define um estado pretendido para o cluster, como as imagens de contentor a executar. Este tutorial utiliza um manifesto para criar todos os objetos necessários para executar a aplicação de voto do Azure. Este manifesto inclui duas implementações do Kubernetes: uma para as aplicações Python do Azure Vote de exemplo e outra para uma instância do Redis. Também são criados dois serviços do Kubernetes: um serviço interno para a instância do Redis e um serviço externo para aceder à aplicação Azure Vote a partir da Internet.
Create um ficheiro com o nome 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: mcr.microsoft.com/azuredocs/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
Implemente a aplicação com o kubectl apply
comando e especifique o nome do seu manifesto YAML:
kubectl apply -f azure-vote.yaml
O resultado de exemplo seguinte mostra as implementações e os serviços que foram criados com êxito:
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 é executada, um serviço do Kubernetes expõe o front-end da aplicação à Internet. Este processo pode demorar alguns minutos a concluir.
Para monitorizar o progresso, utilize 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 EXTERNAL-IP mudar de pendente para um endereço IP público real, utilize CTRL-C para parar o kubectl
processo de watch. O resultado de exemplo seguinte 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 a aplicação Azure Vote em ação, abra um browser para o endereço IP externo do seu serviço.
Dimensionar pods de aplicações
Criámos uma única réplica do front-end da Aplicação de Voto do Azure e da instância do Redis. Para ver o número e o estado dos pods no cluster, utilize o kubectl get
comando :
kubectl get pods -n default
O resultado do exemplo seguinte mostra um pod de front-end e um pod de 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 , utilize o kubectl scale
comando . O exemplo seguinte aumenta o número de pods de front-end para 5:
kubectl scale --replicas=5 deployment/azure-vote-front
Execute kubectl get pods
novamente para verificar se foram criados pods adicionais. Um ou dois minutos depois, 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
Utilizar o Azure Monitor para monitorizar o cluster e a aplicação
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