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 배포의 podDisruptionBudget0 (영)으로 설정해야 합니다. 그러면 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 구성

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
# ...
webhooks:
  - name: strimzi-drain-cleaner.strimzi.io
    rules:
      - apiGroups:   [""]
        apiVersions: ["v1"]
        operations:  ["CREATE"]
        resources:   ["pods/eviction"]
        scope:       "Namespaced"
    clientConfig:
      service:
        namespace: "strimzi-drain-cleaner"
        name: "strimzi-drain-cleaner"
        path: /drainer
        port: 443
        caBundle: Cg==
    # ...
Copy to Clipboard Toggle word wrap

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 주제 복제

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaTopic
    metadata:
      name: my-topic
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      partitions: 1
      replicas: 3
      config:
        # ...
        min.insync.replicas: 2
        # ...
    Copy to Clipboard Toggle word wrap

Zoo Cryostat 제외

Zoo Cryostat를 포함하지 않으려면 AMQ Streams Drain cleaner 배포 구성 파일에서 --zookeeper 명령 옵션을 제거할 수 있습니다.

apiVersion: apps/v1
kind: Deployment
spec:
  # ...
  template:
    spec:
      serviceAccountName: strimzi-drain-cleaner
      containers:
        - name: strimzi-drain-cleaner
          # ...
          command:
            - "/application"
            - "-Dquarkus.http.host=0.0.0.0"
            - "--kafka"
            - "--zookeeper" 
1

          # ...
Copy to Clipboard Toggle word wrap
1
AMQ Streams Drain cleaner 작업에서 Zoo Cryostat를 제외하려면 이 옵션을 제거합니다.

절차

  1. Kafka 리소스의 템플릿 설정을 사용하여 Kafka 배포에 대한 Pod 중단 예산( 0) 을 구성합니다.

    Pod 중단 예산 지정

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      namespace: myproject
    spec:
      kafka:
        template:
          podDisruptionBudget:
            maxUnavailable: 0
    
      # ...
      zookeeper:
        template:
          podDisruptionBudget:
            maxUnavailable: 0
      # ...
    Copy to Clipboard Toggle word wrap

    최대 Pod 중단 예산을 0으로 줄이면 OpenShift가 자발적으로 중단되는 경우 Pod를 자동으로 제거하지 못하도록 AMQ Streams Drain cleaner 및 AMQ Streams Cluster Operator를 종료하여 다른 작업자 노드에서 OpenShift에서 예약할 Pod를 롤아웃합니다.

    AMQ Streams DrainCleaner를 사용하여 Zoo Cryostat 노드를 드레이닝하려면 Zoo Cryostat에 대해 동일한 구성을 추가합니다.

  2. Kafka 리소스를 업데이트합니다.

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap
  3. AMQ Streams Drain cleaner를 배포합니다.

    oc apply -f ./install/drain-cleaner/openshift
    Copy to Clipboard Toggle word wrap

11.3.3. AMQ Streams Drain cleaner 사용

Cluster Operator와 함께 AMQ Streams DrainCleaner를 사용하여 드레이닝 중인 노드에서 Kafka 브로커 또는 Zoo Cryostat Pod를 이동합니다. AMQ Streams DrainCleaner를 실행하면 롤링 업데이트 pod 주석이 있는 Pod에 주석을 추가합니다. Cluster Operator는 주석을 기반으로 롤링 업데이트를 수행합니다.

절차

  1. Kafka 브로커 또는 Zoo Cryostat Pod를 호스팅하는 지정된 OpenShift 노드를 드레이닝합니다.

    oc get nodes
    oc drain <name-of-node> --delete-emptydir-data --ignore-daemonsets --timeout=6000s --force
    Copy to Clipboard Toggle word wrap
  2. AMQ Streams DrainCleaner 로그의 제거 이벤트를 확인하여 Pod에 재시작 주석이 추가되었는지 확인합니다.

    AMQ Streams DrainCleaner 로그에서 Pod의 주석 표시

    INFO ... Received eviction webhook for Pod my-cluster-zookeeper-2 in namespace my-project
    INFO ... Pod my-cluster-zookeeper-2 in namespace my-project will be annotated for restart
    INFO ... Pod my-cluster-zookeeper-2 in namespace my-project found and annotated for restart
    
    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 restart
    Copy to Clipboard Toggle word wrap

  3. 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
    Copy to Clipboard Toggle word wrap

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동