9.13. Pod 예약 구성


동일한 OpenShift 노드에서 예약된 애플리케이션 간 리소스 충돌로 인한 성능 저하를 방지하기 위해 Kafka Pod를 중요한 워크로드와 별도로 예약할 수 있습니다. 이를 위해 특정 노드를 선택하거나 Kafka 전용 노드 세트를 약화할 수 있습니다.

9.13.1. 유사성, 허용 오차 및 토폴로지 분배 제약 조건 지정

유사성, 허용 오차 및 토폴로지 분배 제약 조건을 사용하여 노드에 kafka 리소스의 Pod를 예약합니다. 유사성, 허용 오차 및 토폴로지 분배 제약 조건은 다음 리소스의 유사성,허용 오차topologySpreadConstraint 속성을 사용하여 구성됩니다.

  • Kafka.spec.kafka.template.pod
  • Kafka.spec.zookeeper.template.pod
  • Kafka.spec.entityOperator.template.pod
  • KafkaConnect.spec.template.pod
  • KafkaBridge.spec.template.pod
  • KafkaMirrorMaker.spec.template.pod
  • KafkaMirrorMaker2.spec.template.pod

선호도,허용 오차topologySpreadConstraint 속성 형식의 형식은 OpenShift 사양을 따릅니다. 선호도 구성에는 다양한 유형의 선호도가 포함될 수 있습니다.

  • Pod 유사성 및 유사성 방지
  • 노드 유사성

Pod 유사성 방지를 사용하여 중요한 애플리케이션이 동일한 디스크에 예약되지 않도록 합니다. Kafka 클러스터를 실행할 때는 Pod 유사성 방지를 사용하여 Kafka 브로커가 데이터베이스와 같은 다른 워크로드와 노드를 공유하지 않도록 하는 것이 좋습니다.

9.13.1.2. 노드 유사성을 사용하여 특정 노드에 워크로드 예약

OpenShift 클러스터는 일반적으로 다양한 유형의 작업자 노드로 구성됩니다. 일부는 CPU가 많은 워크로드, 일부 메모리에 최적화되어 있고 다른 일부는 스토리지(빠른 로컬 SSD) 또는 네트워크에 최적화될 수 있습니다. 다른 노드를 사용하면 비용과 성능을 모두 최적화하는 데 도움이 됩니다. 최상의 성능을 얻으려면 AMQ Streams 구성 요소가 올바른 노드를 사용하도록 예약할 수 있어야 합니다.

OpenShift는 노드 유사성을 사용하여 특정 노드에 워크로드를 예약합니다. 노드 유사성을 사용하면 Pod를 예약할 노드에 대한 스케줄링 제약 조건을 생성할 수 있습니다. 제약 조건은 라벨 선택기로 지정됩니다. 올바른 노드를 선택하려면 beta.kubernetes.io/instance-type 또는 사용자 정의 레이블과 같은 기본 제공 노드 레이블을 사용하여 라벨을 지정할 수 있습니다.

9.13.1.3. 전용 노드에 노드 유사성 및 허용 오차 사용

테인트를 사용하여 전용 노드를 생성한 다음 노드 유사성 및 허용 오차를 구성하여 전용 노드에서 Kafka Pod를 예약합니다.

클러스터 관리자는 선택한 OpenShift 노드를 테인트로 표시할 수 있습니다. 테인트가 있는 노드는 일반 스케줄링에서 제외되며 일반 Pod는 해당 노드에서 실행되도록 예약되지 않습니다. 노드에 테인트를 설정할 수 있는 서비스만 예약할 수 있습니다. 이러한 노드에서 실행되는 유일한 다른 서비스는 로그 수집기 또는 소프트웨어 정의 네트워크와 같은 시스템 서비스입니다.

전용 노드에서 Kafka 및 해당 구성 요소를 실행하면 많은 이점이 있을 수 있습니다. 동일한 노드에서 실행 중인 다른 애플리케이션은 없으며 Kafka에 필요한 리소스를 방해하거나 사용할 수 있습니다. 이로 인해 성능 및 안정성이 향상될 수 있습니다.

많은 Kafka 브로커 또는 Zoo Cryostat 노드는 동일한 OpenShift 작업자 노드에서 실행할 수 있습니다. 작업자 노드가 실패하면 모두 동시에 사용할 수 없게 됩니다. 안정성을 개선하기 위해 podAntiAffinity 구성을 사용하여 다른 OpenShift 작업자 노드에서 각 Kafka 브로커 또는 Zoo Cryostat 노드를 예약할 수 있습니다.

사전 요구 사항

  • OpenShift 클러스터
  • 실행중인 Cluster Operator

