Partilhar via


Implantar um aplicativo Linux

Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server

Este guia descreve como implantar um aplicativo de vários contêineres que inclui um front-end da Web e uma instância de banco de dados Redis em seu cluster Kubernetes no AKS habilitado pelo Azure Arc. Você também aprende a testar e dimensionar seu aplicativo.

Este guia de instruções pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, consulte Conceitos principais do Kubernetes.

Antes de começar

Verifique se você tem os seguintes pré-requisitos:

  • Um cluster AKS com pelo menos um nó de trabalho Linux que está instalado e em execução.
  • Um arquivo kubeconfig para acessar o cluster.
  • O módulo AksHci PowerShell está instalado. Para obter mais informações, consulte Install-AksHci.

Quando você executa os procedimentos:

  • Execute os comandos em uma janela do 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 cluster do Kubernetes tiver uma mistura de nós de trabalho do Linux e do Windows, você poderá usar seletores de nós ou manchas e tolerâncias. Para obter mais informações, consulte Usando seletores de nó e manchas e tolerâncias.

Nota

A implantação de um cluster de destino que compartilha uma rede com outro cluster de destino pode levar a conflitos de endereço IP do balanceador de carga. Conflitos de endereço IP podem acontecer se você implantar duas cargas de trabalho que usam portas diferentes em clusters de destino que compartilham o mesmo AksHciClusterNetwork objeto. Devido à maneira como os endereços IP e mapeamentos de porta são alocados dentro do Proxy HA, isso 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. Ao reimplantar suas cargas de trabalho, você pode usar a mesma porta, que atribui um endereço IP de serviço a cada carga de trabalho, ou pode reimplantar suas cargas de trabalho em clusters de destino que usam objetos diferentes AksHciClusterNetwork .

Implementar a aplicação

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 executar o aplicativo de votação do Azure. Esse manifesto inclui duas implantações do Kubernetes: uma para os aplicativos Python do Azure Vote de exemplo e outra para uma instância do Redis. Dois serviços Kubernetes também são criados: um serviço interno para a instância Redis e um serviço externo para acessar o aplicativo Azure Vote da Internet.

Crie um arquivo chamado azure-vote.yaml e copie/cole a seguinte definição de 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

Implante o aplicativo usando o kubectl apply comando e especifique o nome do seu manifesto YAML:

kubectl apply -f azure-vote.yaml

A saída de exemplo a seguir mostra implantações e 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 o aplicativo é executado, um serviço Kubernetes expõe o front-end do aplicativo à 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 para o serviço azure-vote-front é mostrado 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 mudar de pendente para um endereço IP público real, use CTRL-C para interromper o kubectl processo de monitoramento. 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.

Captura de tela da home page do aplicativo Aplicativo de Votação do Azure, implantado em um cluster Kubernetes no Azure.

Dimensionar pods de aplicação

Criamos uma única réplica do front-end do Aplicativo de Votação do Azure e da instância Redis. Para ver o número e o estado dos pods no cluster, use 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 implantação azure-vote-front , use 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 pods adicionais foram criados. 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

Próximos passos

Usar o Azure Monitor para monitorar seu cluster e aplicativo