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

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

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가 있는 노드에 예약됩니다.