구성 동기화 시스템 포드의 노드 배치 맞춤설정

이 문서에서는 클러스터에서 실행되는 구성 동기화 시스템 포드의 노드 배치를 구성하는 방법을 설명합니다. 노드 배치 구성은 보안 목적으로 구성 동기화 시스템 포드를 특정 노드로 격리하거나 비용 절감을 위해 저렴한 노드에 구성 동기화를 예약하는 등의 상황에서 유용할 수 있습니다.

MutatingAdmissionPolicy 정보

MutatingAdmissionPolicy은 Kubernetes 버전 1.34에서 사용할 수 있는 Kubernetes 기능입니다. 클러스터에서 MutatingAdmissionPolicy를 사용할 수 있는 경우 사용자가 Kubernetes API에 변경사항을 쓸 때마다 동작을 맞춤설정할 수 있습니다.

구성 동기화의 컨텍스트에서 MutatingAdmissionPolicy를 사용하여 구성 동기화 시스템 네임스페이스에서 실행되는 포드에 노드 배치 매개변수를 추가할 수 있습니다. 이러한 매개변수에는 nodeSelector 및 affinity와 같은 포드 사양 필드가 포함됩니다. 이 문서에서는 구성 동기화와 함께 MutatingAdmissionPolicy를 사용하는 방법을 보여주는 예를 제공하며, 구성 동기화 오픈소스 저장소에서 더 많은 예를 확인할 수 있습니다.

nodeSelector 설정

다음 예시에서는 MutatingAdmissionPolicy를 사용하여 configmanagement.gke.io/system: "true" 라벨이 지정된 각 Config Sync 시스템 네임스페이스에서 실행되는 모든 포드에 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 라벨이 있는 노드에 예약됩니다.