Linux on IBM Z and LinuxONE 에서 Kafka 데이터 저장소 생성하기
Kafka 운영자를 설치하고 데이터 저장소를 설정하십시오.
시작하기 전에
외부 저장소에서 이미지를 가져오기 위해 온라인 및 오프라인 호스트를 준비했는지 확인하십시오. 또한 올바른 Helm 저장소가 추가되었는지 확인하십시오.
자세한 내용은 ‘데이터 스토어 설치 준비’를 참조하십시오.
Strimzi( 0.46.0 )에서 Kafka 버전( 3.8.0 및 3.8.1 ), ZooKeeper-based ( Apache Kafka ) 클러스터, 그리고 KRaft 마이그레이션에 대한 지원이 중단되었습니다. Strimzi( 0.45.0 ) 또는 그 이전 버전을 사용 중이라면, Strimzi( 0.46.0 )로 업그레이드하기 전에 KRaft로 마이그레이션해야 합니다.
Z ookeeper 기반 클러스터에서 KRaft 클러스터로 데이터를 마이그레이션하는 방법에 대한 자세한 내용은 온라인 문서의 ‘ Kafka 용 Zookeeper에서 KRaft로 마이그레이션’을 참조하십시오.
Kafka 배포용 운영체제 버전 및 이미지 태그
고정된 Helm 차트 또는 운영자 버전에는 다음 이미지가 필요합니다.
| 플랫폼 | 오퍼레이터 버전 | Helm 차트 버전 | 태그가 있는 이미지 |
|---|---|---|---|
| Linux® on IBM Z® and LinuxONE | 0.51.0 | 0.51.0 | artifact-public.instana.io/self-hosted-images/3rd-party/operator/strimzi: 0.51.0_v0.32.0 artifact-public.instana.io/self-hosted-images/3rd-party/datastore/kafka: 0.51.0-kafka-4.1.1_v0.32.0 |
Kafka 온라인 설치
Kafka 데이터 저장소를 설치하려면 다음 단계를 완료하십시오.
instana-kafka네임스페이스를 작성하십시오.kubectl create namespace instana-kafkainstana-kafka네임스페이스에 대한 이미지 풀 시크릿을 작성하십시오. < download_key>값을 사용자 고유의 에이전트 키로 업데이트하십시오.kubectl create secret docker-registry instana-registry --namespace instana-kafka \ --docker-username=_ \ --docker-password=<download_key> \ --docker-server=artifact-public.instana.io만들고 허용
custom_values.yaml오차 및 친화도를 지정합니다. 파일이 이미 생성된 경우 이 단계를 건너뛰세요.tolerations: - key: node.instana.io/monitor operator: Equal effect: NoSchedule value: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/monitor operator: In values: - "true"스트림지 연산자를 설치합니다.
helm install strimzi instana/strimzi-kafka-operator --version 0.51.0 -n instana-kafka --set image.registry=artifact-public.instana.io --set image.repository=self-hosted-images/3rd-party/operator --set image.name=strimzi --set image.tag=0.51.0_v0.32.0 --set image.imagePullSecrets[0].name="instana-registry" --set kafka.image.registry=artifact-public.instana.io --set kafka.image.repository=self-hosted-images/3rd-party/datastore --set kafka.image.name=kafka --set kafka.image.tag=0.51.0-kafka-4.1.1_v0.32.0 -f custom_values.yaml브로커용 ` YAML ` 파일을 생성합니다. 예를 들어, 브로커
kafka-broker.yaml구성의 경우.apiVersion: kafka.strimzi.io/v1 kind: KafkaNodePool metadata: name: kafka labels: strimzi.io/cluster: instana spec: replicas: 3 roles: - broker storage: type: jbod volumes: - id: 0 type: persistent-claim size: 50Gi deleteClaim: true template: pod: tmpDirSizeLimit: 500Mi tolerations: - key: node.instana.io/monitor operator: Equal effect: NoSchedule value: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/monitor operator: In values: - "true"브로커를 배포합니다.
kubectl apply -f kafka-broker.yaml -n instana-kafka컨트롤러용 ` YAML ` 파일을 생성합니다. 예를 들어, 컨트롤러
kafka-controller.yaml구성의 경우.apiVersion: kafka.strimzi.io/v1 kind: KafkaNodePool metadata: name: controller labels: strimzi.io/cluster: instana spec: replicas: 3 roles: - controller storage: type: persistent-claim size: 50Gi deleteClaim: true template: pod: tmpDirSizeLimit: 500Mi tolerations: - key: node.instana.io/monitor operator: Equal effect: NoSchedule value: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/monitor operator: In values: - "true"컨트롤러 배포.
kubectl apply -f kafka-controller.yaml -n instana-kafkaYAML 파일을 작성하십시오. 예를 들어,
kafka.yamlKafka 구성을 사용할 경우.apiVersion: kafka.strimzi.io/v1 kind: Kafka metadata: name: instana labels: strimzi.io/cluster: instana annotations: strimzi.io/node-pools: enabled strimzi.io/kraft: enabled spec: kafka: version: 4.1.1 listeners: - name: scram port: 9092 type: internal tls: false authentication: type: scram-sha-512 configuration: useServiceDnsDomain: true authorization: type: simple superUsers: - strimzi-kafka-user config: offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 transaction.state.log.min.isr: 2 default.replication.factor: 3 min.insync.replicas: 2 max.message.bytes: 52428800 replica.fetch.max.bytes: 52428800 template: pod: tmpDirSizeLimit: 100Mi template: pod: tolerations: - key: node.instana.io/monitor operator: Equal effect: NoSchedule value: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/monitor operator: In values: - "true" entityOperator: template: pod: tolerations: - key: node.instana.io/monitor operator: Equal effect: NoSchedule value: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/monitor operator: In values: - "true" tmpDirSizeLimit: 100Mi # Add the following securityContext snippet for Kubernetes offerings other than OCP. # securityContext: # runAsUser: 1000 # fsGroup: 1000 userOperator: image: artifact-public.instana.io/self-hosted-images/3rd-party/operator/strimzi:0.51.0_v0.32.0Kafka (온라인 및 오프라인)의 단계를 완료하십시오.
Kafka Operator 오프라인 설치
설치 준비시 외부 레지스트리에서 ClickHouse 이미지를 아직 가져오지 않은 경우 지금 가져올 수 있습니다. bastion 호스트에서 다음 명령을 실행하십시오. 그런 다음, 해당 이미지를 에어갭 환경에 있는 Instana 호스트로 복사하십시오.
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/operator/strimzi:0.51.0
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/datastore/kafka:0.51.0_v0.32.0
Instana 호스트에서 다음 단계를 수행하십시오.
이미지를 내부 이미지 레지스트리에 다시 태그 지정하십시오.
docker tag artifact-public.instana.io/self-hosted-images/3rd-party/operator/strimzi:0.51.0 <internal-image-registry>/operator/strimzi:0.51.0 docker tag artifact-public.instana.io/self-hosted-images/3rd-party/datastore/kafka:0.51.0_v0.32.0 <internal-image-registry>/datastore/kafka:0.51.0_v0.32.0배스천 호스트의 내부 이미지 레지스트리에 이미지를 푸시하십시오.
docker push <internal-image-registry>/operator/strimzi:0.51.0 docker push <internal-image-registry>/datastore/kafka:0.51.0_v0.32.0instana-kafka네임스페이스를 작성하십시오.kubectl create namespace instana-kafka선택 사항입니다: 내부 이미지 레지스트리에 인증이 필요한 경우 이미지 풀 시크릿을 생성합니다.
kubectl create secret docker-registry <secret_name> --namespace instana-kafka \ --docker-username=<registry_username> \ --docker-password=<registry_password> \ --docker-server=<internal-image-registry>:<internal-image-registry-port> \ --docker-email=<registry_email>만들고 허용
custom_values.yaml오차 및 친화도를 지정합니다. 파일이 이미 생성된 경우 이 단계를 건너뛰세요.tolerations: - key: node.instana.io/monitor operator: Equal effect: NoSchedule value: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/monitor operator: In values: - "true"스트림지 연산자를 설치합니다. 이전 단계에서 이미지 풀 시크릿을 생성했다면, 다음 명령어에 다음을
--set image.imagePullSecrets[0].name="<internal-image-registry-pull-secret>"추가하세요:helm install strimzi strimzi-kafka-operator-helm-3-chart-0.51.0.tgz --version 0.51.0 -n instana-kafka --set image.registry=<internal-image-registry> --set image.repository=operator/strimzi --set image.name=strimzi --set image.tag=0.51.0_v0.32.0 --set kafka.image.registry=<internal-image-registry> --set kafka.image.repository=datastore/kafka --set kafka.image.name=kafka --set kafka.image.tag=0.51.0-kafka-4.1.1_v0.32.0 -f custom_values.yaml브로커용 ` YAML ` 파일을 생성합니다. 예를 들어, 브로커
kafka-broker.yaml구성의 경우.apiVersion: kafka.strimzi.io/v1 kind: KafkaNodePool metadata: name: kafka labels: strimzi.io/cluster: instana spec: replicas: 3 roles: - broker storage: type: jbod volumes: - id: 0 type: persistent-claim size: 50Gi deleteClaim: true template: pod: tmpDirSizeLimit: 500Mi tolerations: - key: node.instana.io/monitor operator: Equal effect: NoSchedule value: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/monitor operator: In values: - "true"브로커를 배포합니다.
kubectl apply -f kafka-broker.yaml -n instana-kafka컨트롤러용 ` YAML ` 파일을 생성합니다. 예를 들어, 컨트롤러
kafka-controller.yaml구성의 경우.apiVersion: kafka.strimzi.io/v1 kind: KafkaNodePool metadata: name: controller labels: strimzi.io/cluster: instana spec: replicas: 3 roles: - controller storage: type: persistent-claim size: 50Gi deleteClaim: true template: pod: tmpDirSizeLimit: 500Mi tolerations: - key: node.instana.io/monitor operator: Equal effect: NoSchedule value: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/monitor operator: In values: - "true"컨트롤러 배포.
kubectl apply -f kafka-controller.yaml -n instana-kafka- 예를
kafka.yaml들어, Kafka 구성을 포함하는 ` YAML ` 파일을 생성합니다.apiVersion: kafka.strimzi.io/v1 kind: Kafka metadata: name: instana labels: strimzi.io/cluster: instana annotations: strimzi.io/node-pools: enabled strimzi.io/kraft: enabled spec: kafka: version: 4.1.1 listeners: - name: scram port: 9092 type: internal tls: false authentication: type: scram-sha-512 configuration: useServiceDnsDomain: true authorization: type: simple superUsers: - strimzi-kafka-user template: pod: tolerations: - key: node.instana.io/monitor operator: Equal effect: NoSchedule value: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/monitor operator: In values: - "true" config: offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 transaction.state.log.min.isr: 2 default.replication.factor: 3 min.insync.replicas: 2 max.message.bytes: 52428800 replica.fetch.max.bytes: 52428800 template: pod: tmpDirSizeLimit: 100Mi entityOperator: template: pod: tolerations: - key: node.instana.io/monitor operator: Equal effect: NoSchedule value: "true" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/monitor operator: In values: - "true" tmpDirSizeLimit: 100Mi # Add the following securityContext snippet for Kubernetes offerings other than OCP. # securityContext: # runAsUser: 1000 # fsGroup: 1000 userOperator: image: <internal-image-registry>/operator/strimzi:0.51.0_v0.32.0 - Kafka (온라인 및 오프라인)의 단계를 완료하십시오.
Kafka 배포 및 검증 (온라인 및 오프라인)
Kafka 인스턴스를 배치하고 데이터 저장소를 작성하려면 다음 단계를 완료하십시오.
Kafka를 배치하십시오.
kubectl apply -f kafka.yaml -n instana-kafka kubectl wait kafka/instana --for=condition=Ready --timeout=300s -n instana-kafkaSSL/SCRAM을 사용하여 Kafka 클러스터로 인증할 수 있는 Kafka 사용자를 작성하십시오.
YAML 파일을 생성합니다. 예를 들어
strimzi-kafka-user.yaml, Kafka 사용자 사양을 포함하도록 합니다.apiVersion: kafka.strimzi.io/v1 kind: KafkaUser metadata: name: strimzi-kafka-user labels: strimzi.io/cluster: instana spec: authentication: type: scram-sha-512 authorization: type: simple acls: - resource: type: topic name: '*' patternType: literal operation: All host: "*" - resource: type: group name: '*' patternType: literal operation: All host: "*"strimzi-kafka-user사용자를 작성하십시오.kubectl apply -f strimzi-kafka-user.yaml -n instana-kafka kubectl wait kafkauser/strimzi-kafka-user --for=condition=Ready --timeout=60s -n instana-kafkastrimzi-kafka-user의 비밀번호를 검색하십시오.kubectl get secret strimzi-kafka-user -n instana-kafka --template='{{index .data.password | base64decode}}' && echo검색된 비밀번호를
config.yaml파일에 저장하십시오.<RETRIEVED_FROM_SECRET>값을 이전 단계에서 얻은 비밀번호로 대체하십시오.datastoreConfigs: ... kafkaConfig: adminUser: strimzi-kafka-user adminPassword: <RETRIEVED_FROM_SECRET> consumerUser: strimzi-kafka-user consumerPassword: <RETRIEVED_FROM_SECRET> producerUser: strimzi-kafka-user producerPassword: <RETRIEVED_FROM_SECRET> ...
Instana ( Kafka ) 설치 상태를 확인하십시오.
kubectl get all -n instana-kafka출력은 다음 예제와 같을 수 있습니다.
NAME READY STATUS RESTARTS AGE pod/instana-entity-operator-8564975588-mrz2f 3/3 Running 0 15m pod/instana-kafka-0 1/1 Running 0 16m pod/instana-kafka-1 1/1 Running 0 16m pod/instana-kafka-2 1/1 Running 0 16m pod/instana-contoller-0 1/1 Running 0 17m pod/instana-contoller-1 1/1 Running 0 17m pod/instana-contoller-2 1/1 Running 0 17m pod/strimzi-cluster-operator-cf49c75d8-qm8jq 1/1 Running 0 34m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/instana-kafka-bootstrap ClusterIP 192.168.1.239 <none> 9091/TCP,9092/TCP 16m service/instana-kafka-brokers ClusterIP None <none> 9090/TCP,9091/TCP,9092/TCP 16m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/instana-entity-operator 1/1 1 1 15m deployment.apps/strimzi-cluster-operator 1/1 1 1 34m NAME DESIRED CURRENT READY AGE replicaset.apps/instana-entity-operator-8564975588 1 1 1 15m replicaset.apps/strimzi-cluster-operator-cf49c75d8 1 1 1 34m포드가 원하는 노드에 스케줄링되었는지 확인하십시오.
kubectl get pods -n instana-kafka -o wide다음 예시에서 출력 예시를 확인할 수 있습니다.
instana-entity-operator-77c6bc665-74d9t 1/1 Running 1 22d 10.254.12.207 worker0.instana-odf5.cp.fyre.ibm.com <none> <none> instana-kafka-0 1/1 Running 1 22d 10.254.12.206 worker1.instana-odf5.cp.fyre.ibm.com <none> <none> instana-kafka-1 1/1 Running 0 22d 10.254.20.18 worker2.instana-odf5.cp.fyre.ibm.com <none> <none> instana-kafka-2 1/1 Running 0 22d 10.254.12.204 worker3.instana-odf5.cp.fyre.ibm.com <none> <none> instana-contoller-0 1/1 Running 1 22d 10.254.12.207 worker0.instana-odf5.cp.fyre.ibm.com <none> <none> instana-contoller-1 1/1 Running 0 22d 10.254.12.206 worker1.instana-odf5.cp.fyre.ibm.com <none> <none> instana-contoller-2 1/1 Running 0 22d 10.254.20.18 worker2.instana-odf5.cp.fyre.ibm.com <none> <none> strimzi-cluster-operator-5c9dfd89c6-dbr4d 1/1 Running 1 22d 10.254.12.204 worker3.instana-odf5.cp.fyre.ibm.com <none> <none>
Kafka 설치 후 수행할 작업 (온라인 및 오프라인)
Kafka 운영자를 성공적으로 설치한 후 필요한 경우 다음 태스크를 완료하십시오.
(선택 사항) 크루즈 컨트롤을 사용하여 클러스터 부하 분산
크루즈 제어는 Kafka 클러스터에서 워크로드의 밸런스를 유지합니다. 자세한 정보는 크루즈 제어를 사용한 클러스터 밸런싱을 참조하십시오.
Kafka 배치에서 크루즈 컨트롤을 사용하려면 다음 단계를 완료하십시오.
클러스터의 브로커에 메트릭 리포터를 설치하십시오. 자세한 내용은 ‘ Kafka 모니터링’을 참조하십시오.
크루즈 컨트롤 서버 배포를 생성합니다.
편집할
Kafka사용자 정의 자원을 여십시오.kubectl edit kafkas.kafka.strimzi.io <your-kafka-cluster-name> -n instana-kafkaKafka사용자 정의 자원에 다음 구성을 추가하십시오.apiVersion: kafka.strimzi.io/v1 kind: Kafka metadata: name: instana spec: # ... cruiseControl: {}
구성을 적용하십시오.
kubectl apply -f kafka.yaml -n instana-kafka구성을 적용할 때 Kafka 는 모든 기본 크루즈 제어 설정을 사용하여 크루즈 제어 서버를 배치합니다. 새 클러스터를 시작하는 대신 기존 클러스터에 크루즈 제어를 추가하면 모든 Kafka 브로커 팟 (Pod) 이 메트릭 리포터를 설치하기 위해 롤링하는 것을 볼 수 있습니다.
클러스터에 크루즈 제어가 배치되었는지 확인하십시오.
kubectl get pods -n instana-kafka명령 출력은 다음 예제에 표시된 대로 크루즈 제어 팟 (Pod) 을 표시합니다.
NAME READY STATUS RESTARTS AGE instana-cruise-control-6fcbd54b48-ndzrh 2/2 Running 0 8m48s instana-entity-operator-78d7995695-8tt2v 3/3 Running 0 12m instana-kafka-0 2/2 Running 0 9m12s instana-kafka-1 2/2 Running 0 10m instana-kafka-2 2/2 Running 0 9m46s instana-contoller-0 1/1 Running 0 13m instana-contoller-1 1/1 Running 0 13m instana-contoller-2 1/1 Running 0 13m strimzi-cluster-operator-54565f8c56-rmdb8 1/1 Running 0 14m크루즈 제어가 배치된 후에는 각 브로커에서 메트릭 기자가 작성하는 토픽에서 메트릭을 가져오기 시작합니다.
최적화 제안 받기
크루즈 제어가 배치된 후 최적화 제안을 생성할 수 있습니다. 이를 수행하려면 KafkaRebalance 사용자 정의 자원을 적용해야 합니다 (이에 대한 정의는 Strimzi를 설치할 때 설치됨). 기본 KafkaRebalance 가 다음 예제에 표시되어 있습니다.
apiVersion: kafka.strimzi.io/v1
kind: KafkaRebalance
metadata:
name: my-rebalance
labels:
strimzi.io/cluster: instana
# no goals specified, using the default goals from the Cruise Control configuration
spec: {}
다른 자원과 마찬가지로 KafkaRebalance 사용자 정의 자원을 배치할 수 있습니다.
kubectl apply -f kafka-rebalance.yaml -n instana-kafka
KafkaRebalance 리소스를 Kafka 클러스터에 적용하면 클러스터 운영자가 크루즈 제어에 대한 관련 요청을 발행하여 최적화 제안을 페치합니다. 클러스터 운영자는 KafkaRebalance 의 상태 및 크루즈 제어의 진행 업데이트를 저장합니다. 다음 명령을 사용하여 업데이트를 확인할 수 있습니다.
kubectl describe kafkarebalance my-rebalance -n instana-kafka
결과는 다음 예제와 같을 수 있습니다.
Name: my-rebalance
Namespace: instana-kafka
Labels: strimzi.io/cluster=instana
Annotations: API Version: kafka.strimzi.io/v1
Kind: KafkaRebalance
Metadata:
# ...
Status:
Conditions:
Last Transition Time: 2023-04-04T11:13:35.749066535Z
Status: ProposalReady
Type: State
Observed Generation: 1
Optimization Result:
Data To Move MB: 0
Excluded Brokers For Leadership:
Excluded Brokers For Replica Move:
Excluded Topics:
Intra Broker Data To Move MB: 12
Monitored Partitions Percentage: 100
Num Intra Broker Replica Movements: 0
Num Leader Movements: 24
Num Replica Movements: 55
On Demand Balancedness Score After: 84.23162054159118
On Demand Balancedness Score Before: 80.87946050436929
Recent Windows: 5
Session Id: 42f7cc24-b295-4406-80c9-c3c7a3625180
다음 항목은 KafkaRebalance 요청의 주요 파트입니다.
Status.Conditions.Status필드는 재조정 요청의 진행 상태를 표시합니다. 제안이 아직 준비되지 않은 경우ProposalPending가Status로 표시될 수 있습니다.Status.Optimization Result(제안이 준비되면) 는 최적화 제안의 요약을 표시합니다. 이러한 각 값의 의미는 Strimzi 문서에 설명되어 있습니다.
클러스터 재조정 시작
KafkaRebalance 제안이 사용자의 요구사항과 일치하는 경우, approve 어노테이션을 크루즈 제어의 KafkaRebalance 자원에 적용하여 변경사항 적용을 시작할 수 있습니다.
kubectl annotate kafkarebalance my-rebalance strimzi.io/rebalance=approve -n instana-kafka
approve 어노테이션을 적용하면, 크루즈 제어가 KafkaRebalance 제안의 변경사항을 업데이트합니다. 클러스터 운영자는 KafkaRebalance 자원이 진행 중인 동안 재조정의 진행 상태를 최신 상태로 유지합니다. 다음 명령을 실행하여 재조정의 진행 상태를 확인할 수 있습니다.
kubectl describe kafkarebalance my-rebalance -n instana-kafka
재조정이 진행 중이면 Status 에 Rebalancing가 표시됩니다. 재조정이 완료되면 Status 에 Ready가 표시됩니다.
다음 예를 참조하십시오.
Name: my-rebalance
Namespace: instana-kafka
Labels: strimzi.io/cluster=instana
Annotations: API Version: kafka.strimzi.io/v1
Kind: KafkaRebalance
Metadata:
# ...
Status:
Conditions:
Last Transition Time: 2023-04-04T11:16:06.230479824Z
Status: Rebalancing
Type: State
# ...
클러스터 재조정 중지
재조정은 시간이 오래 걸릴 수 있으며 클러스터의 성능에 영향을 줄 수 있습니다. 따라서 문제가 발생하는 경우 재조정을 중지할 수 있습니다. 진행 중인 재조정을 중지하려면 다음 명령을 사용하여 언제든지 stop 어노테이션을 KafkaRebalance 자원에 적용할 수 있습니다.
kubectl annotate kafkarebalance my-rebalance strimzi.io/rebalance=stop -n instana-kafka