27.3. Apache Kafka DrainCleaner용 스트림 사용
Cluster Operator와 함께 Apache Kafka Drain cleaner의 Streams를 사용하여 드레이닝 중인 노드에서 Kafka 브로커 Pod를 이동합니다. Apache Kafka DrainCleaner의 Streams를 실행하면 롤링 업데이트 pod 주석이 있는 Pod에 주석을 추가합니다. Cluster Operator는 주석을 기반으로 롤링 업데이트를 수행합니다.
사전 요구 사항
유사성 방지 구성을 사용할 때 고려 사항
Kafka Pod와 함께 유사성 방지를 사용하는 경우 클러스터에 예비 작업자 노드를 추가하는 것이 좋습니다. 예비 노드를 포함하면 다른 노드를 드레이닝하거나 임시로 사용할 수 없는 동안 클러스터에서 Pod를 다시 예약할 수 있는 용량을 확보할 수 있습니다. 작업자 노드가 드레인되고 유사성 방지 규칙이 대체 노드에서 Pod 일정을 제한하는 경우 예비 노드를 사용하면 재시작된 Pod를 예약할 수 없게 됩니다. 이렇게 하면 드레이닝 작업이 실패할 위험이 완화됩니다.
프로세스
Kafka 브로커를 호스팅하는 지정된 OpenShift 노드를 드레이닝합니다.
oc get nodes oc drain <name_of_node> --delete-emptydir-data --ignore-daemonsets --timeout=6000s --forceApache Kafka Drain cleaner 로그의 Streams에서 제거 이벤트를 확인하여 Pod에 다시 시작 주석이 추가되었는지 확인합니다.
Apache Kafka Drain cleaner 로그 스트림에서 Pod의 주석 표시
INFO ... Received eviction webhook for Pod my-cluster-kafka-0 in namespace my-project INFO ... Pod my-cluster-kafka-0 in namespace my-project will be annotated for restart INFO ... Pod my-cluster-kafka-0 in namespace my-project found and annotated for restartCluster Operator 로그에서 조정 이벤트를 확인하여 롤링 업데이트를 확인합니다.
Cluster Operator 로그에서 롤링 업데이트 표시
INFO PodOperator:68 - Reconciliation #13(timer) Kafka(my-project/my-cluster): Rolling Pod my-cluster-kafka-0 INFO AbstractOperator:500 - Reconciliation #13(timer) Kafka(my-project/my-cluster): reconciled