Todos os produtos
Search
Central de documentação

Container Compute Service:Create a StatefulSet

Última atualização: Sep 14, 2026

Container Service for Kubernetes (ACK) permite criar StatefulSets diretamente pelo console. Este exemplo implanta uma aplicação NGINX com estado para demonstrar os recursos do StatefulSet.

Pré-requisitos

Conecte o kubectl ao seu cluster Kubernetes. Obtain the kubeconfig for a cluster and use kubectl to connect to the cluster.

Recursos do StatefulSet

Um StatefulSet oferece os seguintes recursos:

Recurso

Descrição

Identidade consistente de Pod

Garante ordenação (como ordem de inicialização e desligamento) e uma identidade de rede consistente que permanece com o Pod, independentemente do agendamento.

Armazenamento persistente estável

Cria um PV para cada Pod usando um VolumeClaimTemplate. Reduzir a escala ou excluir réplicas não exclui os volumes associados.

Identidade de rede estável

O hostname do Pod segue o padrão: (nome do StatefulSet)-(índice ordinal).

Ordenação estável

Para um StatefulSet com N réplicas, cada Pod recebe um índice ordinal único no intervalo [0, N).

Etapas

Etapa 1: Configurar informações básicas da aplicação

  1. Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Workloads > StatefulSets.

  3. Na página StatefulSets, clique em Create from Image.

  4. Na página Basic Information, configure a aplicação.

    Parâmetro

    Descrição

    Application Name

    Insira o nome da aplicação.

    Replicas:

    Número de pods da aplicação. Padrão: 2.

    Type

    Selecione StatefulSets.

    Labels

    Rótulo para identificar a aplicação.

    Annotations

    Anotação para a aplicação.

    Instance type

    Selecione um tipo de computação. Para obter detalhes sobre os tipos de computação, consulte Overview of ACS pod instances.

    QoS Type

    Selecione uma classe de Qualidade de Serviço (QoS).

    Correspondência entre tipo de computação e qualidade do poder de computação

    Tipo de computação (rótulo)

    Classes de qualidade de poder de computação suportadas (rótulos)

    Uso geral (general-purpose)

    Padrão (default), BestEffort (best-effort)

    Otimizado para desempenho (performance)

    Padrão (default), BestEffort (best-effort)

    Tipo GPU (gpu)

    Padrão (default), BestEffort (best-effort)

    GPU de rede de alto desempenho (gpu-hpn)

    Padrão (default)

    Para mais informações, consulte QoS class definitions.

  5. Clique em Next para abrir a página Container.

Etapa 2: Configurar contêineres

Na página do assistente Container, configure a imagem do contêiner, recursos, portas, variáveis de ambiente, verificações de integridade, ciclo de vida, volumes e logs.

Nota

