Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Propagation policies and override policies

Última atualização: Jun 27, 2026

O ACK One usa políticas de propagação e de substituição para distribuir aplicações em uma frota. A política de propagação define quais recursos vão para quais clusters, enquanto a política de substituição aplica configurações específicas do cluster a esses recursos.

Políticas de propagação

Uma política de propagação seleciona recursos do Kubernetes e os distribui para um ou mais clusters membros. Defina uma PropagationPolicy ou ClusterPropagationPolicy. Ambas se baseiam no projeto open source Karmada e são compatíveis com a API do Karmada.

  • PropagationPolicy: Distribui recursos no nível de namespace. Aplica-se apenas ao namespace onde a política foi definida.

  • ClusterPropagationPolicy: Distribui recursos com escopo de cluster (PersistentVolume, StorageClass, Namespace, CustomResourceDefinition) e recursos no nível de namespace em qualquer namespace, exceto nos namespaces de sistema. O Controle de Acesso Baseado em Função (RBAC) para distribuição de recursos segue as permissões RBAC de frota multicluster.

O exemplo a seguir distribui um Deployment e um ConfigMap para dois clusters com pesos estáticos de réplicas:

apiVersion: policy.one.alibabacloud.com/v1alpha1
kind: PropagationPolicy
metadata:
  name: web-demo
  namespace: demo
spec:
  resourceSelectors:
  - apiVersion: apps/v1
    kind: Deployment
    name: web-demo
  - apiVersion: v1
    kind: ConfigMap
    name: cm-demo
  - apiVersion: apps/v1
    kind: Deployment
    labelSelector:
      matchExpressions:
      - key: app
        operator: In
        values:
        - xxxx
  preserveResourcesOnDeletion: true
  placement:
    clusterAffinity:
      clusterNames:
      - cxxxxx # Your cluster ID.
      - cxxxxx # Your cluster ID.
    replicaScheduling:
      replicaSchedulingType: Divided
      replicaDivisionPreference: Weighted
      weightPreference:
        staticWeightList:
        - targetCluster:
            clusterNames:
            - cxxxxx
          weight: 2
        - targetCluster:
            clusterNames:
            - cxxxxxx
          weight: 1

Parâmetros

Parâmetro

Obrigatório

Descrição

Exemplo

apiVersion

Sim

Versão da API.

policy.one.alibabacloud.com/v1alpha1

kind

Sim

Escopo da política. PropagationPolicy distribui recursos dentro do próprio namespace. ClusterPropagationPolicy distribui recursos com escopo de cluster e recursos em qualquer namespace que não seja de sistema.

PropagationPolicy

namespace

Não

Necessário quando kind for PropagationPolicy. Especifique um namespace existente.

demo

name

Não

Nome da política de propagação.

policy-xxxx

resourceSelectors

Não

Seleciona os recursos do Kubernetes para distribuição. Se omitido, nenhum recurso será selecionado. Consulte parâmetros de resourceSelector.

propagateDeps

Não

Define se os recursos dos quais a carga de trabalho selecionada depende devem ser distribuídos automaticamente (por exemplo, um ConfigMap referenciado por um Deployment).

true

placement

Sim

Especifica os clusters de destino e o agendamento de réplicas. Contém clusterAffinity e replicaScheduling. Consulte parâmetros de clusterAffinity e parâmetros de replicaScheduling.

dependentOverrides

Não

Lista objetos OverridePolicy que devem ser aplicados antes da distribuição dos recursos.

- overridePolicy1

failover

Não

Controla o comportamento quando uma aplicação apresenta falha de integridade. Consulte Configuração de failover.

preserveResourcesOnDeletion

Sim

Define se os recursos distribuídos devem ser mantidos nos clusters membros após a exclusão da política. Padrão: true.

false

Parâmetros de resourceSelector

Parâmetro

Obrigatório

Descrição

Exemplo

apiVersion

Sim

Versão da API do recurso a ser distribuído.

v1

kind

Sim

Tipo de recurso.

Deployment

namespace

Não

Namespace do recurso. Ao usar PropagationPolicy, este valor deve corresponder ao namespace onde a política está definida. Outros valores não terão efeito.

demo

name

Não

