Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Propagation policies and override policies

Dernière mise à jour :Aug 11, 2026

ACK One utilise des politiques de propagation et des politiques de substitution pour distribuer les applications au sein d'un parc. Une politique de propagation définit quelles ressources sont distribuées vers quels clusters. Une politique de substitution applique des remplacements de configuration spécifiques au cluster à ces ressources.

Politiques de propagation

Une politique de propagation sélectionne des ressources Kubernetes et les distribue vers un ou plusieurs clusters membres. Définissez une PropagationPolicy ou ClusterPropagationPolicy — toutes deux sont basées sur le projet open source Karmada et sont compatibles avec l'API Karmada.

  • PropagationPolicy : Distribue des ressources au niveau du namespace. S'applique uniquement au sein du namespace où la politique est définie.

  • ClusterPropagationPolicy : Distribue des ressources étendues au cluster (PersistentVolume, StorageClass, Namespace, CustomResourceDefinition) et des ressources au niveau du namespace dans n'importe quel namespace, à l'exception des namespaces système. Le contrôle d'accès basé sur les rôles (RBAC) pour la distribution des ressources est régi par permissions RBAC du parc multi-cluster.

L'exemple suivant distribue un Deployment et un ConfigMap vers deux clusters avec des pondérations de réplicas statiques :

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

Paramètres

Paramètre Obligatoire Description Exemple
apiVersion Oui La version de l'API. policy.one.alibabacloud.com/v1alpha1
kind Oui L'étendue de la politique. PropagationPolicy distribue les ressources au sein de son propre namespace. ClusterPropagationPolicy distribue les ressources étendues au cluster et les ressources dans n'importe quel namespace non système. PropagationPolicy
namespace Non Obligatoire lorsque kind est PropagationPolicy. Spécifiez un namespace existant. demo
name Non Le nom de la politique de propagation. policy-xxxx
resourceSelectors Non Sélectionne les ressources Kubernetes à distribuer. Si omis, aucune ressource n'est sélectionnée. Consultez paramètres resourceSelector. —
propagateDeps Non Indique s'il faut distribuer automatiquement les ressources dont dépend la charge de travail sélectionnée (par exemple, un ConfigMap référencé par un Deployment). true
placement Oui Spécifie les clusters cibles et la planification des réplicas. Contient clusterAffinity et replicaScheduling. Consultez paramètres clusterAffinity et paramètres replicaScheduling. —
dependentOverrides Non Répertorie les objets OverridePolicy qui doivent être appliqués avant la distribution des ressources. - overridePolicy1
failover Non Contrôle le comportement lorsqu'une application devient indisponible. Consultez configuration du basculement. —
preserveResourcesOnDeletion Oui Indique s'il faut conserver les ressources distribuées dans les clusters membres après la suppression de la politique. Par défaut : true. false

Paramètres resourceSelector

Paramètre Obligatoire Description Exemple
apiVersion Oui La version de l'API de la ressource à distribuer. v1
kind Oui Le type de ressource. Deployment
namespace Non Le namespace de la ressource. Lors de l'utilisation de PropagationPolicy, celui-ci doit correspondre au namespace où la politique est définie — les autres valeurs n'ont aucun effet. demo
name Non Le nom de la ressource. web-demo
labelSelector Non Sélectionne les ressources par libellés. Prend en charge matchLabels (paires clé-valeur) et matchExpressions (expressions avec key, operator et values). Si omis, toutes les ressources du kind spécifié dans le namespace sont sélectionnées. —

Paramètres clusterAffinity

Spécifiez les clusters cibles en utilisant n'importe quelle combinaison des champs suivants :

Par ID de cluster

clusterAffinity:
  clusterNames:
  - cxxxx
  - cxxxx

Par sélecteur de libellés

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

Par exclusion

clusterAffinity:
  excludeClusters:
  - cxxxx
  - cxxxx
Paramètre Obligatoire Description
clusterNames Non IDs de cluster à inclure.
excludeClusters Non IDs de cluster à exclure.
labelSelector Non Sélectionne les clusters par libellé.

Paramètres replicaScheduling

Paramètre Obligatoire Description Exemple
replicaSchedulingType Non Mode de distribution des réplicas entre les clusters. Duplicated exécute le nombre total de réplicas sur chaque cluster. Divided répartit les réplicas entre les clusters de sorte que le total corresponde au nombre spécifié dans la spécification de la charge de travail. Divided
customSchedulingType Non Politique de planification personnalisée. Actuellement, seule la planification Gang est prise en charge, pour les charges de travail de type job. Gang
replicaDivisionPreference Non Utilisé lorsque replicaSchedulingType est Divided. Weighted répartit les réplicas par pondération. Aggregated concentre les réplicas sur les clusters ayant le score le plus élevé. Weighted
weightPreference Non Spécifie des pondérations statiques ou dynamiques pour la division Weighted. Voir les exemples ci-dessous. —

Exemple de pondération statique — avec weight: 2 sur Cluster1 et weight: 1 sur Cluster2, trois réplicas au total sont planifiés comme suit : deux sur Cluster1 et un sur Cluster2 :

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

Exemple de pondération dynamique — distribue les réplicas proportionnellement en fonction de la capacité disponible de chaque cluster :