Para adicionar vários contêineres ao pod, clique em Add Container ao lado da aba Container 1.

  1. Na seção General, conclua a configuração básica do contêiner.

    Item de configuração

    Descrição

    Image Name

    • Selecionar uma imagem

      Clique em Select Image para escolher a imagem desejada.

      • Container Registry Enterprise Edition: Selecione uma imagem da Enterprise Edition hospedada no Alibaba Cloud Container Registry (ACR). É necessário selecionar a região e a instância do ACR onde a imagem reside. Para mais informações sobre o ACR, consulte What is 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 reside.

      • Artifact center: Inclui imagens base de SO para aplicações conteinerizadas, 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 (pull anterior no 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 segredo de pull de imagem

      Clique em Set Image Pull Secret para acessar imagens privadas com segurança.

      • Para instâncias do ACR Personal Edition, é possível baixar imagens de contêiner definindo um segredo de pull de imagem. Para mais informações, consulte Manage secrets.

      • Para instâncias do ACR Enterprise Edition, é possível baixar imagens sem senha usando o componente passwordless. Para obter detalhes, consulte Pull ACR images without passwords.

    Required Resources

    Defina cotas de recursos para o contêiner.

    • 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 de pagamento conforme o uso. Se você definir um limite diferente via YAML, a solicitação será sobrescrita para corresponder ao limite. Para obter detalhes, consulte Resource specifications.

    • 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 de pagamento conforme o uso. Se você definir um limite diferente via YAML, a solicitação será sobrescrita para corresponder ao limite. Para obter detalhes, consulte Resource specifications.

    Interactive Session

    (Opcional) Configure as opções de inicialização do contêiner.

    • stdin: Envia a entrada do console para o contêiner.

    • tty: Anexa o console de entrada padrão como entrada de console do contêiner.

    Nota

    Geralmente, tanto stdin quanto tty são selecionados juntos para vincular o terminal (tty) à entrada padrão do contêiner (stdin). Por exemplo, um programa interativo lê a entrada do usuário via stdin e exibe a saída no terminal.

    Init Containers

    (Opcional) Selecione esta opção para criar um contêiner de inicialização.

    Contêineres de inicialização fornecem um mecanismo para bloquear ou atrasar o início dos contêineres de aplicação até que sejam bem-sucedidos. Após a execução bem-sucedida, os contêineres de aplicação no pod iniciam em paralelo. Por exemplo, é possível usar contêineres de inicialização para verificar a disponibilidade de services dependentes. Eles podem incluir utilitários ou scripts de instalação não presentes na imagem da aplicação para inicializar o ambiente de execução — como definir parâmetros de kernel ou gerar arquivos de configuração. Para mais informações, consulte Init Containers.

  2. (Opcional) Na seção Ports, clique em Add para configurar as portas do contêiner.

    Item de configuração

    Descrição

    Name

    Especifique um nome para a porta do contêiner.

    Container Port

    Especifique a porta de acesso exposta do contêiner. O número da porta deve estar entre 1 e 65535.

    Protocol

    Os protocolos suportados são TCP e UDP.

  3. (Opcional) Na seção Environments, clique em Add para configurar variáveis de ambiente.

    É possível 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 de arquivos inteiros.

    Este exemplo usa um Secret. Ao selecionar o tipo Secrets e escolher um Secret alvo, todos os arquivos desse 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: test

    Variable Key

    Defina o nome da variável de ambiente.

    Value/ValueFrom

    Defina o valor da variável referenciada.

  4. (Opcional) Na seção Health Check, ative Liveness, Readiness e Startup conforme necessário.

    • Liveness: Determina se um contêiner está executando normalmente. Se um número especificado de verificações falhar, o kubelet reinicia o contêiner. As sondas de Liveness detectam problemas que fazem com que um contêiner permaneça em estado de execução, mas não consiga responder, como um deadlock.

    • Readiness: Determina se um contêiner está pronto para aceitar tráfego. Um pod é anexado ao backend de um service somente após sua sonda de readiness ser bem-sucedida.

    • Startup: Executada apenas quando o contêiner 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 solicitação HTTP GET para o contêiner. Os parâmetros suportados incluem:

    • Protocol: HTTP ou HTTPS.

    • Path: O caminho para acessar o servidor HTTP.

    • Port: A porta exposta do contêiner ou nome da porta. O número da porta deve estar entre 1 e 65535.

    • HTTP Header: Cabeçalhos de solicitação personalizados na solicitaçã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 contêiner 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 contêiner como íntegro. O padrão é 1. O mínimo é 1. Para sondas de liveness, este valor deve ser 1.

    • Unhealthy Threshold: O número mínimo de sondas consecutivas com falha necessárias após um sucesso para marcar o contêiner como não íntegro. O padrão é 3. O mínimo é 1.

    TCP

    Abre um socket TCP para o contêiner. O Kubelet tenta abrir um socket na porta especificada. Se for bem-sucedido, o contêiner é considerado íntegro; caso contrário, é marcado como falho. Os parâmetros suportados incluem:

    • Port: A porta exposta do contêiner 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 contêiner 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 contêiner como íntegro. O padrão é 1. O mínimo é 1. Para sondas de liveness, este valor deve ser 1.

    • Unhealthy Threshold: O número mínimo de sondas consecutivas com falha necessárias após um sucesso para marcar o contêiner como não íntegro. O padrão é 3. O mínimo é 1.

    Command

    Executa um comando dentro do contêiner para verificar sua integridade. Os parâmetros suportados incluem:

    • Command: O comando usado para verificar a integridade do contêiner.

    • Initial Delay (s): O parâmetro initialDelaySeconds especifica quantos segundos aguardar após o início do contêiner 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 contêiner como íntegro. O padrão é 1. O mínimo é 1. Para sondas de liveness, este valor deve ser 1.

    • Unhealthy Threshold: O número mínimo de sondas consecutivas com falha necessárias após um sucesso para marcar o contêiner como não íntegro. O padrão é 3. O mínimo é 1.

  5. (Opcional) Na seção Lifecycle, configure o ciclo de vida do contêiner.

    É possível configurar comandos de pré-inicialização, manipuladores pós-inicialização e manipuladores pré-parada para o ciclo de vida do contêiner. Para obter detalhes, consulte Configurar ciclo de vida.

    Parâmetro

    Descrição

    Start

    Especifique um comando e seus argumentos para executar antes do início do contêiner.

    Post-start Hook

    Especifique um comando para executar após o início do contêiner.

    Pre-stop Hook

    Especifique um comando para executar antes do término do contêiner.

  6. (Opcional) Na seção Volume, monte volumes no contêiner.

    • Armazenamento local: Monte ConfigMaps, Secrets ou diretórios temporários em caminhos do contêiner. Para mais informações, consulte volumes.

    • Armazenamento em cloud: Suporta discos em cloud, NAS, entre outros. Para obter detalhes, consulte Storage overview.

  7. (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 os 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 contêiner.

      • Logs de texto: Coleta logs de um caminho especificado dentro do contêiner. Este exemplo coleta todos os logs de texto em /var/log/nginx e suporta caracteres curinga.

    Tags personalizadas

    Também é possível definir tags personalizadas. Quando configuradas, essas tags são incluídas nos logs do contêiner. Tags personalizadas ajudam a categorizar logs para facilitar estatísticas e filtragem durante a análise.

  8. 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 rótulos/anotações.

  1. Na seção Access Control, configure como expor os pods de backend.

    Este exemplo usa ClusterIP e Ingress para criar uma aplicação Nginx acessível publicamente.

    • Configurar um Service: Clique em Create ao lado de Services para definir os parâmetros do service.

      Expandir para visualizar detalhes da configuração do service

      Item de configuração

      Descrição

      Name

      Insira um nome para o service. Este exemplo usa nginx-svc.

      Type

      Selecione o tipo de service, que determina como o service é acessado. Este exemplo seleciona Cluster IP.

      • Cluster IP: Expõe o service em um IP interno dentro do cluster. Services deste tipo são acessíveis apenas de dentro do cluster. Este é o ServiceType padrão.

        Nota

        Quando o tipo de service é Cluster IP, é possível configurar um Headless Service.

      • Server Load Balancer: Usa o Alibaba Cloud Server Load Balancer (SLB) para expor o service. É possível escolher acesso público ou interno. O Alibaba Cloud SLB roteia o tráfego para services ClusterIP.

        • Criar novo SLB: Clique em Modify para alterar as especificações do SLB.

        • Usar SLB existente: Selecione uma instância de SLB na lista.

        Nota

        O tipo LoadBalancer suporta a criação de um novo SLB ou a reutilização de um existente, mas com as seguintes limitações:

        • O uso de uma instância de SLB existente sobrescreve seus listeners atuais.

        • Instâncias de SLB criadas pelo Kubernetes por meio de Services não podem ser reutilizadas (para evitar exclusão acidental). Apenas instâncias de SLB criadas manualmente no console (ou via OpenAPI) podem ser reutilizadas.

        • Vários Services que reutilizam o mesmo SLB não devem compartilhar a mesma porta de listener frontend para evitar conflitos.

        • Ao reutilizar um SLB, o Kubernetes usa nomes de listeners e nomes de grupos vServer como identificadores únicos. Não modifique esses nomes.

        • Não há suporte para reutilização de SLB entre clusters.

      Port Mapping

      Adicione portas de service e de contêiner. A porta do contêiner deve corresponder à porta exposta pelos pods de backend.

      External Traffic Policy

      • Local: Roteia o tráfego apenas para pods no mesmo nó.

      • Cluster: Roteia o tráfego para pods em qualquer nó.

      Nota

      É possível definir a External Traffic Policy apenas quando o tipo de service é Server Load Balancer.

      Annotations

      Adicione uma anotação para configurar parâmetros do SLB. Por exemplo, definir service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth: 20 limita a largura de banda do service a 20 Mbit/s para controlar o tráfego.

      Label

      Adicione um rótulo para identificar este service.

    • Configurar Ingress: Clique em Create ao lado de Ingresses para definir regras de roteamento para os pods de backend.

      Expandir para visualizar detalhes da configuração do Ingress

      Nota

      Ao criar uma aplicação a partir de uma imagem, é possível criar apenas um Ingress por service. Este exemplo usa um nome de host virtual como domínio de teste. Adicione um mapeamento de domínio (endpoint do Ingress + domínio do Ingress) ao seu arquivo Hosts. Em produção, use um domínio com registro ICP.

      101.37.XX.XX   foo.bar.com    # Ingress IP.

      Parâmetro

      Descrição

      Name

      Insira um nome para o Ingress. Este exemplo usa alb-ingress.

      Rule

      As regras de Ingress definem como o tráfego de entrada alcança os services do cluster. Para mais informações, consulte ALB Ingress Quick Start.

      • Domain Name: Insira o domínio do Ingress.

      • Path: Especifique o caminho da URL para acesso ao service. O padrão é o caminho raiz /. Cada caminho mapeia para um service de backend. O Alibaba Cloud SLB encaminha o tráfego apenas se as solicitações de entrada corresponderem tanto ao domínio quanto ao caminho.

      • Services: Selecione o nome do service e a porta.

      • TLS: Configure o roteamento seguro.

      Este exemplo usa o domínio de teste foo.bar.com e define o service como nginx-svc.

      Canary Release

      Ative o canary release. Recomendamos selecionar Open Source Solution, pois a edição do Alibaba Cloud não é mais mantida.

      Ingress Class

      Especifique uma classe de Ingress personalizada.

      Annotations

      Defina chaves e valores de anotação personalizados ou pesquise anotações por nome. Clique em Add para inserir pares chave-valor de anotação. Para anotações de Ingress, consulte Annotations.

      Label

      Clique em Add para inserir chaves e valores de rótulo que identifiquem características deste Ingress.

  2. (Opcional) Na seção Scaling, ative o HPA para atender a demandas de carga variáveis.

    • O Container Compute Service suporta dimensionamento automático com base no uso de CPU e memória do pod.

      Nota

      Para ativar o dimensionamento automático, especifique os recursos solicitados para o contêiner. Caso contrário, o dimensionamento automático não funcionará.

      Item de configuração

      Descrição

      Metric

      Suporta CPU e memória. Deve corresponder ao tipo de recurso solicitado.

      Trigger Condition

      O limiar para a porcentagem de uso de recursos. Quando excedido, o sistema realiza scale out.

      Max. Replicas

      O número máximo de contêineres que podem ser expandidos para este tipo de carga de trabalho.

      Min. Replicas

      O limite inferior para redução de escala nesta carga de trabalho.

    • O Container Compute Service também suporta dimensionamento agendado (CronHPA) para escalar automaticamente clusters Kubernetes em horários específicos. Antes de ativar o dimensionamento agendado, instale o componente ack-kubernetes-cronhpa-controller. Para obter detalhes, consulte Scheduled scaling (CronHPA).

  1. (Opcional) Na seção Labels and Annotations, clique em Add para definir rótulos e anotações de pod.

  2. Clique em Create.

Etapa 4: Visualizar a aplicação

Após a criação, uma página de confirmação é exibida. Clique em View Details para abrir a página de detalhes do StatefulSet.

Alternativamente, na página Deployments, clique no nome do StatefulSet ou clique em Details na coluna Actions.