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 su 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 in Kubernetes versione 1.36 e successive, che ti consente di 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 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 di 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 quanto segue:
LABEL_KEY: la chiave di etichetta da utilizzare dal selettore di nodi.LABEL_VALUE: 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.