Partilhar via


(PRETERIDO) Implantar cluster Kubernetes para contêineres Linux

Gorjeta

Para obter a versão atualizada deste guia de início rápido que usa o Serviço Kubernetes do Azure, consulte Guia de início rápido: implantar um cluster do Serviço Kubernetes do Azure (AKS).

Aviso

O Serviço de Contêiner do Azure (ACS) está sendo preterido. Nenhum novo recurso ou funcionalidade está sendo adicionado ao ACS. Todas as APIs, experiência do portal, comandos da CLI e documentação são marcados como obsoletos.

Em 2017, apresentámos o Azure Kubernetes Service (AKS) para simplificar a gestão, implementação e as operações do Kubernetes. Se utilizar o orquestrador do Kubernetes, migre para o AKS até 31 de janeiro de 2020. Para começar, consulte migrar para o Serviço Kubernetes do Azure.

Para obter mais informações, consulte o anúncio de descontinuação do Serviço de Contêiner do Azure em Azure.com.

Neste início rápido, um cluster do Kubernetes é implantado usando a CLI do Azure. Depois, é implementada e executada no cluster uma aplicação de vários contentores que consiste num front-end da Web e numa instância de Redis. Depois de concluída, a aplicação está acessível através da Internet.

A aplicação de exemplo utilizada neste documento está escrita em Python. Os conceitos e os passos detalhados aqui podem ser utilizados para implementar qualquer imagem de contentor num cluster de Kubernetes. O código, o Dockerfile e os ficheiros de manifesto do Kubernetes pré-criados relacionados com este projeto estão disponíveis no GitHub.

Imagem de navegação para o Azure Vote

Este guia de introdução pressupõe um conhecimento básico dos conceitos do Kubernetes. Para obter informações detalhadas sobre o Kubernetes, consulte a documentação do Kubernetes.

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Azure Cloud Shell

O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.

Para iniciar o Azure Cloud Shell:

Opção Exemplo/Ligação
Selecione Experimentar no canto superior direito de um código ou bloco de comandos. Selecionar Experimentar não copia automaticamente o código ou comando para o Cloud Shell. Captura de tela que mostra um exemplo de Try It for Azure Cloud Shell.
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser. Botão para iniciar o Azure Cloud Shell.
Selecione o botão Cloud Shell na barra de menus, na parte direita do portal do Azure. Captura de tela que mostra o botão Cloud Shell no portal do Azure

Para usar o Azure Cloud Shell:

  1. Inicie o Cloud Shell.

  2. Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou comando.

  3. Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e Linux ou selecionando Cmd+Shift+V no macOS.

  4. Selecione Enter para executar o código ou comando.

Se optar por instalar e usar a CLI localmente, este tópico requer a execução da versão 2.0.4 ou posterior da CLI do Azure. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Instalar a CLI do Azure.

Criar um grupo de recursos

Crie um grupo de recursos com o comando az group create. Um grupo de recursos do Azure é um grupo lógico, no qual os recursos do Azure são implementados e geridos.

O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização westeurope.

az group create --name myResourceGroup --location westeurope

Saída:

{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
  "location": "westeurope",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Criar cluster do Kubernetes

Crie um cluster do Kubernetes no Azure Container Service com o comando az acs create. O exemplo seguinte cria um cluster com o nome myK8sCluster com um nó principal do Linux e três nós de agente do Linux.

az acs create --orchestrator-type kubernetes --resource-group myResourceGroup --name myK8sCluster --generate-ssh-keys

Em alguns casos, como numa versão de avaliação limitada, uma subscrição do Azure tem acesso limitado aos recursos do Azure. Caso a implementação falhe devido a um número limitado de núcleos disponíveis, reduza a contagem de agentes pré-definida ao adicionar --agent-count 1 ao comando az acs create.

Ao fim de vários minutos, o comando é concluído e devolve informações sobre o cluster no formato json.

Ligar ao cluster

Para gerir um cluster de Kubernetes, utilize kubectl, o cliente de linha de comandos do Kubernetes.

Se estiver a utilizar o Azure CloudShell, o kubectl já está instalado. Se pretender instalá-lo localmente, pode utilizar o comando az acs kubernetes install-cli.

Para configurar kubectl para se ligar ao seu cluster do Kubernetes, execute o comando az acs kubernetes get-credentials. Este passo transfere credenciais e configura a CLI do Kubernetes para as utilizar.

az acs kubernetes get-credentials --resource-group=myResourceGroup --name=myK8sCluster

Para verificar a ligação ao cluster, utilize o comando kubectl get para devolver uma lista de nós do cluster.

kubectl get nodes

Saída:

NAME                    STATUS                     AGE       VERSION
k8s-agent-14ad53a1-0    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-1    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-2    Ready                      10m       v1.6.6
k8s-master-14ad53a1-0   Ready,SchedulingDisabled   10m       v1.6.6

Executar a aplicação

Um ficheiro de manifesto do Kubernetes define um estado pretendido para o cluster, incluindo que imagens de contentor devem estar em execução. Neste exemplo, é utilizado um manifesto para criar todos os objetos necessários para executar a aplicação Azure Vote.

Crie um ficheiro com o nome azure-vote.yml e copie-o para o YAML seguinte. Se estiver a trabalhar no Azure Cloud Shell, este ficheiro pode ser criado através de vi ou Nano, como se estivesse a trabalhar num sistema físico ou virtual.

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      containers:
      - name: azure-vote-back
        image: redis
        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/v1beta1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      containers:
      - name: azure-vote-front
        image: microsoft/azure-vote-front:v1
        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

Utilize o comando kubectl create para executar a aplicação.

kubectl create -f azure-vote.yml

Saída:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Testar a aplicação

À medida que a aplicação é executada, é criado um serviço do Kubernetes que expõe o front-end da aplicação na Internet. Este processo pode demorar alguns minutos a concluir.

Para monitorizar o progresso, utilize o comando kubectl get service com o argumento --watch.

kubectl get service azure-vote-front --watch

Inicialmente, o EXTERNAL-IP do serviço azure-vote-front aparece como pendente. Quando o endereço EXTERNAL-IP mudar de pendente para Endereço IP, utilize CTRL-C para parar o processo de observação do kubectl.

azure-vote-front   10.0.34.242   <pending>     80:30676/TCP   7s
azure-vote-front   10.0.34.242   52.179.23.131   80:30676/TCP   2m

Agora, pode navegar para o endereço IP externo para ver a aplicação Azure Vote.

Imagem de navegação para o Azure Vote

Eliminar o cluster

Quando o cluster já não for necessário, pode utilizar o comando az group delete para remover o grupo de recursos, o serviço de contentores e todos os recursos relacionados.

az group delete --name myResourceGroup --yes --no-wait

Obter o código

Neste guia de introdução, foram utilizadas imagens de contentores pré-criadas para criar uma implementação de Kubernetes. O código da aplicação relacionado, o Dockerfile, e o ficheiro de manifesto do Kubernetes, estão disponíveis no GitHub.

https://github.com/Azure-Samples/azure-voting-app-redis

Próximos passos

Neste guia de início rápido, implementou um cluster do Kubernetes e implementou uma aplicação de vários contentores no mesmo.

Para saber mais sobre o Azure Container Service e ver um exemplo completo de código para implementação, avance para o tutorial dos clusters de Kubernetes.