11.3. AMQ Streams DrainCleaner를 사용하여 Pod 제거
Kafka 및 Zoo Cryostat Pod는 OpenShift 업그레이드, 유지 관리 또는 Pod 일정 변경 중에 제거될 수 있습니다. Kafka 브로커 및 Zoo Cryostat Pod가 AMQ Streams에 의해 배포된 경우 AMQ Streams DrainCleaner 툴을 사용하여 Pod 제거를 처리할 수 있습니다. AMQ Streams Drain cleaner가 OpenShift 대신 제거를 처리하므로 Kafka 배포의 podDisruptionBudget 을 0 (영)으로 설정해야 합니다. 그러면 OpenShift에서 더 이상 Pod를 자동으로 제거할 수 없습니다.
AMQ Streams Drain cleaner를 배포하면 Cluster Operator를 사용하여 OpenShift 대신 Kafka Pod를 이동할 수 있습니다. Cluster Operator는 항목이 복제되지 않도록 합니다. Kafka는 제거 프로세스 중에 계속 작동할 수 있습니다. OpenShift 작업자 노드가 연속으로 드레이닝되므로 Cluster Operator는 주제가 동기화될 때까지 기다립니다.
승인 Webhook는 AMQ Streams에 Pod 제거 요청을 Kubernetes API에 알립니다. then AMQ Streams DrainCleaner는 드레인할 Pod에 롤링 업데이트 주석을 추가합니다. 이렇게 하면 Cluster Operator에 제거된 Pod의 롤링 업데이트를 수행합니다.
AMQ Streams DrainCleaner를 사용하지 않는 경우 Pod 주석을 추가하여 롤링 업데이트를 수동으로 수행할 수 있습니다.
Webhook 구성
AMQ Streams Drain cleaner 배포 파일에는 ValidatingWebhookConfiguration 리소스 파일이 포함되어 있습니다. 리소스는 Kubernetes API에 Webhook를 등록하기 위한 구성을 제공합니다.
구성은 Pod 제거 요청 시 수행할 Kubernetes API에 대한 규칙을 정의합니다. 규칙은 pods/eviction 하위 리소스와 관련된 CREATE 작업만 인터셉트되도록 지정합니다. 이러한 규칙이 충족되면 API에서 알림을 전달합니다.
clientConfig 는 AMQ Streams DrainCleaner 서비스 및 Webhook를 노출하는 /drainer 엔드포인트를 가리킵니다. Webhook는 인증이 필요한 보안 TLS 연결을 사용합니다. caBundle 속성은 HTTPS 통신의 유효성을 검사하는 인증서 체인을 지정합니다. 인증서는 Base64로 인코딩됩니다.
Pod 제거 알림에 대한 Webhook 구성
11.3.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
AMQ Streams DrainCleaner를 배포하고 사용하려면 배포 파일을 다운로드해야 합니다.
AMQ Streams DrainCleaner 배포 파일은 AMQ Streams 소프트웨어 다운로드 페이지에서 사용할 수 있습니다.
11.3.2. AMQ Streams Drain cleaner 배포 링크 복사링크가 클립보드에 복사되었습니다!
AMQ Streams Drain cleaner를 Cluster Operator 및 Kafka 클러스터가 실행 중인 OpenShift 클러스터에 배포합니다.
사전 요구 사항
- AMQ Streams cleaner 배포 파일을 다운로드 했습니다.
- 업데이트하려는 OpenShift 작업자 노드에서 실행 중인 고가용성 Kafka 클러스터 배포가 있습니다.
고가용성을 위해 주제가 복제됩니다.
주제 구성은 복제 요소보다 최소 3개 이상 및 최소 동기화된 복제본 수를 1개로 지정합니다.
고가용성을 위해 Kafka 주제 복제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Zoo Cryostat 제외
Zoo Cryostat를 포함하지 않으려면 AMQ Streams Drain cleaner 배포 구성 파일에서 --zookeeper 명령 옵션을 제거할 수 있습니다.
- 1
- AMQ Streams Drain cleaner 작업에서 Zoo Cryostat를 제외하려면 이 옵션을 제거합니다.
절차
Kafka리소스의템플릿설정을 사용하여 Kafka 배포에 대한 Pod 중단 예산(0)을 구성합니다.Pod 중단 예산 지정
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 최대 Pod 중단 예산을 0으로 줄이면 OpenShift가 자발적으로 중단되는 경우 Pod를 자동으로 제거하지 못하도록 AMQ Streams Drain cleaner 및 AMQ Streams Cluster Operator를 종료하여 다른 작업자 노드에서 OpenShift에서 예약할 Pod를 롤아웃합니다.
AMQ Streams DrainCleaner를 사용하여 Zoo Cryostat 노드를 드레이닝하려면 Zoo Cryostat에 대해 동일한 구성을 추가합니다.
Kafka리소스를 업데이트합니다.oc apply -f <kafka_configuration_file>
oc apply -f <kafka_configuration_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow AMQ Streams Drain cleaner를 배포합니다.
oc apply -f ./install/drain-cleaner/openshift
oc apply -f ./install/drain-cleaner/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.3.3. AMQ Streams Drain cleaner 사용 링크 복사링크가 클립보드에 복사되었습니다!
Cluster Operator와 함께 AMQ Streams DrainCleaner를 사용하여 드레이닝 중인 노드에서 Kafka 브로커 또는 Zoo Cryostat Pod를 이동합니다. AMQ Streams DrainCleaner를 실행하면 롤링 업데이트 pod 주석이 있는 Pod에 주석을 추가합니다. Cluster Operator는 주석을 기반으로 롤링 업데이트를 수행합니다.
사전 요구 사항
절차
Kafka 브로커 또는 Zoo Cryostat Pod를 호스팅하는 지정된 OpenShift 노드를 드레이닝합니다.
oc get nodes oc drain <name-of-node> --delete-emptydir-data --ignore-daemonsets --timeout=6000s --force
oc get nodes oc drain <name-of-node> --delete-emptydir-data --ignore-daemonsets --timeout=6000s --forceCopy to Clipboard Copied! Toggle word wrap Toggle overflow AMQ Streams DrainCleaner 로그의 제거 이벤트를 확인하여 Pod에 재시작 주석이 추가되었는지 확인합니다.
AMQ Streams DrainCleaner 로그에서 Pod의 주석 표시
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cluster Operator 로그에서 조정 이벤트를 확인하여 롤링 업데이트를 확인합니다.
Cluster Operator 로그에서 롤링 업데이트 표시
INFO PodOperator:68 - Reconciliation #13(timer) Kafka(my-project/my-cluster): Rolling Pod my-cluster-zookeeper-2 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
INFO PodOperator:68 - Reconciliation #13(timer) Kafka(my-project/my-cluster): Rolling Pod my-cluster-zookeeper-2 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): reconciledCopy to Clipboard Copied! Toggle word wrap Toggle overflow