Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:gerencie ack edge applications using yurtappset

Última atualização: Sep 09, 2026

O YurtAppSet permite implantar e gerenciar aplicativos em vários pools de nós de um cluster ACK Edge a partir de uma única configuração. Ele monitora alterações nos rótulos dos pools de nós e mantém as cargas de trabalho sincronizadas automaticamente. Assim, é possível atualizar uma versão ou dimensionar um aplicativo em todo o cluster sem ajustar cada pool de nós individualmente.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Um cluster ACK Edge

  • kubectl configurado para conexão com o cluster

  • Permissões para criar e gerenciar recursos personalizados no cluster

Escolha sua abordagem

Versão do cluster

Recurso recomendado

1,26 ou posterior

YurtAppSet (apps.openyurt.io/v1beta1)

Anterior à 1,26

UnitedDeployment (apps.kruise.io/v1alpha1)

Contexto

Na computação de borda, o mesmo aplicativo geralmente executa em nós de várias regiões. A abordagem tradicional — atribuir rótulos aos nós em cada região e criar um Deployment separado por região — torna-se inviável conforme o número de regiões aumenta:

Traditional multi-region deployment

  • Atualizações trabalhosas: Cada alteração de versão exige atualização manual de todos os Deployments.

  • Gerenciamento complexo: Com o aumento das regiões, rastrear e manter Deployments separados torna o processo propenso a erros.

  • Configuração redundante: Os Deployments em diferentes regiões compartilham especificações quase idênticas, o que dificulta alterações.

O YurtAppSet resolve esses problemas com três mecanismos principais:

Mecanismo

Finalidade

workloadTemplate

Define um único modelo de carga de trabalho aplicado a todos os pools de nós de destino

nodepoolSelector

Seleciona os pools de nós de destino por rótulo; identifica automaticamente pools recém-criados ou removidos

workloadTweaks

Substitui campos específicos (réplicas, imagem do contêiner, patches arbitrários) para pools de nós individuais sem criar cargas de trabalho separadas

YurtAppSet architecture

YurtAppSet (versão do cluster 1,26 ou posterior)

Crie uma instância do YurtAppSet

O YAML a seguir cria um YurtAppSet que implanta uma carga de trabalho nginx em dois pools de nós. O pool np1xxxxxx usa 2 réplicas de nginx:1.19.1; já o pool np2xxxxxx substitui os padrões por 3 réplicas de nginx:1.20.1.

apiVersion: apps.openyurt.io/v1beta1
kind: YurtAppSet
metadata:
  name: example
  namespace: default
spec:
  revisionHistoryLimit: 5
  pools:
  - np1xxxxxx
  - np2xxxxxx
  nodepoolSelector:
    matchLabels:
      yurtappset.openyurt.io/type: "nginx"
  workload:
    workloadTemplate:
      deploymentTemplate:
        metadata:
          labels:
            app: example
        spec:
          replicas: 2
          selector:
            matchLabels:
              app: example
          template:
            metadata:
              labels:
                app: example
            spec:
              containers:
              - image: nginx:1.19.1
                imagePullPolicy: Always
                name: nginx
    workloadTweaks:
    - pools:
      - np2xxxxxx
      tweaks:
        replicas: 3
        containerImages:
        - name: nginx
          targetImage: nginx:1.20.1
        patches:
        - path: /metadata/labels/test
          operation: add
          value: test

Referência de campos YAML

Campos de especificação

Campo

Descrição

Obrigatório

spec.pools

Lista de nomes dos pools de nós para implantação. Se pools e nodepoolSelector estiverem definidos, o sistema usa a união de ambos.

Não

spec.nodepoolSelector

Seleciona pools de nós correspondendo aos seus rótulos (metadata.labels no recurso NodePool). Inclui automaticamente novos pools correspondentes e exclui os removidos.

Não

spec.workload.workloadTemplate

Modelo de carga de trabalho para implantação. Suporta deploymentTemplate e statefulSetTemplate.

Sim

spec.workload.workloadTweaks

Substituições por pool de nós aplicadas sobre o workloadTemplate.

Não

Prefira nodepoolSelector em vez de pools na maioria das implantações. A seleção baseada em rótulos lida automaticamente com pools de nós adicionados ou removidos, sem exigir alterações na configuração do YurtAppSet. Para modificar os rótulos do NodePool, edite o YAML do NodePool correspondente na página Custom Resources no console do cluster.

Campos workloadTweaks

Campo

Descrição

Obrigatório

workloadTweaks[*].pools

Pools de nós (por nome) aos quais esta substituição se aplica.

Não

workloadTweaks[*].nodepoolSelector

Pools de nós (por rótulo) aos quais esta substituição se aplica.

Não

