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.version3.0 이상으로 설정되면 log.message.format.version 옵션이 무시되고 설정할 필요가 없습니다.

Kafka 버전을 업그레이드할 때 inter.broker.protocol.version 에 대한 업데이트가 필요합니다. 자세한 내용은 Kafka 업그레이드 에서 참조하십시오.

사전 요구 사항

  • OpenShift 클러스터
  • 실행 중인 Cluster Operator

배포 방법에 대한 자세한 내용은 OpenShift에 AMQ Streams 배포 및 업그레이드 가이드를 참조하십시오.

절차

  1. Kafka 리소스의 spec 속성을 편집합니다.

    구성할 수 있는 속성은 다음 예제 구성에 표시되어 있습니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        replicas: 3 
    1
    
        version: 3.4.0 
    2
    
        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:latest 
    7
    
        listeners: 
    8
    
          - name: plain 
    9
    
            port: 9092 
    10
    
            type: internal 
    11
    
            tls: false 
    12
    
            configuration:
              useServiceDnsDomain: true 
    13
    
          - name: tls
            port: 9093
            type: internal
            tls: true
            authentication: 
    14
    
              type: tls
          - name: external 
    15
    
            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-claim 
    20
    
          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: 3 
    25
    
        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 키에 배치해야 합니다. Kafka kafka.root.logger.level 로거의 경우 로그 수준을 INFO, ERROR, WARN, TRACE, DEBUG, FATAL 또는 OFF로 설정할 수 있습니다.
    4
    지원되는 리소스 예약, 현재 cpumemory 및 사용할 수 있는 최대 리소스를 지정하는 제한입니다.
    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
    15
    16
    외부 CA(인증 기관)에서 관리하는 Kafka 리스너 인증서에 대한 선택적 구성입니다. brokerCertECDHEAndKey 는 서버 인증서와 개인 키가 포함된 보안을 지정합니다. 활성화된 TLS 암호화를 사용하여 모든 리스너에서 Kafka 리스너 인증서를 구성할 수 있습니다.
    17
    권한 부여 를 사용하면 Kafka 브로커에서 간단한 OAUTH 2.0 또는 OPA 인증을 사용할 수 있습니다. 간단한 인증에서는 AclAuthorizer Kafka 플러그인을 사용합니다.
    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
    27
    28
    엔티티 Operator TLS 사이드카 구성. entity Operator는 TLS 사이드카를 사용하여 ZooKeeper와의 보안 통신을 지원합니다.
    29
    지정된 Topic Operator 로거 및 로그 수준. 이 예에서는 인라인 로깅을 사용합니다.
    30
    31
    Kafka 내보내기 구성. Kafka 내보내기 는 Kafka 브로커, 특히 소비자 지연 데이터에서 메트릭 데이터를 추출하는 선택적 구성 요소입니다. Kafka 내보내기가 제대로 작동하려면 소비자 그룹을 사용 중이어야 합니다.
    32
    Kafka 클러스터를 재조정하는 데 사용되는 Cruise Control에 대한 선택적 구성입니다.
  2. 리소스를 생성하거나 업데이트합니다.

    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 속성에 대한 기본 구성은 다음과 같습니다.

Expand
표 2.1. AMQ Streams의 기본 ZooKeeper 속성
속성기본값설명

tickTime

2000

세션 시간 초과 길이를 결정하는 단일 눈금(밀리초)의 길이입니다.

initLimit

5

후속자가 ZooKeeper 클러스터의 리더 뒤에 떨어질 수 있는 최대 눈금 수입니다.

syncLimit

2

후속자가 ZooKeeper 클러스터의 리더와 동기화되지 않을 수 있는 최대 눈금 수입니다.

autopurge.purgeInterval

1

자동 제거 기능을 활성화하고 서버 측 ZooKeeper 트랜잭션 로그를 제거하기 위한 시간 간격을 설정합니다.

admin.enableServer

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.specentityOperator 속성을 사용하여 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: {}

topicOperatoruserOperator 에 빈 오브젝트({})를 사용하는 경우 모든 속성은 기본값을 사용합니다.

topicOperatoruserOperator 속성이 모두 누락되면 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와 같은 파일 스토리지는 테스트되지 않았으며 작동할 것이라는 보장이 없습니다.

블록 스토리지에 대해 다음 옵션 중 하나를 선택합니다.

참고

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 클러스터입니다.

절차

  1. 클러스터의 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:
        # ...

  2. 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_configuration_file>

    OpenShift는 Cluster Operator의 요청에 대한 응답으로 선택한 영구 볼륨의 용량을 늘립니다. 크기 조정이 완료되면 Cluster Operator는 크기가 조정된 영구 볼륨을 사용하는 모든 Pod를 다시 시작합니다. 이 작업은 자동으로 수행됩니다.

  3. 클러스터의 관련 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 클러스터

절차

  1. Kafka 리소스에서 spec.kafka.storage.volumes 속성을 편집합니다. volumes 배열에 새 볼륨을 추가합니다. 예를 들어 ID 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
          - id: 1
            type: persistent-claim
            size: 100Gi
            deleteClaim: false
          - id: 2
            type: persistent-claim
            size: 100Gi
            deleteClaim: false
        # ...
      zookeeper:
        # ...
  2. 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_configuration_file>
  3. 새 주제를 만들거나 기존 파티션을 새 디스크에 다시 할당합니다.

    작은 정보

    Cruise Control은 파티션을 다시 할당하는 효과적인 도구입니다. Intra-broker 디스크 균형을 수행하려면 KafkaRebalance.spec 에서 rebalanceDisktrue 로 설정합니다.

