Questo documento spiega come configurare il posizionamento dei nodi per i pod di sistema Config Sync in esecuzione sul cluster. La configurazione del posizionamento dei nodi può essere utile in situazioni come l'isolamento dei pod di sistema Config Sync in nodi specifici per motivi di sicurezza o la pianificazione di Config Sync su nodi più economici per risparmiare sui costi.
Informazioni su MutatingAdmissionPolicy
MutatingAdmissionPolicy
è una funzionalità di Kubernetes disponibile nella versione 1.34 di Kubernetes.
Se MutatingAdmissionPolicy è disponibile sul tuo cluster, puoi personalizzare il comportamento ogni volta che qualcuno scrive una modifica all'API Kubernetes.
Nel contesto di Config Sync, puoi utilizzare MutatingAdmissionPolicy per aggiungere
parametri di posizionamento dei nodi nei pod eseguiti negli spazi dei nomi di sistema di Config Sync.
Questi parametri includono i campi delle specifiche del pod, come
nodeSelector e affinità.
Questo documento fornisce un esempio di come utilizzare un MutatingAdmissionPolicy con
Config Sync e puoi trovare altri esempi nel
repository open source di Config Sync.
Imposta nodeSelector
L'esempio seguente mostra come utilizzare un MutatingAdmissionPolicy per
aggiungere automaticamente un nodeSelector a ogni pod in esecuzione in ciascuno degli spazi dei nomi di sistema Config Sync con l'etichetta configmanagement.gke.io/system: "true".
Gli spazi dei nomi di sistema di Config Sync includono config-management-system,
config-management-monitoring e 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"
- Sostituisci
LABEL_KEYcon la chiave dell'etichetta da utilizzare dal selettore di nodi. - Sostituisci
LABEL_VALUEcon il valore dell'etichetta da utilizzare dal selettore di nodi.
Dopo aver applicato questa configurazione al cluster, tutti i pod di sistema Config Sync vengono pianificati sui nodi con l'etichetta LABEL_KEY=LABEL_VALUE.