workloadTweaks[*].tweaks.replicas

Substitui a contagem de réplicas dos pools de nós selecionados.

Não

workloadTweaks[*].tweaks.containerImages

Substitui a imagem do contêiner dos pools de nós selecionados.

Não

workloadTweaks[*].tweaks.patches

Aplica patches de campo arbitrários ao workloadTemplate dos pools de nós selecionados.

Não

tweaks.patches[*].path

Caminho JSON do campo a modificar no workloadTemplate.

Não

tweaks.patches[*].operation

Operação de patch: add, remove ou replace.

Não

tweaks.patches[*].value

Valor a definir. Aplica-se apenas às operações add e replace.

Não

Campos de status

Campo

Descrição

status.conditions

Status atual do YurtAppSet, incluindo status de seleção do pool de nós e da carga de trabalho.

status.readyWorkloads

Quantidade de cargas de trabalho gerenciadas com todas as réplicas prontas.

status.updatedWorkloads

Quantidade de cargas de trabalho gerenciadas com todas as réplicas atualizadas para a versão mais recente.

status.totalWorkloads

Total de cargas de trabalho gerenciadas por este YurtAppSet.

UnitedDeployment (versão do cluster anterior à 1,26)

Crie uma instância do UnitedDeployment

apiVersion: apps.kruise.io/v1alpha1
kind: UnitedDeployment
metadata:
  name: example
  namespace: default
spec:
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      app: example
  template:
    deploymentTemplate:
      metadata:
        creationTimestamp: null
        labels:
          app: example
      spec:
        selector:
          matchLabels:
            app: example
        template:
          metadata:
            creationTimestamp: null
            labels:
              app: example
          spec:
            containers:
            - image: nginx:1.19.3
              imagePullPolicy: Always
              name: nginx
            dnsPolicy: ClusterFirst
            restartPolicy: Always
  topology:
    subsets:
    - name: cloud
      nodeSelectorTerm:
        matchExpressions:
        - key: alibabacloud.com/nodepool-id
          operator: In
          values:
          - np4b9781c40f0e46c581b2cf2b6160****
      replicas: 2
    - name: edge
      nodeSelectorTerm:
        matchExpressions:
        - key: alibabacloud.com/nodepool-id
          operator: In
          values:
          - np47832359db2e4843aa13e8b76f83****
      replicas: 2
      tolerations:
      - effect: NoSchedule
        key: apps.openyurt.io/taints
        operator: Exists

Referência de campos YAML

Campo

Descrição

spec.workloadTemplate

Modelo de carga de trabalho para implantação. Suporta deploymentTemplate e statefulSetTemplate.

spec.topology.subsets

Lista de pools de nós para implantação.

spec.topology.subsets[*].name

Nome do pool de nós.

spec.topology.subsets[*].nodeSelectorTerm

Configuração de afinidade de nó. Use alibabacloud.com/nodepool-id como chave e o ID do pool de nós como valor. Para localizar o ID do pool de nós, acesse a página Node Pools e consulte a coluna Name.

spec.topology.subsets[*].tolerations

Configuração de tolerância do pool de nós.

spec.topology.subsets[*].replicas

Número de réplicas de Pod no pool de nós.

Gerencie aplicativos de borda

Com o YurtAppSet em execução, realize todas as operações de ciclo de vida modificando sua especificação. O controlador do YurtAppSet propaga as alterações para a carga de trabalho de cada pool de nós automaticamente.

Atualize a versão do aplicativo

Atualize o spec.workload.workloadTemplate com a nova imagem do contêiner ou outras alterações no modelo. O controlador aplica o modelo atualizado a todas as cargas de trabalho gerenciadas e aciona uma atualização contínua em cada pool de nós.

Execute uma atualização gradual em uma região específica

Atualize o spec.workload.workloadTweaks[*].containerImages do pool de nós de destino. Apenas os Pods desse pool recebem a nova imagem; os demais pools permanecem inalterados.

Dimensione um aplicativo em uma região específica

Modifique o spec.workload.workloadTweaks[*].tweaks.replicas do pool de nós de destino. Essa ação substitui a contagem de réplicas definida no workloadTemplate apenas para esse pool de nós.

Implante em uma nova região

Crie um novo pool de nós com um rótulo correspondente ao spec.nodepoolSelector. O YurtAppSet detecta o novo recurso NodePool e cria automaticamente uma carga de trabalho para ele. Em seguida, adicione nós dessa região ao pool.

Não é necessário alterar a configuração do YurtAppSet ao usar o nodepoolSelector.

Retire um aplicativo de serviço em uma região

Exclua o pool de nós da região de destino. O YurtAppSet detecta a exclusão e remove automaticamente a carga de trabalho associada a esse pool.