Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:manage ack edge applications using yurtappset

Última actualización: Sep 09, 2026

YurtAppSet le permite desplegar y gestionar aplicaciones en varios node pools dentro de un clúster ACK Edge a partir de una sola configuración. Este recurso supervisa los cambios en las etiquetas de los node pools y mantiene sincronizadas las cargas de trabajo automáticamente. De este modo, puede actualizar una versión o escalar una aplicación en todo el clúster sin modificar cada node pool de forma individual.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Un clúster ACK Edge.

  • kubectl configurado para conectarse al clúster.

  • Permisos para crear y gestionar recursos personalizados en el clúster.

Elija su enfoque

Versión del clúster

Recurso recomendado

1.26 o posterior

YurtAppSet (apps.openyurt.io/v1beta1)

Anterior a la 1.26

UnitedDeployment (apps.kruise.io/v1alpha1)

Contexto

En la computación perimetral, la misma aplicación suele ejecutarse en nodos distribuidos en varias regiones. El método tradicional consiste en asignar etiquetas a los nodos de cada región y crear un Deployment independiente por región. Sin embargo, esta práctica se vuelve difícil de administrar cuando aumenta la cantidad de regiones:

Traditional multi-region deployment

  • Actualizaciones tediosas: cada cambio de versión exige actualizar manualmente todos los Deployments.

  • Gestión compleja: a medida que se multiplican las regiones, dar seguimiento y mantener Deployments separados propicia errores.

  • Configuración redundante: los Deployments de distintas regiones comparten especificaciones casi idénticas, lo que dificulta aplicar modificaciones.

YurtAppSet resuelve estos problemas mediante tres mecanismos principales:

Mecanismo

Propósito

workloadTemplate

Define una única plantilla de carga de trabajo que se aplica a todos los node pools de destino.

nodepoolSelector

Selecciona los node pools de destino por etiqueta e incluye o excluye automáticamente los node pools recién creados o eliminados.

workloadTweaks

Sobrescribe campos específicos (réplicas, imagen de contenedor, parches arbitrarios) para node pools individuales sin necesidad de crear cargas de trabajo independientes.

YurtAppSet architecture

YurtAppSet (versión del clúster 1.26 o posterior)

Cree una instancia de YurtAppSet

A continuación se muestra un archivo YAML que crea un YurtAppSet para desplegar una carga de trabajo nginx en dos node pools. El node pool np1xxxxxx utiliza 2 réplicas de nginx:1.19.1, mientras que el node pool np2xxxxxx sobrescribe los valores predeterminados con 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

Referencia de campos YAML

Campos de especificación

Campo

Descripción

Obligatorio

spec.pools

Lista de nombres de los node pools donde se realizará el despliegue. Si se definen tanto pools como nodepoolSelector, se utiliza la unión de ambos.

No

spec.nodepoolSelector

Selecciona los node pools cuyas etiquetas coinciden (metadata.labels en el recurso NodePool). Incluye automáticamente los nuevos node pools coincidentes y excluye los eliminados.

No

spec.workload.workloadTemplate

Plantilla de la carga de trabajo que se va a desplegar. Admite deploymentTemplate y statefulSetTemplate.

Sí

spec.workload.workloadTweaks

Valores de reemplazo por node pool que se aplican sobre workloadTemplate.

No

Para la mayoría de los despliegues, se recomienda usar nodepoolSelector en lugar de pools . La selección basada en etiquetas gestiona automáticamente los node pools agregados o eliminados, sin necesidad de modificar la configuración de YurtAppSet. Para cambiar las etiquetas de un NodePool, edite el YAML correspondiente en la página Custom Resources de la consola del clúster.

Campos de workloadTweaks

Campo

Descripción

Obligatorio

workloadTweaks[*].pools

Node pools (por nombre) a los que se aplica esta modificación.

No

workloadTweaks[*].nodepoolSelector

Node pools (por etiqueta) a los que se aplica esta modificación.

No

workloadTweaks[*].tweaks.replicas

Sobrescribe la cantidad de réplicas en los node pools seleccionados.

No

workloadTweaks[*].tweaks.containerImages

Sobrescribe la imagen de contenedor en los node pools seleccionados.

No

workloadTweaks[*].tweaks.patches

Aplica parches arbitrarios a los campos de workloadTemplate en los node pools seleccionados.

No

tweaks.patches[*].path

Ruta JSON del campo que se va a modificar dentro de workloadTemplate.

No

tweaks.patches[*].operation

Operación del parche: add, remove o replace.

No

tweaks.patches[*].value

Valor que se va a establecer. Solo aplica a las operaciones add y replace.

No

Campos de estado

Campo

Descripción

status.conditions

Estado actual de YurtAppSet, incluido el estado de selección de los node pools y el estado de las cargas de trabajo.

status.readyWorkloads

Cantidad de cargas de trabajo gestionadas cuyas réplicas están listas.

status.updatedWorkloads

Cantidad de cargas de trabajo gestionadas cuyas réplicas se actualizaron a la versión más reciente.

status.totalWorkloads

Total de cargas de trabajo que gestiona este YurtAppSet.

UnitedDeployment (versión del clúster anterior a la 1.26)

Cree una instancia de 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

Referencia de campos YAML

Campo

Descripción

spec.workloadTemplate

Plantilla de la carga de trabajo que se va a desplegar. Admite deploymentTemplate y statefulSetTemplate.

spec.topology.subsets

Lista de los node pools donde se realizará el despliegue.

spec.topology.subsets[*].name

Nombre del node pool.

spec.topology.subsets[*].nodeSelectorTerm

Configuración de afinidad de nodos. Utilice alibabacloud.com/nodepool-id como clave y el identificador del node pool como valor. Para consultar dicho identificador, vaya a la página Node Pools y revíselo en la columna Name.

spec.topology.subsets[*].tolerations

Configuración de tolerancias del node pool.

spec.topology.subsets[*].replicas

Cantidad de réplicas de Pod en el node pool.

Gestione las aplicaciones perimetrales

Una vez que YurtAppSet está en ejecución, todas las operaciones del ciclo de vida se realizan al modificar su especificación. El controlador de YurtAppSet propaga los cambios automáticamente a la carga de trabajo de cada node pool.

Actualice la versión de la aplicación

Actualice spec.workload.workloadTemplate con la nueva imagen de contenedor u otros cambios en la plantilla. El controlador aplica la plantilla actualizada a todas las cargas de trabajo gestionadas y activa una actualización gradual en cada node pool.

Ejecute una actualización gradual en una región específica

Actualice spec.workload.workloadTweaks[*].containerImages para el node pool de destino. Solo los Pods de ese node pool reciben la nueva imagen; los demás no se ven afectados.

Escale una aplicación en una región específica

Actualice spec.workload.workloadTweaks[*].tweaks.replicas para el node pool de destino. Esta acción sobrescribe la cantidad de réplicas definida en workloadTemplate únicamente para ese node pool.

Despliegue en una nueva región

Cree un nuevo node pool con una etiqueta que coincida con spec.nodepoolSelector. YurtAppSet detecta el nuevo recurso NodePool y crea automáticamente una carga de trabajo para él. Después, agregue los nodos de esa región al node pool.

Si utiliza nodepoolSelector, no es necesario modificar la configuración de YurtAppSet.

Desactive una aplicación en una región

Elimine el node pool de la región de destino. YurtAppSet detecta la eliminación y quita automáticamente la carga de trabajo asociada a ese node pool.