Este documento explica como configurar o posicionamento de nós para pods do sistema do Config Sync em execução no cluster. A configuração do posicionamento de nós pode ser útil em situações como isolar pods do sistema do Config Sync em nós específicos para fins de segurança ou agendar o Config Sync em nós mais baratos para economizar custos.
Sobre MutatingAdmissionPolicy
MutatingAdmissionPolicy
é um recurso do Kubernetes disponível na versão 1.34.
Se MutatingAdmissionPolicy estiver disponível no seu cluster, você poderá personalizar o
comportamento sempre que alguém gravar uma mudança na API Kubernetes.
No contexto do Config Sync, é possível usar MutatingAdmissionPolicy para adicionar
parâmetros de posicionamento de nós em pods que são executados em namespaces do sistema do Config Sync.
Esses parâmetros incluem campos de especificação de pod, como
nodeSelector e afinidade.
Este documento mostra um exemplo de como usar um MutatingAdmissionPolicy com o Config Sync. Você pode encontrar mais exemplos no repositório de código aberto do Config Sync.
Definir nodeSelectors
O exemplo a seguir mostra como usar um MutatingAdmissionPolicy para
adicionar automaticamente um nodeSelector a cada pod em execução em cada um dos namespaces do sistema
do Config Sync com o rótulo configmanagement.gke.io/system: "true".
Os namespaces do sistema do Config Sync incluem 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"
- Substitua
LABEL_KEYpela chave de rótulo a ser usada pelo seletor de nós. - Substitua
LABEL_VALUEpelo valor do rótulo a ser usado pelo seletor de nós.
Depois de aplicar essa configuração ao cluster, todos os pods do sistema do Config Sync serão programados em nós com o rótulo LABEL_KEY=LABEL_VALUE.