Nome do recurso.

web-demo

labelSelector

Não

Seleciona recursos por rótulos. Suporta matchLabels (pares chave-valor) e matchExpressions (expressões com key, operator e values). Se omitido, todos os recursos do kind especificado no namespace serão selecionados.

Parâmetros de clusterAffinity

Especifique os clusters de destino usando qualquer combinação dos campos a seguir:

Por ID do cluster

clusterAffinity:
  clusterNames:
  - cxxxx
  - cxxxx

Por seletor de rótulos

clusterAffinity:
  labelSelector:
    matchLabels:
      region: A
      az: zone0
    matchExpressions:
    - key: app
      operator: In
      values:
      - nginx

Por exclusão

clusterAffinity:
  excludeClusters:
  - cxxxx
  - cxxxx

Parâmetro

Obrigatório

Descrição

clusterNames

Não

IDs dos clusters a incluir.

excludeClusters

Não

IDs dos clusters a excluir.

labelSelector

Não

Seleciona clusters por rótulo.

Parâmetros de replicaScheduling

Parâmetro

Obrigatório

Descrição

Exemplo

replicaSchedulingType

Não

Define como as réplicas são distribuídas entre os clusters. Duplicated executa a contagem total de réplicas em cada cluster. Divided divide as réplicas entre os clusters para que o total corresponda à contagem especificada na spec da carga de trabalho.

Divided

customSchedulingType

Não

Política de agendamento personalizada. Atualmente, apenas o agendamento Gang é suportado, destinado a cargas de trabalho do tipo job.

Gang

replicaDivisionPreference

Não

Utilizado quando replicaSchedulingType é Divided. Weighted divide as réplicas por peso. Aggregated concentra as réplicas nos clusters com maior pontuação.

Weighted

weightPreference

Não

Especifica pesos estáticos ou dinâmicos para a divisão Weighted. Veja os exemplos abaixo.

Exemplo de peso estático — com weight: 2 no Cluster1 e weight: 1 no Cluster2, três réplicas no total são agendadas como duas no Cluster1 e uma no Cluster2:

weightPreference:
  staticWeightList:
  - targetCluster:
      clusterNames:
      - cxxxxx  # Cluster1 ID
    weight: 2
  - targetCluster:
      clusterNames:
      - cxxxxxx  # Cluster2 ID
    weight: 1

Exemplo de peso dinâmico — distribui réplicas proporcionalmente com base na capacidade disponível de cada cluster:

weightPreference:
  dynamicWeight: AvailableReplicas

Configuração de failover

Configure o campo failover para controlar como o ACK One responde quando uma aplicação apresenta falha de integridade:

failover:
  application:
    decisionConditions:
      tolerationSeconds: 30
    purgeMode: Immediately

Parâmetro

Descrição

Padrão

decisionConditions.tolerationSeconds

Tempo de espera antes de tratar uma aplicação com falha de integridade como indisponível.

300s

purgeMode

Ação a ser tomada com a aplicação com falha. Immediately remove a aplicação e agenda uma substituta. Graciously aguarda a recuperação da aplicação; se ela se recuperar dentro do período definido em gracePeriodSeconds, a remoção é cancelada. Never mantém a aplicação no local e exige intervenção manual.

gracePeriodSeconds

Tempo máximo de espera para remoção graciosa quando purgeMode é Graciously.

600s

Políticas de substituição

Uma política de substituição aplica configurações específicas de cluster aos recursos que uma política de propagação já selecionou para distribuição. Defina uma ClusterOverridePolicy ou OverridePolicy. Ambas se baseiam no projeto open source Karmada e são compatíveis com as interfaces ClusterOverridePolicy e OverridePolicy do Karmada.

  • OverridePolicy: Substitui recursos no nível de namespace dentro do próprio namespace.

  • ClusterOverridePolicy: Substitui recursos com escopo de cluster (PersistentVolume, StorageClass, Namespace, CustomResourceDefinition) e recursos em qualquer namespace que não seja de sistema.

O exemplo a seguir substitui a contagem de réplicas e o registro de imagens para um Deployment em um cluster específico:

