10.13.2. Kafka 노드의 Pod 유사성 방지 구성
내결함성을 개선하기 위해 여러 Kafka 브로커 Pod가 동일한 작업자 노드에서 실행되지 않도록 할 수 있습니다. Pod가 다른 작업자 노드에 예약되도록 podAntiAffinity 를 구성합니다.
이 절차에서는 클러스터 전체 Kafka 리소스 및 풀별 KafkaNodePool 리소스에 대한 구성 예제를 제공합니다.
KafkaNodePool.spec.template 을 구성하는 경우 해당 설정에서 해당 노드 풀의 Kafka.spec.kafka.template 을 대체합니다. 속성은 병합되지 않습니다. 자세한 내용은 스케줄링 전략을 참조하십시오.
사전 요구 사항
프로세스
Kafka또는KafkaNodePool리소스에서podAntiAffinity를 구성합니다.-
클러스터 전체 규칙을 설정하려면
Kafka리소스의spec.kafka.template.pod에서affinity속성을 편집합니다.strimzi.io/name레이블을 사용하여 모든 브로커 Pod를 선택합니다. -
풀별 규칙을 설정하려면
KafkaNodePool리소스의spec.template.pod에서affinity속성을 편집합니다.strimzi.io/pool-name레이블을 사용하여 해당 풀의 Pod만 선택합니다.
두 경우 모두
topologyKey를"kubernetes.io/hostname"으로 설정하여 Pod가 동일한 호스트에 배치되지 않도록 합니다.이 예제에서는 브로커 Pod가 동일한 노드에서 실행되지 않도록
my-cluster라는Kafka리소스에 규칙을 적용합니다.클러스터 전체 유사성 방지 구성의 예
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... template: pod: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: strimzi.io/name operator: In values: - my-cluster-kafka topologyKey: "kubernetes.io/hostname" # ...이 예에서는
broker라는KafkaNodePool리소스에 규칙을 적용하여 Pod가 동일한 노드에서 실행되지 않도록 합니다.노드 풀별 유사성 방지 구성의 예
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaNodePool metadata: name: broker labels: strimzi.io/cluster: my-cluster spec: replicas: 3 roles: - broker template: pod: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: strimzi.io/pool-name operator: In values: - broker topologyKey: "kubernetes.io/hostname" # ...-
클러스터 전체 규칙을 설정하려면
- 사용자 정의 리소스 구성에 변경 사항을 적용합니다.