weightPreference:
  dynamicWeight: AvailableReplicas

Configuration du basculement

Configurez le champ failover pour contrôler la réaction d'ACK One lorsqu'une application devient indisponible :

failover:
  application:
    decisionConditions:
      tolerationSeconds: 30
    purgeMode: Immediately
Paramètre Description Par défaut
decisionConditions.tolerationSeconds Durée d'attente avant de considérer une application indisponible comme défaillante. 300s
purgeMode Action à entreprendre pour l'application indisponible. Immediately l'évince et planifie un remplacement. Graciously attend que l'application récupère ; si elle récupère dans le délai gracePeriodSeconds, l'éviction est annulée. Never laisse l'application en place et nécessite une intervention manuelle. —
gracePeriodSeconds Délai d'attente maximal pour une éviction gracieuse lorsque purgeMode est Graciously. 600s

Politiques de substitution

Une politique de substitution applique une configuration spécifique au cluster aux ressources qu'une politique de propagation a déjà sélectionnées pour la distribution. Définissez une ClusterOverridePolicy ou une OverridePolicy — toutes deux sont basées sur le projet open source Karmada et sont compatibles avec les interfaces ClusterOverridePolicy et OverridePolicy de Karmada.

  • OverridePolicy : Substitue les ressources au niveau du namespace au sein de son propre namespace.

  • ClusterOverridePolicy : Substitue les ressources étendues au cluster (PersistentVolume, StorageClass, Namespace, CustomResourceDefinition) et les ressources dans n'importe quel namespace non système.

L'exemple suivant substitue le nombre de réplicas et le registre d'images pour un Deployment dans un cluster spécifique :

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

Paramètres principaux

Paramètre Obligatoire Description Exemple
apiVersion Oui La version de l'API. policy.one.alibabacloud.com/v1alpha1
kind Oui L'étendue de la politique. OverridePolicy s'applique au sein de son propre namespace. ClusterOverridePolicy s'applique aux ressources étendues au cluster et aux ressources dans n'importe quel namespace non système. OverridePolicy
namespace Non Obligatoire lorsque kind est OverridePolicy. Spécifiez un namespace existant. demo
name Oui Le nom de la politique de substitution. demo
resourceSelectors Oui Sélectionne les ressources à substituer. Consultez paramètres resourceSelector. —
overrideRules Oui Un tableau de règles de substitution, chacune ciblant des clusters spécifiques et spécifiant les substitutions à appliquer. Consultez paramètres overrideRules. —

Paramètres resourceSelector

Paramètre Obligatoire Description Exemple
apiVersion Oui La version de l'API de la ressource. v1
kind Oui Le type de ressource. Deployment
namespace Non Le namespace de la ressource. Lors de l'utilisation de OverridePolicy, celui-ci doit correspondre au namespace de la politique. demo
name Non Le nom de la ressource. example
labelSelector Non Sélectionne les ressources par libellé. Si omis, toutes les ressources du kind spécifié dans le namespace sont sélectionnées. —

Paramètres overrideRules

Chaque entrée dans overrideRules contient un targetCluster et un bloc overriders :

Paramètre Obligatoire Description
targetCluster Oui Spécifie les clusters auxquels la substitution s'applique, en utilisant la même structure clusterAffinity que les politiques de propagation. Consultez paramètres clusterAffinity.
overriders Oui Définit ce qui doit être substitué. Prend en charge imageOverrider et plaintext. Lorsque les deux sont spécifiés dans la même règle, imageOverrider est appliqué en premier, puis plaintext.

Paramètres overriders

imageOverrider — modifie le registre d'images, le dépôt ou le tag :

Paramètre Obligatoire Description
predicate Non Le chemin vers le champ d'image spécifique à modifier (par exemple, /spec/template/spec/containers/0/image). Si omis, toutes les images de la ressource sont modifiées.
component Oui Le composant d'image à modifier. Valeurs valides : Registry, Repository, Tag. Le format de l'image est [registry/]repository[:tag].
operator Oui L'opération. Valeurs valides : add, replace, remove.
value Conditionnel La nouvelle valeur. Obligatoire lorsque operator est add ou replace.

Exemple — ajouter un préfixe de registre à toutes les images de conteneur :

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

Résultat : une image initialement spécifiée comme nginx:latest devient registry.cn-hangzhou.aliyuncs.com/nginx:latest.

plaintext — modifie n'importe quel champ de ressource en utilisant un JSON Patch (RFC 6902) :

Paramètre Obligatoire Description
path Oui Le chemin JSON Patch vers le champ cible (par exemple, /spec/replicas).
value Conditionnel La nouvelle valeur. Obligatoire lorsque operator est add ou replace. À omettre lorsque operator est remove.
operator Oui L'opération. Valeurs valides : add, replace, remove.

Exemple — définir le nombre de réplicas à 1 dans un cluster spécifique :

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

Résultat : le champ spec.replicas du Deployment passe de sa valeur d'origine à 1 dans le cluster cible.

Étapes suivantes

Pour une présentation complète de la création d'une application dans une instance de parc et de la configuration des politiques de propagation et de substitution pour la distribution multi-cluster, consultez guide de démarrage rapide de la distribution d'applications.