apiVersion: policy.one.alibabacloud.com/v1alpha1
kind: OverridePolicy
metadata:
  name: demo
  namespace: demo
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
      name: example
  overrideRules:
    - targetCluster:
        clusterNames:
          - cxxxxx  # Your cluster ID
      overriders:
        plaintext:
          - operator: replace
            path: /spec/replicas
            value: 1
        imageOverrider:
          - component: Registry
            operator: add
            value: registry.cn-hangzhou.aliyuncs.com/xxxx

Principais parâmetros

Parâmetro

Obrigatório

Descrição

Exemplo

apiVersion

Sim

Versão da API.

policy.one.alibabacloud.com/v1alpha1

kind

Sim

Escopo da política. OverridePolicy aplica-se dentro do próprio namespace. ClusterOverridePolicy aplica-se a recursos com escopo de cluster e a recursos em qualquer namespace que não seja de sistema.

OverridePolicy

namespace

Não

Necessário quando kind for OverridePolicy. Especifique um namespace existente.

demo

name

Sim

Nome da política de substituição.

demo

resourceSelectors

Sim

Seleciona os recursos a serem substituídos. Consulte parâmetros de resourceSelector.

overrideRules

Sim

Array de regras de substituição. Cada regra direciona a clusters específicos e define as substituições a aplicar. Consulte parâmetros de overrideRules.

Parâmetros de resourceSelector

Parâmetro

Obrigatório

Descrição

Exemplo

apiVersion

Sim

Versão da API do recurso.

v1

kind

Sim

Tipo de recurso.

Deployment

namespace

Não

Namespace do recurso. Ao usar OverridePolicy, este valor deve corresponder ao namespace da política.

demo

name

Não

Nome do recurso.

example

labelSelector

Não

Seleciona recursos por rótulo. Se omitido, todos os recursos do kind especificado no namespace serão selecionados.

Parâmetros de overrideRules

Cada entrada em overrideRules contém um bloco targetCluster e um bloco overriders:

Parâmetro

Obrigatório

Descrição

targetCluster

Sim

Especifica a quais clusters a substituição se aplica, utilizando a mesma estrutura clusterAffinity das políticas de propagação. Consulte parâmetros de clusterAffinity.

overriders

Sim

Define o que deve ser substituído. Suporta imageOverrider e plaintext. Quando ambos são especificados na mesma regra, imageOverrider é aplicado primeiro, seguido por plaintext.

Parâmetros de overriders

imageOverrider — modifique o registro, repositório ou tag da imagem:

Parâmetro

Obrigatório

Descrição

predicate

Não

Caminho para o campo específico da imagem a ser modificado (por exemplo, /spec/template/spec/containers/0/image). Se omitido, todas as imagens no recurso serão modificadas.

component

Sim

Componente da imagem a ser modificado. Valores válidos: Registry, Repository, Tag. O formato da imagem é [registry/]repository[:tag].

operator

Sim

Operação. Valores válidos: add, replace, remove.

value

Condicional

Novo valor. Obrigatório quando operator for add ou replace.

Exemplo — adiciona um registro como prefixo a todas as imagens de contêiner:

imageOverrider:
  - component: Registry
    operator: add
    value: registry.cn-hangzhou.aliyuncs.com

Resultado: uma imagem originalmente especificada como nginx:latest torna-se registry.cn-hangzhou.aliyuncs.com/nginx:latest.

plaintext — modifique qualquer campo de recurso usando um JSON Patch (RFC 6902):

Parâmetro

Obrigatório

Descrição

path

Sim

Caminho do JSON Patch para o campo de destino (por exemplo, /spec/replicas).

value

Condicional

Novo valor. Obrigatório quando operator for add ou replace. Omita quando operator for remove.

operator

Sim

Operação. Valores válidos: add, replace, remove.

Exemplo — defina a contagem de réplicas como 1 em um cluster específico:

plaintext:
  - operator: replace
    path: /spec/replicas
    value: 1

Resultado: o campo spec.replicas do Deployment é alterado de seu valor original para 1 no cluster de destino.

Próximos passos

Para um tutorial completo sobre como criar uma aplicação em uma instância de frota e configurar políticas de propagação e substituição para distribuição multicluster, consulte o Guia de início rápido de distribuição de aplicações.