이 문서에서는 클러스터에서 실행되는 구성 동기화 시스템 포드의 노드 배치를 구성하는 방법을 설명합니다. 노드 배치를 구성하면 보안을 위해 구성 동기화 시스템 포드를 특정 노드로 격리하거나 비용 절감을 위해 더 저렴한 노드에서 구성 동기화를 예약하는 등의 상황에서 유용할 수 있습니다.
MutatingAdmissionPolicy 정보
MutatingAdmissionPolicy 는 Kubernetes 버전 1.36 이상에서 사용할 수 있는 Kubernetes 기능으로, 사용자가 Kubernetes API에 변경사항을 쓸 때마다 동작을 맞춤설정할 수 있습니다.
구성 동기화의 컨텍스트에서 MutatingAdmissionPolicy를 사용하여 구성 동기화 시스템 네임스페이스에서 실행되는 포드에 노드 배치 매개변수를 추가할 수 있습니다.
이러한 매개변수에는
nodeSelector 및 어피니티와 같은 포드 사양 필드가 포함됩니다.
이 문서에서는 구성 동기화와 함께 MutatingAdmissionPolicy를 사용하는 방법을 보여주는 예를 제공하며, 구성 동기화
오픈소스 저장소에서 더 많은 예를 확인할 수 있습니다.
nodeSelectors 설정
다음 예에서는 MutatingAdmissionPolicy를 사용하여 라벨 configmanagement.gke.io/system: "true"가 있는 각 구성 동기화
시스템 네임스페이스에서 실행되는 모든 포드에 nodeSelector를 자동으로 추가하는 방법을 보여줍니다.
구성 동기화 시스템 네임스페이스에는 config-management-system, config-management-monitoring, 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"
다음을 바꿉니다.
LABEL_KEY: 노드 선택기에서 사용할 라벨 키입니다.LABEL_VALUE: 노드 선택기에서 사용할 라벨 값입니다.
이 구성을 클러스터에 적용하면 모든 구성 동기화 시스템 포드 가 라벨 LABEL_KEY=LABEL_VALUE가 있는 노드에 예약됩니다.