Container Compute Service (ACS) permite criar aplicações sem estado utilizando imagens de container, templates YAML de orquestração ou ferramentas de linha de comando kubectl. Este tópico utiliza uma aplicação Nginx como exemplo para demonstrar como criar uma aplicação sem estado em um cluster ACS.
Console
Create from image
Etapa 1: Configurar informações básicas da aplicação
Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Workloads > Deployments.
Na página Deployments, clique em Create from Image.
-
No assistente Basic Information, configure as definições básicas da sua aplicação.
Parâmetro
Descrição
Application Name
Insira um nome para a aplicação.
Replicas:
Número de pods na aplicação. O valor padrão é 2.
Workloads
Selecione Deployment.
Label
Adicione uma label para identificar esta aplicação.
Annotations
Adicione uma annotation à aplicação.
Instance Type
Selecione um tipo de computação. Para detalhes sobre os tipos de computação, consulte Visão geral das instâncias de pod do ACS.
QoS Type
Selecione uma classe de Qualidade de Serviço (QoS).
Clique em Next para ir ao assistente Container.
Etapa 2: Configurar containers
Na página do assistente Container, configure a imagem do container, recursos, portas, variáveis de ambiente, verificações de integridade, ciclo de vida, volumes e logs.
Para adicionar múltiplos containers ao pod, clique em Add Container ao lado da aba Container 1.
-
Na seção General, conclua a configuração básica do container.
Parâmetro
Descrição
Image Name
-
Selecionar uma imagem
Clique em Select Image para escolher a imagem necessária.
-
Container Registry Enterprise Edition: Selecione uma imagem da Enterprise Edition hospedada no Alibaba Cloud Container Registry (ACR). Você deve selecionar a região e a instância do ACR onde a imagem reside. Para mais informações sobre o ACR, consulte O que é o Container Registry?.
-
Container Registry Personal Edition (deve ser ativado primeiro): Selecione uma imagem da Personal Edition hospedada no ACR. É necessário selecionar a região e a instância do ACR onde a imagem está localizada.
-
Artifact center: Inclui imagens base de SO para aplicações em container, imagens de runtime de linguagem e imagens relacionadas a IA/big data. Este exemplo usa uma imagem Nginx do Artifact Center. Para mais informações, consulte Artifact Center.
-
-
(Opcional) Definir a política de pull da imagem
Na lista suspensa Image Pull Policy, selecione uma política de pull. Por padrão, nenhuma política é definida e o Kubernetes usa IfNotPresent.
-
IfNotPresent: Se a imagem já existir localmente (puxada anteriormente para o host), ela não será baixada novamente. Caso contrário, a imagem será baixada.
-
Always: Sempre baixa a imagem durante a implantação ou expansão, ignorando qualquer cópia local.
-
Never: Usa apenas a imagem local.
-
-
(Opcional) Definir um secret de pull de imagem
Clique em Set Image Pull Secret para acessar imagens privadas com segurança.
-
Para instâncias do ACR Personal Edition, você pode baixar imagens de container definindo um secret de pull de imagem. Para mais informações, consulte Gerenciar secrets.
-
Para instâncias do ACR Enterprise Edition, é possível baixar imagens sem senhas usando o add-on passwordless. Para detalhes, consulte Baixar imagens do ACR sem senhas.
-
Required Resources
Defina cotas de recursos para o container.
-
CPU: Especifique os valores de solicitação e limite de CPU. Por padrão, a solicitação é igual ao limite e o faturamento utiliza o método pay-as-you-go. Se você definir um limite diferente via YAML, a solicitação será sobrescrita para corresponder ao limite. Para detalhes, consulte Especificações de recursos.
-
Memory: Especifique os valores de solicitação e limite de memória. Por padrão, a solicitação é igual ao limite e o faturamento utiliza o método pay-as-you-go. Se você definir um limite diferente via YAML, a solicitação será sobrescrita para corresponder ao limite. Para detalhes, consulte Especificações de recursos.
Interactive Session
(Opcional) Configure as opções de inicialização do container.
-
stdin: Envia a entrada do console para o container.
-
tty: Anexa o console de entrada padrão como entrada de console do container.
NotaGeralmente, tanto stdin quanto tty são selecionados juntos para vincular o terminal (tty) à entrada padrão (stdin) do container. Por exemplo, um programa interativo lê a entrada do usuário de stdin e exibe a saída no terminal.
Init Containers
(Opcional) Selecione esta opção para criar um init container.
Init containers fornecem um mecanismo para bloquear ou atrasar a inicialização dos containers de aplicação até que sejam bem-sucedidos. Após a execução bem-sucedida, os containers de aplicação no pod iniciam em paralelo. Por exemplo, você pode usar init containers para verificar a disponibilidade de serviços dependentes. Init containers podem incluir utilitários ou scripts de instalação não presentes na imagem da aplicação para inicializar o ambiente de execução — por exemplo, definindo parâmetros de kernel ou gerando arquivos de configuração. Para mais informações, consulte Init Containers.
-
-
(Opcional) Na seção Ports, clique em Add para configurar as portas do container.
Parâmetro
Descrição
Name
Especifique um nome para a porta do container.
Container Port
Especifique a porta de acesso exposta do container. O número da porta deve estar entre 1 e 65535.
Protocol
Os protocolos suportados são TCP e UDP.
-
(Opcional) Na seção Environments, clique em Add para configurar variáveis de ambiente.
Você pode configurar variáveis de ambiente para o pod usando pares chave-valor para adicionar sinalizadores de ambiente ou passar configurações. Para mais informações, consulte Variáveis de Ambiente do Pod.
Parâmetro
Descrição
Type
Defina o tipo da variável de ambiente:
-
Custom
-
ConfigMaps
-
Secrets
-
Value/ValueFrom
-
ResourceFieldRef
ConfigMap e Secret suportam a referência a todos os arquivos.
Este exemplo usa um Secret. Ao selecionar o tipo Secrets e escolher um Secret alvo, todos os arquivos nesse Secret são referenciados por padrão. Após selecionar Secret, insira um Variable Name e selecione o nome do Secret correspondente e a chave nas duas listas suspensas à direita.
O YAML correspondente referencia todo o Secret:
envFrom: - secretRef: name: testVariable Key
Defina o nome da variável de ambiente.
Value/ValueFrom
Defina o valor da variável referenciada.
-
-
(Opcional) Na seção Health Check, ative Liveness, Readiness e Startup conforme necessário.
Liveness: Usado para determinar se um container está executando normalmente. Se um número especificado de verificações falhar, o kubelet reinicia o container. As sondas de Liveness podem detectar problemas que fazem com que um container permaneça em estado de execução, mas falhe em responder, como um deadlock.
Readiness: Usado para determinar se um container está pronto para aceitar tráfego. Um pod é anexado a um backend de service somente após sua sonda de readiness ser bem-sucedida.
Startup: Executado apenas quando o container inicia para verificar se ele foi iniciado com sucesso. A Liveness Probe e a Readiness Probe são executadas somente após a sonda de startup ser bem-sucedida.
Para mais informações, consulte Configurar sondas de liveness, readiness e startup.
Parâmetro
Descrição
HTTP
Envia uma requisição HTTP GET para o container. Os parâmetros suportados incluem:
-
Protocol: HTTP/HTTPS.
-
Path: O caminho para acessar o servidor HTTP.
-
Port: A porta exposta do container ou nome da porta. O número da porta deve estar entre 1 e 65535.
-
HTTP Header: Cabeçalhos de requisição personalizados na requisição HTTP. O HTTP permite cabeçalhos duplicados. Configure-os como pares chave-valor.
-
Initial Delay (s): O parâmetro initialDelaySeconds especifica quantos segundos aguardar após o início do container antes de realizar a primeira sonda. O padrão é 3 segundos.
-
Period (s): O parâmetro periodSeconds especifica o intervalo de tempo entre as sondas. O padrão é 10 segundos. O mínimo é 1 segundo.
-
Timeout (s): O parâmetro timeoutSeconds especifica a duração do tempo limite da sonda. O padrão é 1 segundo. O mínimo é 1 segundo.
-
Healthy Threshold: O número mínimo de sondas consecutivas bem-sucedidas necessárias após uma falha para marcar o container como saudável. O padrão é 1. O mínimo é 1. Para sondas de liveness, isso deve ser 1.
-
Unhealthy Threshold: O número mínimo de sondas consecutivas com falha necessárias após um sucesso para marcar o container como não saudável. O padrão é 3. O mínimo é 1.
TCP
Abre um socket TCP para o container. O Kubelet tenta abrir um socket na porta especificada. Se for bem-sucedido, o container é considerado saudável; caso contrário, é marcado como falho. Os parâmetros suportados incluem:
-
Port: A porta exposta do container ou nome da porta. O número da porta deve estar entre 1 e 65535.
-
Initial Delay (s): O parâmetro initialDelaySeconds especifica quantos segundos aguardar após o início do container antes de realizar a primeira sonda. O padrão é 15 segundos.
-
Period (s): O parâmetro periodSeconds especifica o intervalo de tempo entre as sondas. O padrão é 10 segundos. O mínimo é 1 segundo.
-
Timeout (s): O parâmetro timeoutSeconds especifica a duração do tempo limite da sonda. O padrão é 1 segundo. O mínimo é 1 segundo.
-
Healthy Threshold: O número mínimo de sondas consecutivas bem-sucedidas necessárias após uma falha para marcar o container como saudável. O padrão é 1. O mínimo é 1. Para sondas de liveness, isso deve ser 1.
-
Unhealthy Threshold: O número mínimo de sondas consecutivas com falha necessárias após um sucesso para marcar o container como não saudável. O padrão é 3. O mínimo é 1.
Command
Executa um comando dentro do container para verificar sua integridade. Os parâmetros suportados incluem:
-
Command: O comando usado para verificar a integridade do container.
-
Initial Delay (s): O parâmetro initialDelaySeconds especifica quantos segundos aguardar após o início do container antes de realizar a primeira sonda. O padrão é 5 segundos.
-
Period (s): O parâmetro periodSeconds especifica o intervalo de tempo entre as sondas. O padrão é 10 segundos. O mínimo é 1 segundo.
-
Timeout (s): O parâmetro timeoutSeconds especifica a duração do tempo limite da sonda. O padrão é 1 segundo. O mínimo é 1 segundo.
-
Healthy Threshold: O número mínimo de sondas consecutivas bem-sucedidas necessárias após uma falha para marcar o container como saudável. O padrão é 1. O mínimo é 1. Para sondas de liveness, isso deve ser 1.
-
Unhealthy Threshold: O número mínimo de sondas consecutivas com falha necessárias após um sucesso para marcar o container como não saudável. O padrão é 3. O mínimo é 1.
-
(Opcional) Na seção Lifecycle, configure o ciclo de vida do container.
Você pode configurar comandos de pré-início, manipuladores pós-início e manipuladores pré-parada para o ciclo de vida do container. Para detalhes, consulte Configurar ciclo de vida.
Parâmetro
Descrição
Start
Especifique um comando e seus argumentos para executar antes do container iniciar.
Post-start Hook
Especifique um comando para executar após o container iniciar.
Pre-stop Hook
Especifique um comando para executar antes do container terminar.
-
(Opcional) Na seção Volume, monte volumes no container.
Armazenamento local: Monte ConfigMaps, Secrets ou diretórios temporários em caminhos do container. Para mais informações, consulte volumes.
Armazenamento em cloud: Suporta discos em cloud e Network Attached Storage (NAS), entre outros. Para detalhes, consulte Visão geral de armazenamento.
-
(Opcional) Na seção Log, configure Collection Configuration e Custom Tag.
Parâmetro
Descrição
Configurações de Coleta
-
Logstore: Cria um Logstore correspondente no Simple Log Service para armazenar logs coletados.
-
Log Path in Container (Can be set to stdout): Suporta stdout e logs de texto.
-
Stdout: Coleta logs de saída padrão do container.
-
Logs de texto: Coleta logs de um caminho especificado dentro do container. Este exemplo coleta todos os logs de texto em
/var/log/nginxe suporta caracteres curinga.
-
Tags Personalizadas
Você também pode definir tags personalizadas. Quando configuradas, essas tags são incluídas nos logs do container. Tags personalizadas ajudam a categorizar logs para facilitar estatísticas e filtragem durante a análise.
-
Clique em Next para ir ao assistente Advanced.
Etapa 3: Concluir a configuração avançada
Na página do assistente Advanced, configure acesso, dimensionamento, agendamento e labels/annotations.
-
Na seção Access Control, configure como expor os pods de backend.
Você pode configurar como expor os pods de backend. Este exemplo usa um IP de cluster virtual e um Ingress para criar uma aplicação Nginx acessível pela Internet.
-
Configurar um Service: Clique em Create ao lado de Services para definir os parâmetros do service.
-
Configurar Ingress: Clique em Create ao lado de Ingresses para definir regras de roteamento para os pods de backend.
-
-
(Opcional) Na seção Scaling, configure se deseja ativar o HPA para atender aos requisitos da aplicação sob diferentes cargas.
-
O Container Compute Service suporta dimensionamento baseado em métricas, que ajusta automaticamente o número de pods com base no uso de CPU e memória dos containers.
NotaPara ativar o dimensionamento automático, você deve especificar recursos solicitados para o container. Caso contrário, o dimensionamento automático não funcionará.
Parâmetro
Descrição
Metric
Suporta CPU e memória. Deve corresponder ao tipo de recurso solicitado.
Trigger Condition
O limite percentual de uso de recursos. Quando excedido, o sistema realiza scale out.
Max. Replicas
O número máximo de containers que podem ser expandidos (scale out) para este tipo de workload.
Min. Replicas
O número mínimo de containers que podem ser reduzidos (scale in) para este tipo de workload.
O Container Compute Service também suporta dimensionamento agendado (CronHPA) para escalar clusters Kubernetes automaticamente em horários específicos. Antes de ativar o dimensionamento agendado, instale o add-on ack-kubernetes-cronhpa-controller. Para detalhes, consulte Dimensionamento agendado (CronHPA).
-
(Opcional) Na seção Labels and Annotations, clique em Add para definir labels e annotations de pod.
Clique em Create.
Etapa 4: Visualizar informações da aplicação
Após a criação da aplicação, você é redirecionado por padrão para a página de conclusão de criação. Clique em View Details para ir à página de detalhes do Deployment.
Você também pode visualizar o Deployment na página Deployments. Clique no nome do Deployment desejado ou clique em Details na coluna Actions para ir à página de detalhes da aplicação.
Create using YAML
Na orquestração de templates do ACS, você define os objetos de recurso necessários para sua aplicação e os combina em uma aplicação completa usando mecanismos como seletores de labels.
Este exemplo mostra como criar uma aplicação Nginx usando um template de orquestração contendo um Deployment e um Service. O Deployment cria recursos de pod e o Service se vincula a esses pods, formando uma aplicação Nginx completa.
Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Workloads > Deployments.
Na página Deployments, clique em Create from YAML no canto superior direito.
-
Na página Create, configure o template e clique em Create.
Sample Template: O ACS fornece exemplos YAML do Kubernetes para vários tipos de recursos para ajudar você a implantar rapidamente. Você também pode escrever seu próprio YAML seguindo os padrões do Kubernetes.
Create Workload: Defina rapidamente um template YAML usando este recurso.
Use Existing Template: Importe um template de orquestração existente.
Save Template: Salve seu template de orquestração configurado.
O seguinte arquivo YAML de exemplo define uma aplicação Nginx. Você pode usá-lo para criar rapidamente um Deployment para a aplicação Nginx. Por padrão, um service LoadBalancer do tipo CLB é criado.
NotaO ACS suporta orquestração YAML do Kubernetes. Use o separador
---para definir múltiplos objetos de recurso em um único template.(Opcional) Ao montar volumes via Volume, os arquivos no diretório de montagem são sobrescritos por padrão. Para preservar os arquivos existentes, configure o parâmetro
subPath.
Após clicar em Create, o status da implantação é exibido.
kubectl
Você pode usar comandos kubectl para criar e visualizar aplicações.
Conecte-se ao seu cluster. Para detalhes, consulte Obter kubeconfig do cluster e conectar usando kubectl ou Gerenciar clusters Kubernetes usando kubectl no CloudShell.
-
Execute o seguinte comando para iniciar um container. Neste exemplo, o container executa um servidor web Nginx.
NAME READY STATUS RESTARTS AGE nginx-2721357637-d**** 1/1 Running 1 9h -
Execute o seguinte comando para criar um endpoint de service para o container. Especificar
--type=LoadBalancercria um SLB do Alibaba Cloud que roteia tráfego para o container Nginx.NAME READY STATUS RESTARTS AGE nginx-2721357637-d**** 1/1 Running 1 9h -
Execute o seguinte comando para listar os containers nginx em execução.
NAME READY STATUS RESTARTS AGE nginx-2721357637-d**** 1/1 Running 1 9hSaída esperada:
NAME READY STATUS RESTARTS AGE nginx-2721357637-d**** 1/1 Running 1 9h