Partilhar via


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.

Captura de ecrã da home page da aplicação Azure Voting App, implementada num cluster do Kubernetes no Azure.

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