Ce document explique comment configurer le placement de 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 pour réduire les coûts.
À propos de MutatingAdmissionPolicy
MutatingAdmissionPolicy est une fonctionnalité Kubernetes disponible dans la version 1.34 de Kubernetes.
Si MutatingAdmissionPolicy est disponible sur votre cluster, vous pouvez 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 les champs de spécification de pod tels que nodeSelector et affinity.
Ce document fournit un exemple d'utilisation d'un MutatingAdmissionPolicy avec Config Sync. Vous trouverez d'autres exemples dans le dépôt Open Source Config Sync.
Définir des nodeSelectors
L'exemple suivant montre comment utiliser un MutatingAdmissionPolicy pour ajouter automatiquement un nodeSelector à chaque pod exécuté 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
LABEL_KEYpar la clé de libellé à utiliser par le sélecteur de nœuds. - Remplacez
LABEL_VALUEpar la valeur du libellé à utiliser par le sélecteur de nœud.
Après avoir appliqué cette configuration à votre cluster, tous les pods système Config Sync sont planifiés sur des nœuds portant le libellé LABEL_KEY=LABEL_VALUE.