프로세스

  1. 클러스터 배포를 지정하는 리소스에서 affinity 속성을 편집합니다. Kafka 브로커 또는 Zoo Cryostat 노드에서 작업자 노드를 공유하지 않도록 하려면 strimzi.io/name 레이블을 사용합니다. topologyKeykubernetes.io/hostname 으로 설정하여 선택한 Pod가 동일한 호스트 이름이 있는 노드에서 예약되지 않도록 지정합니다. 이렇게 하면 단일 Kafka 브로커 및 단일 Zoo Cryostat 노드에서 동일한 작업자 노드를 공유할 수 있습니다. 예를 들면 다음과 같습니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    spec:
      kafka:
        # ...
        template:
          pod:
            affinity:
              podAntiAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  - labelSelector:
                      matchExpressions:
                        - key: strimzi.io/name
                          operator: In
                          values:
                            - CLUSTER-NAME-kafka
                    topologyKey: "kubernetes.io/hostname"
        # ...
      zookeeper:
        # ...
        template:
          pod:
            affinity:
              podAntiAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  - labelSelector:
                      matchExpressions:
                        - key: strimzi.io/name
                          operator: In
                          values:
                            - CLUSTER-NAME-zookeeper
                    topologyKey: "kubernetes.io/hostname"
        # ...
    Copy to Clipboard Toggle word wrap

    여기서 CLUSTER-NAME 은 Kafka 사용자 정의 리소스의 이름입니다.

  2. Kafka 브로커와 Zoo Cryostat 노드가 동일한 작업자 노드를 공유하지 않도록 하려면 strimzi.io/cluster 레이블을 사용합니다. 예를 들면 다음과 같습니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    spec:
      kafka:
        # ...
        template:
          pod:
            affinity:
              podAntiAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  - labelSelector:
                      matchExpressions:
                        - key: strimzi.io/cluster
                          operator: In
                          values:
                            - CLUSTER-NAME
                    topologyKey: "kubernetes.io/hostname"
        # ...
      zookeeper:
        # ...
        template:
          pod:
            affinity:
              podAntiAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  - labelSelector:
                      matchExpressions:
                        - key: strimzi.io/cluster
                          operator: In
                          values:
                            - CLUSTER-NAME
                    topologyKey: "kubernetes.io/hostname"
        # ...
    Copy to Clipboard Toggle word wrap

    여기서 CLUSTER-NAME 은 Kafka 사용자 정의 리소스의 이름입니다.

  3. 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap

9.13.3. Kafka 구성 요소에서 Pod 유사성 방지 구성

Pod 유사성 방지 구성은 Kafka 브로커의 안정성 및 성능에 도움이 됩니다. podAntiAffinity 를 사용하면 OpenShift에서 다른 워크로드와 동일한 노드에 Kafka 브로커를 예약하지 않습니다. 일반적으로 Kafka가 다른 네트워크 또는 스토리지 집약적인 애플리케이션과 동일한 작업자 노드에서 실행되지 않도록 해야 합니다(예: 데이터베이스, 스토리지 또는 기타 메시징 플랫폼).

사전 요구 사항

  • OpenShift 클러스터
  • 실행중인 Cluster Operator

프로세스

  1. 클러스터 배포를 지정하는 리소스에서 affinity 속성을 편집합니다. 라벨을 사용하여 동일한 노드에서 예약해서는 안 되는 Pod를 지정합니다. 선택한 Pod를 호스트 이름이 동일한 노드에서 예약하지 않도록 topologyKeykubernetes.io/hostname 으로 설정해야 합니다. 예를 들면 다음과 같습니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    spec:
      kafka:
        # ...
        template:
          pod:
            affinity:
              podAntiAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  - labelSelector:
                      matchExpressions:
                        - key: application
                          operator: In
                          values:
                            - postgresql
                            - mongodb
                    topologyKey: "kubernetes.io/hostname"
        # ...
      zookeeper:
        # ...
    Copy to Clipboard Toggle word wrap
  2. 리소스를 생성하거나 업데이트합니다.

    이 작업은 oc apply 를 사용하여 수행할 수 있습니다.

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap

9.13.4. Kafka 구성 요소에서 노드 유사성 구성

사전 요구 사항

  • OpenShift 클러스터
  • 실행중인 Cluster Operator

프로세스

  1. AMQ Streams 구성 요소를 예약해야 하는 노드에 레이블을 지정합니다.

    이 작업은 oc label:을 사용하여 수행할 수 있습니다.

    oc label node NAME-OF-NODE node-type=fast-network
    Copy to Clipboard Toggle word wrap

    또는 일부 기존 레이블을 재사용할 수 있습니다.

  2. 클러스터 배포를 지정하는 리소스에서 affinity 속성을 편집합니다. 예를 들면 다음과 같습니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    spec:
      kafka:
        # ...
        template:
          pod:
            affinity:
              nodeAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  nodeSelectorTerms:
                    - matchExpressions:
                      - key: node-type
                        operator: In
                        values:
                        - fast-network
        # ...
      zookeeper:
        # ...
    Copy to Clipboard Toggle word wrap
  3. 리소스를 생성하거나 업데이트합니다.

    이 작업은 oc apply 를 사용하여 수행할 수 있습니다.

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap

9.13.5. 전용 노드 설정 및 Pod 예약

사전 요구 사항

  • OpenShift 클러스터
  • 실행중인 Cluster Operator

프로세스

  1. 전용으로 사용할 노드를 선택합니다.
  2. 이러한 노드에 예약된 워크로드가 없는지 확인합니다.
  3. 선택한 노드에서 테인트를 설정합니다.

    이 작업은 oc adm taint 를 사용하여 수행할 수 있습니다.

    oc adm taint node NAME-OF-NODE dedicated=Kafka:NoSchedule
    Copy to Clipboard Toggle word wrap
  4. 또한 선택한 노드에 레이블을 추가합니다.

    이 작업은 oc label:을 사용하여 수행할 수 있습니다.

    oc label node NAME-OF-NODE dedicated=Kafka
    Copy to Clipboard Toggle word wrap
  5. 클러스터 배포를 지정하는 리소스에서 유사성허용 오차 속성을 편집합니다.

    예를 들면 다음과 같습니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    spec:
      kafka:
        # ...
        template:
          pod:
            tolerations:
              - key: "dedicated"
                operator: "Equal"
                value: "Kafka"
                effect: "NoSchedule"
            affinity:
              nodeAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  nodeSelectorTerms:
                  - matchExpressions:
                    - key: dedicated
                      operator: In
                      values:
                      - Kafka
        # ...
      zookeeper:
        # ...
    Copy to Clipboard Toggle word wrap
  6. 리소스를 생성하거나 업데이트합니다.

    이 작업은 oc apply 를 사용하여 수행할 수 있습니다.

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat