2.2. Kafka 클러스터 구성
Kafka 리소스를 사용하여 Kafka 배포를 구성합니다. Kafka 클러스터는 ZooKeeper 클러스터와 함께 배포되므로 Kafka 리소스 내의 ZooKeeper에서도 구성 옵션을 사용할 수 있습니다. Entity Operator는 Topic Operator 및 User Operator로 구성됩니다. 배포에 Topic Operator 및 User Operator를 포함하도록 Kafka 리소스에서 entityOperator 속성을 구성할 수도 있습니다.
4.2.1절. “Kafka 스키마 참조” Kafka 리소스의 전체 스키마를 설명합니다.
Apache Kafka에 대한 자세한 내용은 Apache Kafka 설명서 를 참조하십시오.
리스너 구성
클라이언트를 Kafka 브로커에 연결하기 위해 리스너를 구성합니다. 리스너 구성에 대한 자세한 내용은 4.2.4절. “GenericKafkaListener 스키마 참조” 을 참조하십시오.
TLS 인증서 관리
Kafka를 배포할 때 Cluster Operator는 TLS 인증서를 자동으로 설정하고 업데이트하여 클러스터 내에서 암호화 및 인증을 활성화합니다. 필요한 경우 갱신 기간이 시작되기 전에 클러스터 및 클라이언트 CA 인증서를 수동으로 갱신할 수 있습니다. 클러스터 및 클라이언트 CA 인증서에서 사용하는 키를 교체할 수도 있습니다. 자세한 내용은 CA 인증서 갱신 및 개인 키 교체 를 참조하십시오.
2.2.1. Kafka 구성 링크 복사링크가 클립보드에 복사되었습니다!
Kafka 리소스의 속성을 사용하여 Kafka 배포를 구성합니다.
Kafka를 구성할 뿐만 아니라 ZooKeeper 및 AMQ Streams Operator에 대한 구성을 추가할 수 있습니다. 로깅 및 상태 점검과 같은 일반적인 구성 속성은 각 구성 요소에 대해 개별적으로 구성됩니다.
다음 절차에서는 가능한 구성 옵션 중 일부만 보여주지만 특히 중요한 옵션은 다음과 같습니다.
- 리소스 요청 (CPU / 메모리)
- 최대 및 최소 메모리 할당을 위한 JVM 옵션
- 리스너(및 클라이언트 인증)
- 인증
- 스토리지
- Rack 인식
- 메트릭
- cruise Control for cluster rebalancing
Kafka 버전
Kafka 구성에 대한 inter.broker.protocol.version 속성은 지정된 Kafka 버전 (spec.kafka.version)에서 지원하는 버전이어야합니다. 속성은 Kafka 클러스터에서 사용되는 Kafka 프로토콜 버전을 나타냅니다.
Kafka 3.0.0에서 inter.broker.protocol.version 이 3.0 이상으로 설정되면 log.message.format.version 옵션이 무시되고 설정할 필요가 없습니다.
Kafka 버전을 업그레이드할 때 inter.broker.protocol.version 에 대한 업데이트가 필요합니다. 자세한 내용은 Kafka 업그레이드 에서 참조하십시오.
사전 요구 사항
- OpenShift 클러스터
- 실행 중인 Cluster Operator
배포 방법에 대한 자세한 내용은 OpenShift에 AMQ Streams 배포 및 업그레이드 가이드를 참조하십시오.
절차
Kafka리소스의spec속성을 편집합니다.구성할 수 있는 속성은 다음 예제 구성에 표시되어 있습니다.
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: replicas: 31 version: 3.4.02 logging:3 type: inline loggers: kafka.root.logger.level: INFO resources:4 requests: memory: 64Gi cpu: "8" limits: memory: 64Gi cpu: "12" readinessProbe:5 initialDelaySeconds: 15 timeoutSeconds: 5 livenessProbe: initialDelaySeconds: 15 timeoutSeconds: 5 jvmOptions:6 -Xms: 8192m -Xmx: 8192m image: my-org/my-image:latest7 listeners:8 - name: plain9 port: 909210 type: internal11 tls: false12 configuration: useServiceDnsDomain: true13 - name: tls port: 9093 type: internal tls: true authentication:14 type: tls - name: external15 port: 9094 type: route tls: true configuration: brokerCertChainAndKey:16 secretName: my-secret certificate: my-certificate.crt key: my-key.key authorization:17 type: simple config:18 auto.create.topics.enable: "false" 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 inter.broker.protocol.version: "3.4" storage:19 type: persistent-claim20 size: 10000Gi rack:21 topologyKey: topology.kubernetes.io/zone metricsConfig:22 type: jmxPrometheusExporter valueFrom: configMapKeyRef:23 name: my-config-map key: my-key # ... zookeeper:24 replicas: 325 logging:26 type: inline loggers: zookeeper.root.logger: INFO resources: requests: memory: 8Gi cpu: "2" limits: memory: 8Gi cpu: "2" jvmOptions: -Xms: 4096m -Xmx: 4096m storage: type: persistent-claim size: 1000Gi metricsConfig: # ... entityOperator:27 tlsSidecar:28 resources: requests: cpu: 200m memory: 64Mi limits: cpu: 500m memory: 128Mi topicOperator: watchedNamespace: my-topic-namespace reconciliationIntervalSeconds: 60 logging:29 type: inline loggers: rootLogger.level: INFO resources: requests: memory: 512Mi cpu: "1" limits: memory: 512Mi cpu: "1" userOperator: watchedNamespace: my-topic-namespace reconciliationIntervalSeconds: 60 logging:30 type: inline loggers: rootLogger.level: INFO resources: requests: memory: 512Mi cpu: "1" limits: memory: 512Mi cpu: "1" kafkaExporter:31 # ... cruiseControl:32 # ...- 1
- 2
- 업그레이드 절차에 따라 지원되는 버전으로 변경할 수 있는 Kafka 버전.
- 3
- Kafka 로거 및 로그 수준은 ConfigMap을 통해 직접 (
인라인) 추가되거나 간접적으로 (외부)합니다. 사용자 지정 ConfigMap을log4j.properties키에 배치해야 합니다. Kafkakafka.root.logger.level로거의 경우 로그 수준을 INFO, ERROR, WARN, TRACE, DEBUG, FATAL 또는 OFF로 설정할 수 있습니다. - 4
- 5
- 컨테이너(liveness)를 다시 시작할 시기와 컨테이너가 트래픽을 수락할 수 있는 시기(가용성)를 확인할 수 있는 상태 점검 입니다.
- 6
- 7
- ADVANCED OPTION : 컨테이너 이미지 구성.이는 특별한 경우에만 권장됩니다.
- 8
- 리스너는 클라이언트가 부트스트랩 주소를 통해 Kafka 클러스터에 연결하는 방법을 구성합니다. 리스너는 OpenShift 클러스터 내부 또는 외부에서 연결하기 위해 내부 또는 외부 리스너로 구성됩니다.
- 9
- 리스너를 식별할 이름입니다. Kafka 클러스터 내에서 고유해야 합니다.
- 10
- Kafka 내부의 리스너에서 사용하는 포트 번호입니다. 포트 번호는 지정된 Kafka 클러스터 내에서 고유해야 합니다. 허용되는 포트 번호는 9092이고 포트 9404 및 9999를 제외하고 이미 Prometheus 및 10.0.0.1에 사용됩니다. 리스너 유형에 따라 포트 번호가 Kafka 클라이언트를 연결하는 포트 번호와 동일하지 않을 수 있습니다.
- 11
내부또는cluster-ip로 지정된 리스너 유형(broker별ClusterIP서비스를 사용하여 Kafka를 노출) 또는 외부 리스너의 경우경로(OpenShift만), 로드 밸런서,노드 포트또는수신(Kubernetes만 해당)으로 지정됩니다.- 12
- 각 리스너에 대해 TLS 암호화를 활성화합니다. 기본값은
false입니다.경로리스너에는 TLS 암호화가 필요하지 않습니다. - 13
- 클러스터 서비스 접미사(일반적으로
.cluster.local)를 포함한 정규화된 DNS 이름이 할당되는지 여부를 정의합니다. - 14
- mTLS, SCRAM-SHA-512 또는 토큰 기반 OAuth 2.0으로 지정된 리스너 인증 메커니즘.
- 15
- 외부 리스너 구성은
경로,loadbalancer또는nodeport를 통해 Kafka 클러스터가 OpenShift 외부에 노출되는 방법을 지정합니다. - 16
- 외부 CA(인증 기관)에서 관리하는 Kafka 리스너 인증서에 대한 선택적 구성입니다.
brokerCertECDHEAndKey는 서버 인증서와 개인 키가 포함된 보안을 지정합니다.활성화된 TLS 암호화를 사용하여 모든 리스너에서 Kafka 리스너 인증서를 구성할 수 있습니다. - 17
- 권한 부여 를 사용하면 Kafka 브로커에서 간단한 OAUTH 2.0 또는 OPA 인증을 사용할 수 있습니다. 간단한 인증에서는
AclAuthorizerKafka 플러그인을 사용합니다. - 18
- 19
- 20
- 영구 스토리지에는 동적 볼륨 프로비저닝을 위한 스토리지 ID 및
와 같은 추가 구성 옵션이 있습니다.클래스 - 21
- 다양한 랙, 데이터 센터 또는 가용 영역에 복제본을 분산하기 위한 Rack 인식 구성입니다.
topologyKey는 rack ID가 포함된 노드 레이블과 일치해야 합니다. 이 구성에 사용된 예제에서는 표준topology.kubernetes.io/zone레이블을 사용하여 영역을 지정합니다. - 22
- Prometheus 지표 가 활성화되었습니다. 이 예에서는 Prometheus ScanSetting Exporter(기본 지표 내보내기)에 대한 지표가 구성됩니다.
- 23
- Prometheus exporter에 대한 구성이 포함된 ConfigMap을 참조하여 활성화되는 Prometheus dashboard를 통해 Grafana 대시보드로 메트릭을 내보내는 규칙입니다.
metricsConfig.valueFrom.configMapKeyRef.key아래에 빈 파일이 포함된 ConfigMap에 대한 참조를 사용하여 추가 구성 없이 메트릭을 활성화할 수 있습니다. - 24
- Kafka 구성과 유사한 속성을 포함하는 zookeeper-specific 구성입니다.
- 25
- ZooKeeper 노드 수입니다. zookeeper 클러스터 또는 ensembles는 일반적으로 홀수의 노드 (일반적으로 3, 5 또는 7)와 함께 실행됩니다. 효과적인 쿼럼을 유지하려면 대부분의 노드를 사용할 수 있어야 합니다. ZooKeeper 클러스터에서 쿼럼이 손실되면 클라이언트에 대한 응답이 중지되고 Kafka 브로커가 작동을 중지합니다. AMQ Streams에는 안정적이고 가용성이 높은 ZooKeeper 클러스터를 갖는 것이 중요합니다.
- 26
- 지정된 ZooKeeper 로거 및 로그 수준.
- 27
- 28
- 엔티티 Operator TLS 사이드카 구성. entity Operator는 TLS 사이드카를 사용하여 ZooKeeper와의 보안 통신을 지원합니다.
- 29
- 지정된 Topic Operator 로거 및 로그 수준. 이 예에서는
인라인로깅을 사용합니다. - 30
- 31
- Kafka 내보내기 구성. Kafka 내보내기 는 Kafka 브로커, 특히 소비자 지연 데이터에서 메트릭 데이터를 추출하는 선택적 구성 요소입니다. Kafka 내보내기가 제대로 작동하려면 소비자 그룹을 사용 중이어야 합니다.
- 32
- Kafka 클러스터를 재조정하는 데 사용되는 Cruise Control에 대한 선택적 구성입니다.
리소스를 생성하거나 업데이트합니다.
oc apply -f <kafka_configuration_file>
2.2.1.1. 기본 ZooKeeper 구성 값 링크 복사링크가 클립보드에 복사되었습니다!
AMQ Streams를 사용하여 ZooKeeper를 배포할 때 AMQ Streams로 설정된 기본 구성 중 일부는 표준 ZooKeeper 기본값과 다릅니다. AMQ Streams는 OpenShift 환경에서 ZooKeeper를 실행하는 데 최적화된 값으로 여러 개의 ZooKeeper 속성을 설정하기 때문입니다.
AMQ Streams의 키 ZooKeeper 속성에 대한 기본 구성은 다음과 같습니다.
| 속성 | 기본값 | 설명 |
|---|---|---|
|
| 2000 | 세션 시간 초과 길이를 결정하는 단일 눈금(밀리초)의 길이입니다. |
|
| 5 | 후속자가 ZooKeeper 클러스터의 리더 뒤에 떨어질 수 있는 최대 눈금 수입니다. |
|
| 2 | 후속자가 ZooKeeper 클러스터의 리더와 동기화되지 않을 수 있는 최대 눈금 수입니다. |
|
| 1 |
|
|
| false | ZooKeeper 관리자 서버를 비활성화하려면 플래그를 지정합니다. AMQ Streams에서 관리 서버를 사용하지 않습니다. |
Kafka 사용자 정의 리소스에서 이러한 기본값을 zookeeper.config 로 변경하면 ZooKeeper 클러스터의 동작 및 성능에 영향을 줄 수 있습니다.
2.2.2. Entity Operator 구성 링크 복사링크가 클립보드에 복사되었습니다!
Entity Operator는 실행 중인 Kafka 클러스터에서 Kafka 관련 엔터티를 관리합니다.
Entity Operator는 다음을 포함합니다.
- Kafka 주제를 관리하기 위한 topic Operator
- Kafka 사용자를 관리하는 사용자 Operator
Kafka 리소스 구성을 통해 Cluster Operator는 Kafka 클러스터를 배포할 때 하나 또는 둘 다를 포함하여 Entity Operator를 배포할 수 있습니다.
Operator는 Kafka 클러스터의 주제와 사용자를 관리하도록 자동으로 구성됩니다. Topic Operator 및 User Operator는 단일 네임스페이스만 조사할 수 있습니다.
배포되면 Entity Operator Pod에는 배포 구성에 따라 Operator가 포함됩니다.
2.2.2.1. 엔터티 Operator 구성 속성 링크 복사링크가 클립보드에 복사되었습니다!
Kafka.spec 의 entityOperator 속성을 사용하여 Entity Operator를 구성합니다.
entityOperator 속성은 다음과 같은 여러 하위 속성을 지원합니다.
-
tlsSidecar -
topicOperator -
userOperator -
template
tlsSidecar 속성에는 ZooKeeper와 통신하는 데 사용되는 TLS 사이드카 컨테이너 구성이 포함되어 있습니다.
template 속성에는 레이블, 주석, 유사성, 허용 오차와 같은 Entity Operator Pod의 구성이 포함되어 있습니다. 템플릿 구성에 대한 자세한 내용은 2.7절. “OpenShift 리소스 사용자 정의” 을 참조하십시오.
topicOperator 속성에는 Topic Operator의 구성이 포함되어 있습니다. 이 옵션이 없으면 Entity Operator가 Topic Operator 없이 배포됩니다.
userOperator 속성에는 User Operator의 구성이 포함됩니다. 이 옵션이 없으면 User Operator 없이 Entity Operator가 배포됩니다.
Entity Operator를 구성하는 데 사용되는 속성에 대한 자세한 내용은 EntityUserOperatorSpec 스키마 참조 를 참조하십시오.
두 Operator를 모두 활성화하는 기본 구성의 예
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
zookeeper:
# ...
entityOperator:
topicOperator: {}
userOperator: {}
topicOperator 및 userOperator 에 빈 오브젝트({})를 사용하는 경우 모든 속성은 기본값을 사용합니다.
topicOperator 및 userOperator 속성이 모두 누락되면 Entity Operator가 배포되지 않습니다.
2.2.2.2. 주제 Operator 구성 속성 링크 복사링크가 클립보드에 복사되었습니다!
topic Operator 배포는 topicOperator 오브젝트 내의 추가 옵션을 사용하여 구성할 수 있습니다. 지원되는 속성은 다음과 같습니다.
watchedNamespace-
주제 Operator가
KafkaTopic리소스를 조사하는 OpenShift 네임스페이스입니다. default는 Kafka 클러스터가 배포된 네임스페이스입니다. reconciliationIntervalSeconds-
정기적인 조정 간격(초)입니다. 기본값
120. zookeeperSessionTimeoutSeconds-
ZooKeeper 세션 시간 초과(초)입니다. 기본값
18. topicMetadataMaxAttempts-
Kafka에서 주제 메타데이터를 가져오는 시도 횟수입니다. 각 시도 사이의 시간은 지수 백오프로 정의됩니다. 파티션 또는 복제본 수로 인해 주제 생성에 시간이 더 걸릴 때 이 값을 늘리는 것이 좋습니다. 기본값
6. image-
image속성을 사용하여 사용할 컨테이너 이미지를 구성할 수 있습니다. 사용자 지정 컨테이너 이미지 구성에 대한 자세한 내용은 4.1.6절. “image” 을 참조하십시오. resources-
resources속성은 Topic Operator에 할당된 리소스 양을 구성합니다. 리소스 요청 및 제한 구성에 대한 자세한 내용은 4.1.5절. “resources” 을 참조하십시오. logging-
logging속성은 Topic Operator의 로깅을 구성합니다. 자세한 내용은 4.2.45.1절. “logging” 에서 참조하십시오.
주제 Operator 구성 예
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
zookeeper:
# ...
entityOperator:
# ...
topicOperator:
watchedNamespace: my-topic-namespace
reconciliationIntervalSeconds: 60
# ...
2.2.2.3. 사용자 Operator 설정 속성 링크 복사링크가 클립보드에 복사되었습니다!
사용자 Operator 배포는 userOperator 오브젝트 내의 추가 옵션을 사용하여 구성할 수 있습니다. 지원되는 속성은 다음과 같습니다.
watchedNamespace-
User Operator가
KafkaUser리소스를 조사하는 OpenShift 네임스페이스입니다. default는 Kafka 클러스터가 배포된 네임스페이스입니다. reconciliationIntervalSeconds-
정기적인 조정 간격(초)입니다. 기본값
120. image-
image속성을 사용하여 사용할 컨테이너 이미지를 구성할 수 있습니다. 사용자 지정 컨테이너 이미지 구성에 대한 자세한 내용은 4.1.6절. “image” 을 참조하십시오. resources-
resources속성은 User Operator에 할당된 리소스 양을 구성합니다. 리소스 요청 및 제한 구성에 대한 자세한 내용은 4.1.5절. “resources” 을 참조하십시오. logging-
logging속성은 User Operator의 로깅을 구성합니다. 자세한 내용은 4.2.45.1절. “logging” 에서 참조하십시오. secretPrefix-
secretPrefix속성은 KafkaUser 리소스에서 생성한 모든 Secrets 이름에 접두사를 추가합니다. 예를 들어secretPrefix: kafka-는 모든 Secret 이름을kafka-로 접두사로 지정합니다. 따라서my-user라는 KafkaUser는kafka-my-user라는 시크릿을 생성합니다.
User Operator 구성 예
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
zookeeper:
# ...
entityOperator:
# ...
userOperator:
watchedNamespace: my-user-namespace
reconciliationIntervalSeconds: 60
# ...
2.2.3. Kafka 및 ZooKeeper 스토리지 구성 링크 복사링크가 클립보드에 복사되었습니다!
스테이트풀 애플리케이션으로서 Kafka 및 ZooKeeper는 디스크에 데이터를 저장합니다. AMQ Streams는 이 데이터를 위한 세 가지 스토리지 유형을 지원합니다.
- 임시 (개발 전용 권장)
- 영구
- JBOD(축소가 아닌 Kafka )
Kafka 리소스를 구성할 때 Kafka 브로커와 해당 ZooKeeper 노드에서 사용하는 스토리지 유형을 지정할 수 있습니다. 다음 리소스의 storage 속성을 사용하여 스토리지 유형을 구성합니다.
-
Kafka.spec.kafka -
Kafka.spec.zookeeper
스토리지 유형은 type 필드에 구성됩니다.
스토리지 구성 속성에 대한 자세한 내용은 스키마 참조를 참조하십시오.
Kafka 클러스터를 배포한 후에는 스토리지 유형을 변경할 수 없습니다.
2.2.3.1. 데이터 스토리지 고려 사항 링크 복사링크가 클립보드에 복사되었습니다!
AMQ Streams가 제대로 작동하려면 효율적인 데이터 스토리지 인프라가 필요합니다. 블록 스토리지를 사용하는 것이 좋습니다. AMQ Streams는 블록 스토리지와의 사용만 테스트합니다. NFS와 같은 파일 스토리지는 테스트되지 않았으며 작동할 것이라는 보장이 없습니다.
블록 스토리지에 대해 다음 옵션 중 하나를 선택합니다.
- Amazon EBS(Elastic Block Store)와 같은 클라우드 기반 블록 스토리지 솔루션
- 로컬 영구 볼륨을 사용하는 영구스토리지
- 파이버 채널 또는 iSCSI와 같은 프로토콜에서 액세스하는 SAN(Storage Area Network) 볼륨
AMQ Streams에는 OpenShift 원시 블록 볼륨이 필요하지 않습니다.
2.2.3.1.1. 파일 시스템 링크 복사링크가 클립보드에 복사되었습니다!
Kafka는 메시지를 저장하는 데 파일 시스템을 사용합니다. AMQ Streams는 Kafka와 일반적으로 사용되는 XFS 및 ext4 파일 시스템과 호환됩니다. 파일 시스템을 선택하고 설정할 때 배포의 기본 아키텍처 및 요구 사항을 고려하십시오.
자세한 내용은 Kafka 문서의 파일 시스템 선택 항목을 참조하십시오.
2.2.3.1.2. 디스크 사용량 링크 복사링크가 클립보드에 복사되었습니다!
Apache Kafka 및 ZooKeeper에 대해 별도의 디스크를 사용합니다.
SSD(Solid-State Drive)는 필수는 아니지만 데이터가 비동기적으로 전송되고 수신되는 대규모 클러스터에서 Kafka의 성능을 향상시킬 수 있습니다. SSD는 짧은 대기 시간 데이터 액세스가 필요한 ZooKeeper에서 특히 유용합니다.
Kafka와 ZooKeeper 둘 다 데이터 복제가 내장되어 있기 때문에 복제된 스토리지를 프로비저닝할 필요가 없습니다.
2.2.3.2. 임시 스토리지 링크 복사링크가 클립보드에 복사되었습니다!
임시 데이터 스토리지는 일시적입니다. 노드의 모든 포드는 로컬 임시 스토리지 공간을 공유합니다. 이를 사용하는 Pod가 실행되는 동안 데이터는 유지됩니다. Pod가 삭제되면 데이터가 손실됩니다. Pod는 고가용성 환경에서 데이터를 복구할 수 있습니다.
일시적인 특성으로 인해 임시 스토리지는 개발 및 테스트에만 권장됩니다.
임시 스토리지는 emptyDir 볼륨을 사용하여 데이터를 저장합니다. emptyDir 볼륨은 Pod가 노드에 할당되면 생성됩니다. sizeLimit 속성을 사용하여 emptyDir 의 총 스토리지 양을 설정할 수 있습니다.
임시 스토리지는 복제 요소가 1인 단일 노드 ZooKeeper 클러스터 또는 Kafka 항목에 적합하지 않습니다.
임시 스토리지를 사용하려면 Kafka 또는 ZooKeeper 리소스의 스토리지 유형 구성을 임시 로 설정합니다.
임시 스토리지 구성 예
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
storage:
type: ephemeral
# ...
zookeeper:
# ...
storage:
type: ephemeral
# ...
2.2.3.2.1. Kafka 로그 디렉터리의 마운트 경로 링크 복사링크가 클립보드에 복사되었습니다!
임시 볼륨은 Kafka 브로커가 다음 경로에 마운트된 로그 디렉터리로 사용합니다.
/var/lib/kafka/data/kafka-logIDX
여기서 IDX 는 Kafka 브로커 Pod 인덱스입니다. 예: /var/lib/kafka/data/kafka-log0.
2.2.3.3. 영구 스토리지 링크 복사링크가 클립보드에 복사되었습니다!
영구 데이터 스토리지는 시스템 중단 시 데이터를 유지합니다. 영구 데이터 스토리지를 사용하는 Pod의 경우 Pod 실패 및 재시작 시 데이터가 유지됩니다.
동적 프로비저닝 프레임워크를 사용하면 영구 스토리지를 사용하여 클러스터를 생성할 수 있습니다. Pod 구성에서는 PVC( 영구 볼륨 클레임 )를 사용하여 PV(영구 볼륨)에서 스토리지 요청을 수행합니다. PV는 스토리지 볼륨을 나타내는 스토리지 리소스입니다. PV는 이를 사용하는 Pod와 독립적입니다. PVC는 Pod를 생성할 때 필요한 스토리지 양을 요청합니다. PV의 기본 스토리지 인프라를 인식할 필요가 없습니다. PV가 스토리지 기준과 일치하면 PVC가 PV에 바인딩됩니다.
영구 특성으로 인해 프로덕션에는 영구 스토리지를 사용하는 것이 좋습니다.
PVC는 StorageClass 를 지정하여 다른 유형의 영구 스토리지를 요청할 수 있습니다. 스토리지 클래스는 스토리지 프로필을 정의하고 PV를 동적으로 프로비저닝합니다. 스토리지 클래스를 지정하지 않으면 기본 스토리지 클래스가 사용됩니다. 영구 스토리지 옵션에는 SAN 스토리지 유형 또는 로컬 영구 볼륨이 포함될 수 있습니다.
영구 스토리지를 사용하려면 Kafka 또는 ZooKeeper 리소스의 스토리지 유형 구성을 persistent-claim 으로 설정합니다.
프로덕션 환경에서는 다음 구성을 사용하는 것이 좋습니다.
-
Kafka의 경우
를 구성합니다.type: persistent-claim볼륨으로 하나 이상의 유형으로 jbod -
ZooKeeper의 경우
type: persistent-claim을 구성합니다.
영구 스토리지에는 다음과 같은 구성 옵션도 있습니다.
ID(선택 사항)-
스토리지 식별 번호입니다. 이 옵션은 JBOD 스토리지 선언에 정의된 스토리지 볼륨에 필요합니다. 기본값은
0입니다. 크기(필수)- 영구 볼륨 클레임의 크기(예: "1000Gi").
클래스(선택 사항)-
동적 볼륨 프로비저닝에 사용할 OpenShift StorageClass 입니다. 스토리지
클래스구성에는 볼륨 프로필을 자세히 설명하는 매개변수가 포함되어 있습니다. 선택기(선택 사항)- 특정 PV를 지정하는 구성입니다. 선택한 볼륨의 레이블을 나타내는 key:value 쌍을 제공합니다.
DeleteClaim(선택 사항)-
클러스터가 제거될 때 PVC가 삭제되었는지 여부를 지정하는 부울 값입니다. 기본값은
false입니다.
기존 AMQ Streams 클러스터에서 영구 볼륨의 크기를 늘리는 것은 영구 볼륨 크기 조정을 지원하는 OpenShift 버전에서만 지원됩니다. 크기를 조정할 영구 볼륨에서는 볼륨 확장을 지원하는 스토리지 클래스를 사용해야 합니다. 볼륨 확장을 지원하지 않는 다른 OpenShift 및 스토리지 클래스 버전의 경우 클러스터를 배포하기 전에 필요한 스토리지 크기를 결정해야 합니다. 기존 영구 볼륨의 크기를 줄이는 것은 불가능합니다.
Kafka 및 ZooKeeper의 영구 스토리지 구성 예
# ...
spec:
kafka:
# ...
storage:
type: jbod
volumes:
- id: 0
type: persistent-claim
size: 100Gi
deleteClaim: false
- id: 1
type: persistent-claim
size: 100Gi
deleteClaim: false
- id: 2
type: persistent-claim
size: 100Gi
deleteClaim: false
# ...
zookeeper:
storage:
type: persistent-claim
size: 1000Gi
# ...
스토리지 클래스를 지정하지 않으면 기본값이 사용됩니다. 다음 예제에서는 스토리지 클래스를 지정합니다.
특정 스토리지 클래스를 사용한 영구 스토리지 구성 예
# ...
storage:
type: persistent-claim
size: 1Gi
class: my-storage-class
# ...
선택기 를 사용하여 SSD와 같은 특정 기능을 제공하는 레이블이 지정된 영구 볼륨을 지정합니다.
선택기가 있는 영구 스토리지 구성의 예
# ...
storage:
type: persistent-claim
size: 1Gi
selector:
hdd-type: ssd
deleteClaim: true
# ...
2.2.3.3.1. 스토리지 클래스 덮어쓰기 링크 복사링크가 클립보드에 복사되었습니다!
기본 스토리지 클래스를 사용하는 대신 하나 이상의 Kafka 브로커 또는 ZooKeeper 노드에 대해 다른 스토리지 클래스를 지정할 수 있습니다. 예를 들어 스토리지 클래스가 다른 가용 영역 또는 데이터 센터로 제한되는 경우 유용합니다. 이를 위해 overrides 필드를 사용할 수 있습니다.
이 예제에서 기본 스토리지 클래스의 이름은 my-storage-class 입니다.
스토리지 클래스 덮어쓰기를 사용하는 AMQ Streams 클러스터의 예
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
labels:
app: my-cluster
name: my-cluster
namespace: myproject
spec:
# ...
kafka:
replicas: 3
storage:
type: jbod
volumes:
- id: 0
type: persistent-claim
size: 100Gi
deleteClaim: false
class: my-storage-class
overrides:
- broker: 0
class: my-storage-class-zone-1a
- broker: 1
class: my-storage-class-zone-1b
- broker: 2
class: my-storage-class-zone-1c
# ...
# ...
zookeeper:
replicas: 3
storage:
deleteClaim: true
size: 100Gi
type: persistent-claim
class: my-storage-class
overrides:
- broker: 0
class: my-storage-class-zone-1a
- broker: 1
class: my-storage-class-zone-1b
- broker: 2
class: my-storage-class-zone-1c
# ...
구성된 덮어쓰기 속성을 통해 볼륨은 다음 스토리지 클래스를 사용합니다.
-
ZooKeeper 노드의 영구 볼륨 0은
my-storage-class-zone-1a를 사용합니다. -
ZooKeeper 노드 1의 영구 볼륨은
my-storage-class-zone-1b를 사용합니다. -
ZooKeeepr 노드 2의 영구 볼륨에서는
my-storage-class-zone-1c를 사용합니다. -
Kafka 브로커의 영구 볼륨 0은
my-storage-class-zone-1a를 사용합니다. -
Kafka 브로커 1의 영구 볼륨에서는
my-storage-class-zone-1b를 사용합니다. -
Kafka 브로커 2의 영구 볼륨에서는
my-storage-class-zone-1c를 사용합니다.
overrides 속성은 현재 스토리지 클래스 구성을 재정의하는 데만 사용됩니다. 다른 스토리지 구성 속성에 대한 덮어쓰기는 현재 지원되지 않습니다. 다른 스토리지 구성 속성은 현재 지원되지 않습니다.
2.2.3.3.2. 영구 스토리지를 위한 PVC 리소스 링크 복사링크가 클립보드에 복사되었습니다!
영구 스토리지를 사용하면 다음 이름으로 PVC를 생성합니다.
data-cluster-name-kafka-idx-
Kafka 브로커 Pod
idx에 대한 데이터를 저장하는 데 사용되는 볼륨의 PVC입니다. data-cluster-name-zookeeper-idx-
ZooKeeper 노드 Pod
idx에 대한 데이터를 저장하는 데 사용되는 볼륨의 PVC입니다.
2.2.3.3.3. Kafka 로그 디렉터리의 마운트 경로 링크 복사링크가 클립보드에 복사되었습니다!
영구 볼륨은 Kafka 브로커가 다음 경로에 마운트된 로그 디렉터리로 사용합니다.
/var/lib/kafka/data/kafka-logIDX
여기서 IDX 는 Kafka 브로커 Pod 인덱스입니다. 예: /var/lib/kafka/data/kafka-log0.
2.2.3.4. 영구 볼륨 크기 조정 링크 복사링크가 클립보드에 복사되었습니다!
기존 AMQ Streams 클러스터에서 사용하는 영구 볼륨의 크기를 늘려 증가하는 스토리지 용량을 프로비저닝할 수 있습니다. JBOD 스토리지 구성에서 단일 영구 볼륨 또는 여러 영구 볼륨을 사용하는 클러스터에서 영구 볼륨 크기 조정이 지원됩니다.
영구 볼륨의 크기를 늘리지만 줄일 수는 없습니다. 영구 볼륨의 크기를 줄이는 것은 현재 OpenShift에서 지원되지 않습니다.
사전 요구 사항
- 볼륨 크기 조정을 지원하는 OpenShift 클러스터입니다.
- Cluster Operator가 실행 중입니다.
- 볼륨 확장을 지원하는 스토리지 클래스를 사용하여 생성된 영구 볼륨을 사용하는 Kafka 클러스터입니다.
절차
클러스터의
Kafka리소스를 편집합니다.Kafka 클러스터, ZooKeeper 클러스터 또는 둘 다에 할당된 영구 볼륨의 크기를 늘리도록
size속성을 변경합니다.-
Kafka 클러스터의 경우
spec.kafka.storage에서크기속성을 업데이트합니다. -
ZooKeeper 클러스터의 경우
spec.zookeeper.storage아래의크기속성을 업데이트합니다.
볼륨 크기를
2000Gi로 늘리기 위한 Kafka 구성apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... storage: type: persistent-claim size: 2000Gi class: my-storage-class # ... zookeeper: # ...-
Kafka 클러스터의 경우
리소스를 생성하거나 업데이트합니다.
oc apply -f <kafka_configuration_file>OpenShift는 Cluster Operator의 요청에 대한 응답으로 선택한 영구 볼륨의 용량을 늘립니다. 크기 조정이 완료되면 Cluster Operator는 크기가 조정된 영구 볼륨을 사용하는 모든 Pod를 다시 시작합니다. 이 작업은 자동으로 수행됩니다.
클러스터의 관련 Pod에 대해 스토리지 용량이 증가했는지 확인합니다.
oc get pv스토리지 증가가 있는 Kafka 브로커 Pod
NAME CAPACITY CLAIM pvc-0ca459ce-... 2000Gi my-project/data-my-cluster-kafka-2 pvc-6e1810be-... 2000Gi my-project/data-my-cluster-kafka-0 pvc-82dc78c9-... 2000Gi my-project/data-my-cluster-kafka-1출력에는 브로커 Pod와 연결된 각 PVC의 이름이 표시됩니다.
2.2.3.5. JBOD 스토리지 링크 복사링크가 클립보드에 복사되었습니다!
여러 디스크 또는 볼륨의 데이터 스토리지 구성인 JBOD를 사용하도록 AMQ Streams를 구성할 수 있습니다. JBOD는 Kafka 브로커를 위해 증가하는 데이터 스토리지를 제공하는 한 가지 방법입니다. 성능이 향상될 수도 있습니다.
JBOD 스토리지는 ZooKeeper가 아닌 Kafka에 대해서만 지원됩니다.
JBOD 구성은 하나 이상의 볼륨으로 설명되며 각 볼륨은 임시 또는 영구 볼륨이 될 수 있습니다. JBOD 볼륨 선언에 대한 규칙 및 제약 조건은 임시 및 영구 스토리지와 동일합니다. 예를 들어, 영구 스토리지 볼륨 크기를 프로비저닝한 후에는 줄일 수 없으며 유형이 임시 인 경우 sizeLimit 값을 변경할 수 없습니다.
JBOD 스토리지를 사용하려면 Kafka 리소스의 스토리지 유형 구성을 jbod 로 설정합니다. volumes 속성을 사용하면 JBOD 스토리지 어레이 또는 구성을 구성하는 디스크를 설명할 수 있습니다.
JBOD 스토리지 구성 예
# ...
storage:
type: jbod
volumes:
- id: 0
type: persistent-claim
size: 100Gi
deleteClaim: false
- id: 1
type: persistent-claim
size: 100Gi
deleteClaim: false
# ...
JBOD 볼륨이 생성되면 ID를 변경할 수 없습니다. JBOD 구성에서 볼륨을 추가하거나 제거할 수 있습니다.
2.2.3.5.1. JBOD 스토리지용 PVC 리소스 링크 복사링크가 클립보드에 복사되었습니다!
영구 스토리지를 사용하여 JBOD 볼륨을 선언하면 다음 이름으로 PVC를 생성합니다.
data-id-cluster-name-kafka-idx-
Kafka 브로커 Pod
idx에 대한 데이터를 저장하는 데 사용되는 볼륨의 PVC입니다.id는 Kafka 브로커 Pod에 대한 데이터를 저장하는 데 사용되는 볼륨의 ID입니다.
2.2.3.5.2. Kafka 로그 디렉터리의 마운트 경로 링크 복사링크가 클립보드에 복사되었습니다!
JBOD 볼륨은 Kafka 브로커가 다음 경로에 마운트된 로그 디렉터리로 사용합니다.
/var/lib/kafka/data-id/kafka-logidx
여기서 id 는 Kafka 브로커 Pod idx 에 대한 데이터를 저장하는 데 사용되는 볼륨의 ID입니다. 예: /var/lib/kafka/data-0/kafka-log0.
2.2.3.6. JBOD 스토리지에 볼륨 추가 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 JBOD 스토리지를 사용하도록 구성된 Kafka 클러스터에 볼륨을 추가하는 방법을 설명합니다. 다른 스토리지 유형을 사용하도록 구성된 Kafka 클러스터에 적용할 수 없습니다.
과거 및 제거된 ID 아래에 새 볼륨을 추가할 때 이전에 사용한 PersistentVolumeClaims 가 삭제되었는지 확인해야 합니다.
사전 요구 사항
- OpenShift 클러스터
- 실행 중인 Cluster Operator
- JBOD 스토리지가 있는 Kafka 클러스터
절차
Kafka리소스에서spec.kafka.storage.volumes속성을 편집합니다. volumes 배열에 새볼륨을추가합니다. 예를 들어 ID2가 포함된 새 볼륨을 추가합니다.apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... storage: type: jbod volumes: - id: 0 type: persistent-claim size: 100Gi deleteClaim: false - id: 1 type: persistent-claim size: 100Gi deleteClaim: false - id: 2 type: persistent-claim size: 100Gi deleteClaim: false # ... zookeeper: # ...리소스를 생성하거나 업데이트합니다.
oc apply -f <kafka_configuration_file>새 주제를 만들거나 기존 파티션을 새 디스크에 다시 할당합니다.
작은 정보Cruise Control은 파티션을 다시 할당하는 효과적인 도구입니다. Intra-broker 디스크 균형을 수행하려면
KafkaRebalance.spec에서rebalanceDisk를true로 설정합니다.
2.2.3.7. JBOD 스토리지에서 볼륨 제거 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 JBOD 스토리지를 사용하도록 구성된 Kafka 클러스터에서 볼륨을 제거하는 방법을 설명합니다. 다른 스토리지 유형을 사용하도록 구성된 Kafka 클러스터에 적용할 수 없습니다. JBOD 스토리지는 항상 하나 이상의 볼륨을 포함해야 합니다.
데이터 손실을 방지하려면 볼륨을 제거하기 전에 모든 파티션을 이동해야합니다.
사전 요구 사항
- OpenShift 클러스터
- 실행 중인 Cluster Operator
- 두 개 이상의 볼륨이 있는 JBOD 스토리지가 있는 Kafka 클러스터
절차
제거할 디스크에서 모든 파티션을 다시 할당합니다. 제거하려는 디스크에 계속 할당된 파티션의 데이터는 손실될 수 있습니다.
작은 정보kafka-reassign-partitions.sh도구를 사용하여 파티션을 다시 할당할 수 있습니다.Kafka리소스에서spec.kafka.storage.volumes속성을 편집합니다. volumes 배열에서 하나 이상의볼륨을제거합니다. 예를 들어 ID1과2가 있는 볼륨을 제거합니다.apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... storage: type: jbod volumes: - id: 0 type: persistent-claim size: 100Gi deleteClaim: false # ... zookeeper: # ...리소스를 생성하거나 업데이트합니다.
oc apply -f <kafka_configuration_file>
2.2.4. 터미널에서 ZooKeeper에 연결 링크 복사링크가 클립보드에 복사되었습니다!
대부분의 Kafka CLI 툴은 Kafka에 직접 연결할 수 있으므로 일반적인 상황에서는 ZooKeeper에 연결할 필요가 없습니다. zookeeper 서비스는 암호화 및 인증으로 보호되며 AMQ Streams에 포함되지 않은 외부 애플리케이션에서 사용할 수 없습니다.
그러나 ZooKeeper에 연결해야하는 Kafka CLI 도구를 사용하려면 ZooKeeper 컨테이너 내에서 터미널을 사용하고 ZooKeeper 주소로 localhost:12181 에 연결할 수 있습니다.
사전 요구 사항
- OpenShift 클러스터를 사용할 수 있습니다.
- Kafka 클러스터가 실행 중입니다.
- Cluster Operator가 실행 중입니다.
절차
OpenShift 콘솔을 사용하여 터미널을 열거나 CLI에서
exec명령을 실행합니다.예를 들면 다음과 같습니다.
oc exec -ti my-cluster-zookeeper-0 -- bin/kafka-topics.sh --list --zookeeper localhost:12181localhost:12181을 사용해야 합니다.이제 ZooKeeper에 Kafka 명령을 실행할 수 있습니다.
2.2.5. 수동으로 Kafka 노드 삭제 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 OpenShift 주석을 사용하여 기존 Kafka 노드를 삭제하는 방법을 설명합니다. Kafka 노드를 삭제하면 Kafka 브로커가 실행 중인 Pod 와 관련 PersistentVolumeClaim (클러스터가 영구 스토리지와 함께 배포된 경우)을 모두 삭제해야 합니다. 삭제 후 Pod 및 관련 PersistentVolumeClaim 이 자동으로 다시 생성됩니다.
PersistentVolumeClaim 을 삭제하면 데이터가 영구적으로 손실될 수 있으며 클러스터의 가용성을 보장할 수 없습니다. 다음 절차는 스토리지 문제가 발생한 경우에만 수행해야 합니다.
사전 요구 사항
다음을 실행하는 방법에 대한 자세한 내용은 OpenShift에 AMQ Streams 배포 및 업그레이드 가이드를 참조하십시오.
절차
삭제할
Pod의 이름을 찾습니다.Kafka 브로커 Pod의 이름은 < cluster-name> -kafka- <index >입니다. 여기서 < index >는 0에서 시작하여 총 복제본 수에서 1을 뺀 값입니다. 예:
my-cluster-kafka-0.OpenShift에서
포드리소스에 주석을 답니다.oc annotate:oc annotate pod cluster-name-kafka-index strimzi.io/delete-pod-and-pvc=true- 다음 조정이 있을 때까지 기다린 후 기본 영구 볼륨 클레임을 사용하여 주석이 달린 Pod가 삭제되고 다시 생성됩니다.
2.2.6. ZooKeeper 노드 수동 삭제 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 OpenShift 주석을 사용하여 기존 ZooKeeper 노드를 삭제하는 방법을 설명합니다. ZooKeeper 노드를 삭제하는 것은 ZooKeeper가 실행 중인 Pod 와 관련 PersistentVolumeClaim (영구 스토리지와 함께 배포된 경우)을 모두 삭제하는 것으로 구성됩니다. 삭제 후 Pod 및 관련 PersistentVolumeClaim 이 자동으로 다시 생성됩니다.
PersistentVolumeClaim 을 삭제하면 데이터가 영구적으로 손실될 수 있으며 클러스터의 가용성을 보장할 수 없습니다. 다음 절차는 스토리지 문제가 발생한 경우에만 수행해야 합니다.
사전 요구 사항
다음을 실행하는 방법에 대한 자세한 내용은 OpenShift에 AMQ Streams 배포 및 업그레이드 가이드를 참조하십시오.
절차
삭제할
Pod의 이름을 찾습니다.zookeeper Pod의 이름은 < cluster-name> -zookeeper- <index >입니다. 여기서 < index >는 0에서 시작하여 총 복제본 수에서 1을 뺀 값입니다. 예:
my-cluster-zookeeper-0.OpenShift에서
포드리소스에 주석을 답니다.oc annotate:oc annotate pod cluster-name-zookeeper-index strimzi.io/delete-pod-and-pvc=true- 다음 조정이 있을 때까지 기다린 후 기본 영구 볼륨 클레임을 사용하여 주석이 달린 Pod가 삭제되고 다시 생성됩니다.
2.2.7. Kafka 클러스터 리소스 목록 링크 복사링크가 클립보드에 복사되었습니다!
다음 리소스는 OpenShift 클러스터의 Cluster Operator에 의해 생성됩니다.
공유 리소스
cluster-name-cluster-ca- 클러스터 통신을 암호화하는 데 사용되는 Cluster CA 개인 키가 있는 시크릿입니다.
cluster-name-cluster-ca-cert- 클러스터 CA 공용 키가 있는 시크릿입니다. 이 키를 사용하여 Kafka 브로커의 ID를 확인할 수 있습니다.
cluster-name-clients-ca- 사용자 인증서에 서명하는 데 사용되는 클라이언트 CA 개인 키가 있는 시크릿
cluster-name-clients-ca-cert- 클라이언트 CA 공개 키가 있는 시크릿입니다. 이 키를 사용하여 Kafka 사용자의 ID를 확인할 수 있습니다.
cluster-name-cluster-operator-certs- Kafka 및 ZooKeeper와의 통신을 위한 클러스터 운영자 키가 있는 시크릿
zookeeper 노드
cluster-name-zookeeper다음 ZooKeeper 리소스에 지정된 이름입니다.
- ZooKeeper 노드 Pod를 관리하기 위한 StrimziPodSet.
- ZooKeeper 노드에서 사용하는 서비스 계정입니다.
- ZooKeeper 노드에 대해 구성된 PodDisruptionBudget입니다.
cluster-name-zookeeper-idx- StrimziPodSet에서 생성한 Pod입니다.
cluster-name-zookeeper-nodes- Headless Service는 ZooKeeper Pod IP 주소를 직접 확인할 수 있어야 했습니다.
cluster-name-zookeeper-client- Kafka 브로커가 클라이언트로 ZooKeeper 노드에 연결하는 데 사용하는 서비스입니다.
cluster-name-zookeeper-config- ZooKeeper 보조 구성이 포함되어 있으며 ZooKeeper 노드 Pod에서 볼륨으로 마운트되는 ConfigMap입니다.
cluster-name-zookeeper-nodes- ZooKeeper 노드 키가 있는 시크릿입니다.
cluster-name-network-policy-zookeeper- ZooKeeper 서비스에 대한 액세스를 관리하는 네트워크 정책입니다.
data-cluster-name-zookeeper-idx-
ZooKeeper 노드 Pod
idx에 대한 데이터를 저장하는 데 사용되는 볼륨에 대한 영구 볼륨 클레임입니다. 이 리소스는 데이터를 저장할 영구 볼륨을 프로비저닝하기 위해 영구 스토리지가 선택된 경우에만 생성됩니다.
Kafka 브로커
cluster-name-kafka다음 Kafka 리소스에 지정된 이름입니다.
- Kafka 브로커 Pod를 관리하기 위한 StrimziPodSet.
- Kafka Pod에서 사용하는 서비스 계정입니다.
- Kafka 브로커에 대해 구성된 PodDisruptionBudget입니다.
cluster-name-kafka-idx다음 Kafka 리소스에 지정된 이름입니다.
- StrimziPodSet에서 생성한 Pod입니다.
- Kafka 브로커 구성이 있는 ConfigMap입니다.
cluster-name-kafka-brokers- 서비스는 Kafka 브로커 Pod IP 주소를 직접 확인하도록 DNS가 필요합니다.
cluster-name-kafka-bootstrap- 서비스는 OpenShift 클러스터 내에서 연결하는 Kafka 클라이언트의 부트스트랩 서버로 사용할 수 있습니다.
cluster-name-kafka-external-bootstrap-
OpenShift 클러스터 외부에서 연결하는 클라이언트를 위한 부트스트랩 서비스입니다. 이 리소스는 외부 리스너가 활성화된 경우에만 생성됩니다. 리스너 이름이
외부이고 포트가9094인 경우 이전 서비스 이름이 이전 버전과의 호환성에 사용됩니다. cluster-name-kafka-pod-id-
OpenShift 클러스터 외부에서 개별 포드로 트래픽을 라우팅하는 데 사용되는 서비스입니다. 이 리소스는 외부 리스너가 활성화된 경우에만 생성됩니다. 리스너 이름이
외부이고 포트가9094인 경우 이전 서비스 이름이 이전 버전과의 호환성에 사용됩니다. cluster-name-kafka-external-bootstrap-
OpenShift 클러스터 외부에서 연결하는 클라이언트용 부트스트랩 경로입니다. 이 리소스는 외부 리스너가 활성화되고 유형
route로 설정된 경우에만 생성됩니다. 리스너 이름이외부이고 포트가9094인 경우 이전 경로 이름이 이전 버전과의 호환성에 사용됩니다. cluster-name-kafka-pod-id-
OpenShift 클러스터 외부에서 개별 포드로의 트래픽 경로입니다. 이 리소스는 외부 리스너가 활성화되고 유형
route로 설정된 경우에만 생성됩니다. 리스너 이름이외부이고 포트가9094인 경우 이전 경로 이름이 이전 버전과의 호환성에 사용됩니다. cluster-name-kafka-listener-name-bootstrap- OpenShift 클러스터 외부에서 연결하는 클라이언트를 위한 부트스트랩 서비스입니다. 이 리소스는 외부 리스너가 활성화된 경우에만 생성됩니다. 새 서비스 이름은 다른 모든 외부 리스너에 사용됩니다.
cluster-name-kafka-listener-name-pod-id- OpenShift 클러스터 외부에서 개별 포드로 트래픽을 라우팅하는 데 사용되는 서비스입니다. 이 리소스는 외부 리스너가 활성화된 경우에만 생성됩니다. 새 서비스 이름은 다른 모든 외부 리스너에 사용됩니다.
cluster-name-kafka-listener-name-bootstrap-
OpenShift 클러스터 외부에서 연결하는 클라이언트용 부트스트랩 경로입니다. 이 리소스는 외부 리스너가 활성화되고 유형
route로 설정된 경우에만 생성됩니다. 새 경로 이름은 다른 모든 외부 리스너에 사용됩니다. cluster-name-kafka-listener-name-pod-id-
OpenShift 클러스터 외부에서 개별 포드로의 트래픽 경로입니다. 이 리소스는 외부 리스너가 활성화되고 유형
route로 설정된 경우에만 생성됩니다. 새 경로 이름은 다른 모든 외부 리스너에 사용됩니다. cluster-name-kafka-config-
UseStrimziPodSets기능 게이트가 비활성화될 때 브로커 Pod에 의해 볼륨으로 마운트되는 Kafka 보조 구성이 포함된 ConfigMap cluster-name-kafka-brokers- Kafka 브로커 키가 있는 시크릿입니다.
cluster-name-network-policy-kafka- Kafka 서비스에 대한 액세스를 관리하는 네트워크 정책입니다.
strimzi-namespace-name-cluster-name-kafka-init- Kafka 브로커가 사용하는 클러스터 역할 바인딩입니다.
cluster-name-jmx- Kafka 브로커 포트를 보호하는 데 사용되는 사용자 이름 및 암호가 있는 시크릿입니다. 이 리소스는 Kafka에서 ScanSetting이 활성화된 경우에만 생성됩니다.
data-cluster-name-kafka-idx-
Kafka 브로커 Pod에 대한 데이터를 저장하는 데 사용되는 볼륨에 대한 영구 볼륨 클레임입니다.
이 리소스는 데이터를 저장하기 위해 영구 볼륨을 프로비저닝하기 위해 영구 스토리지가 선택된 경우에만 생성됩니다. data-id-cluster-name-kafka-idx-
Kafka 브로커 Pod
에 대한 데이터를 저장하는 데 사용되는 볼륨 ID에 대한 영구 볼륨 클레임입니다. 이 리소스는 데이터를 저장할 영구 볼륨을 프로비저닝할 때 JBOD 볼륨에 영구 스토리지를 선택한 경우에만 생성됩니다.idx
엔터티 Operator
이러한 리소스는 Cluster Operator를 사용하여 Entity Operator를 배포하는 경우에만 생성됩니다.
cluster-name-entity-operator다음 Entity Operator 리소스에 지정된 이름입니다.
- 주제 및 사용자 Operator를 사용한 배포.
- Entity Operator에서 사용하는 서비스 계정입니다.
- Entity Operator 지표에 대한 액세스를 관리하는 네트워크 정책입니다.
cluster-name-entity-operator-random-string- Entity Operator 배포에서 생성한 Pod입니다.
cluster-name-entity-topic-operator-config- 주제 Operator에 대한 보조 구성이 있는 ConfigMap입니다.
cluster-name-entity-user-operator-config- 사용자 Operator에 대한 보조 구성이 있는 ConfigMap입니다.
cluster-name-entity-topic-operator-certs- Kafka 및 ZooKeeper와의 통신을 위한 Topic Operator 키가 있는 시크릿입니다.
cluster-name-entity-user-operator-certs- Kafka 및 ZooKeeper와의 통신을 위한 User Operator 키가 있는 시크릿
strimzi-cluster-name-entity-topic-operator- Entity Topic Operator에서 사용하는 역할 바인딩입니다.
strimzi-cluster-name-entity-user-operator- Entity User Operator에서 사용하는 역할 바인딩입니다.
Kafka Exporter
이러한 리소스는 Cluster Operator를 사용하여 Kafka 내보내기를 배포하는 경우에만 생성됩니다.
cluster-name-kafka-exporter다음 Kafka Exporter 리소스에 지정된 이름입니다.
- Kafka 내보내기를 통한 배포.
- 소비자 지연 메트릭을 수집하는 데 사용되는 서비스입니다.
- Kafka 내보내기에서 사용하는 서비스 계정입니다.
- Kafka 내보내기 지표에 대한 액세스를 관리하는 네트워크 정책입니다.
cluster-name-kafka-exporter-random-string- Kafka 내보내기 배포에서 생성한 Pod입니다.
크루즈 컨트롤
이러한 리소스는 Cluster Operator를 사용하여 Cruise Control을 배포한 경우에만 생성됩니다.
cluster-name-cruise-control다음 Cruise Control 리소스에 지정된 이름입니다.
- Cruise Control을 사용한 배포.
- Cruise Control과 통신하는 데 사용되는 서비스입니다.
- Cruise Control에서 사용하는 서비스 계정입니다.
cluster-name-cruise-control-random-string- Cruise Control Deployment에서 생성한 Pod
cluster-name-cruise-control-config- Cruise Control ancillary 구성이 포함되어 있으며 Cruise Control Pod에서 볼륨으로 마운트되는 ConfigMap입니다.
cluster-name-cruise-control-certs- Kafka 및 ZooKeeper와의 통신을 위한 Cruise Control 키가 있는 시크릿입니다.
cluster-name-network-policy-cruise-control- Cruise Control Service에 대한 액세스를 관리하는 네트워크 정책입니다.