2.2.3.7. JBOD 스토리지에서 볼륨 제거

다음 절차에서는 JBOD 스토리지를 사용하도록 구성된 Kafka 클러스터에서 볼륨을 제거하는 방법을 설명합니다. 다른 스토리지 유형을 사용하도록 구성된 Kafka 클러스터에 적용할 수 없습니다. JBOD 스토리지는 항상 하나 이상의 볼륨을 포함해야 합니다.

중요

데이터 손실을 방지하려면 볼륨을 제거하기 전에 모든 파티션을 이동해야합니다.

사전 요구 사항

  • OpenShift 클러스터
  • 실행 중인 Cluster Operator
  • 두 개 이상의 볼륨이 있는 JBOD 스토리지가 있는 Kafka 클러스터

절차

  1. 제거할 디스크에서 모든 파티션을 다시 할당합니다. 제거하려는 디스크에 계속 할당된 파티션의 데이터는 손실될 수 있습니다.

    작은 정보

    kafka-reassign-partitions.sh 도구를 사용하여 파티션을 다시 할당할 수 있습니다.

  2. Kafka 리소스에서 spec.kafka.storage.volumes 속성을 편집합니다. volumes 배열에서 하나 이상의 볼륨을 제거합니다. 예를 들어 ID 12 가 있는 볼륨을 제거합니다.

    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:
        # ...
  3. 리소스를 생성하거나 업데이트합니다.

    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가 실행 중입니다.

절차

  1. OpenShift 콘솔을 사용하여 터미널을 열거나 CLI에서 exec 명령을 실행합니다.

    예를 들면 다음과 같습니다.

    oc exec -ti my-cluster-zookeeper-0 -- bin/kafka-topics.sh --list --zookeeper localhost:12181

    localhost:12181 을 사용해야 합니다.

    이제 ZooKeeper에 Kafka 명령을 실행할 수 있습니다.

2.2.5. 수동으로 Kafka 노드 삭제

다음 절차에서는 OpenShift 주석을 사용하여 기존 Kafka 노드를 삭제하는 방법을 설명합니다. Kafka 노드를 삭제하면 Kafka 브로커가 실행 중인 Pod 와 관련 PersistentVolumeClaim (클러스터가 영구 스토리지와 함께 배포된 경우)을 모두 삭제해야 합니다. 삭제 후 Pod 및 관련 PersistentVolumeClaim 이 자동으로 다시 생성됩니다.

주의

PersistentVolumeClaim 을 삭제하면 데이터가 영구적으로 손실될 수 있으며 클러스터의 가용성을 보장할 수 없습니다. 다음 절차는 스토리지 문제가 발생한 경우에만 수행해야 합니다.

사전 요구 사항

다음을 실행하는 방법에 대한 자세한 내용은 OpenShift에 AMQ Streams 배포 및 업그레이드 가이드를 참조하십시오.

절차

  1. 삭제할 Pod 의 이름을 찾습니다.

    Kafka 브로커 Pod의 이름은 < cluster-name> -kafka- <index >입니다. 여기서 < index >는 0에서 시작하여 총 복제본 수에서 1을 뺀 값입니다. 예: my-cluster-kafka-0.

  2. OpenShift에서 포드 리소스에 주석을 답니다.

    oc annotate:

    oc annotate pod cluster-name-kafka-index strimzi.io/delete-pod-and-pvc=true
  3. 다음 조정이 있을 때까지 기다린 후 기본 영구 볼륨 클레임을 사용하여 주석이 달린 Pod가 삭제되고 다시 생성됩니다.

2.2.6. ZooKeeper 노드 수동 삭제

다음 절차에서는 OpenShift 주석을 사용하여 기존 ZooKeeper 노드를 삭제하는 방법을 설명합니다. ZooKeeper 노드를 삭제하는 것은 ZooKeeper가 실행 중인 Pod 와 관련 PersistentVolumeClaim (영구 스토리지와 함께 배포된 경우)을 모두 삭제하는 것으로 구성됩니다. 삭제 후 Pod 및 관련 PersistentVolumeClaim 이 자동으로 다시 생성됩니다.

주의

PersistentVolumeClaim 을 삭제하면 데이터가 영구적으로 손실될 수 있으며 클러스터의 가용성을 보장할 수 없습니다. 다음 절차는 스토리지 문제가 발생한 경우에만 수행해야 합니다.

사전 요구 사항

다음을 실행하는 방법에 대한 자세한 내용은 OpenShift에 AMQ Streams 배포 및 업그레이드 가이드를 참조하십시오.

절차

  1. 삭제할 Pod 의 이름을 찾습니다.

    zookeeper Pod의 이름은 < cluster-name> -zookeeper- <index >입니다. 여기서 < index >는 0에서 시작하여 총 복제본 수에서 1을 뺀 값입니다. 예: my-cluster-zookeeper-0.

  2. OpenShift에서 포드 리소스에 주석을 답니다.

    oc annotate:

    oc annotate pod cluster-name-zookeeper-index strimzi.io/delete-pod-and-pvc=true
  3. 다음 조정이 있을 때까지 기다린 후 기본 영구 볼륨 클레임을 사용하여 주석이 달린 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 x 에 대한 데이터를 저장하는 데 사용되는 볼륨 ID에 대한 영구 볼륨 클레임입니다. 이 리소스는 데이터를 저장할 영구 볼륨을 프로비저닝할 때 JBOD 볼륨에 영구 스토리지를 선택한 경우에만 생성됩니다.

엔터티 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에 대한 액세스를 관리하는 네트워크 정책입니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동