Ce document explique comment configurer le placement des nœuds pour les pods système Config Sync qui s'exécutent sur votre cluster. La configuration du placement des nœuds peut être utile dans des situations telles que l'isolation des pods système Config Sync sur des nœuds spécifiques à des fins de sécurité ou la planification de Config Sync sur des nœuds moins chers à des fins d'économies.
À propos de MutatingAdmissionPolicy
MutatingAdmissionPolicy est une fonctionnalité Kubernetes disponible dans Kubernetes version 1.36 et ultérieure, qui vous permet de personnaliser le comportement chaque fois qu'une personne écrit une modification dans l'API Kubernetes.
Dans le contexte de Config Sync, vous pouvez utiliser MutatingAdmissionPolicy pour ajouter des paramètres de placement de nœuds dans les pods qui s'exécutent dans les espaces de noms système Config Sync.
Ces paramètres incluent des champs de spécification de pod tels que
nodeSelector et l'affinité.
Ce document fournit un exemple d'utilisation d'un MutatingAdmissionPolicy avec
Config Sync. Vous trouverez d'autres exemples dans le dépôt Config Sync
Open Source.
Définir des nodeSelectors
L'exemple suivant montre comment utiliser une MutatingAdmissionPolicy pour
ajouter automatiquement un nodeSelector à chaque pod s'exécutant dans chacun des espaces de noms système Config Sync
avec le libellé configmanagement.gke.io/system: "true".
Les espaces de noms système Config Sync incluent config-management-system, config-management-monitoring et resource-group-system.
apiVersion: admissionregistration.k8s.io/v1beta1
kind: MutatingAdmissionPolicy
metadata:
name: "my-pod-node-selector"
spec:
matchConstraints:
resourceRules:
- apiGroups: [""]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["pods"]
failurePolicy: Fail
reinvocationPolicy: IfNeeded
mutations:
# Basic example of adding nodeSelector: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
# Similar mutations can be applied for affinities, tolerations, and so on
- patchType: "JSONPatch"
jsonPatch:
expression: >
[
JSONPatch{
op: "add", path: "/spec/nodeSelector",
value: {
"LABEL_KEY": "LABEL_VALUE",
}
}
]
---
apiVersion: admissionregistration.k8s.io/v1beta1
kind: MutatingAdmissionPolicyBinding
metadata:
name: "configsync-node-selector"
spec:
policyName: "my-pod-node-selector"
matchResources:
namespaceSelector:
matchLabels:
# This namespace selector only selects Config Sync system namespaces
configmanagement.gke.io/system: "true"
Remplacez les éléments suivants :
LABEL_KEY: clé d'étiquette à utiliser par le sélecteur de nœuds.LABEL_VALUE: valeur de libellé à utiliser par le sélecteur de nœuds.
Après avoir appliqué cette configuration à votre cluster, tous les pods système Config Sync sont planifiés sur des nœuds avec le libellé LABEL_KEY=LABEL_VALUE.