kubesphere部署单机版kafka4.0.0,使用Kraft模式

yaml文件

kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: kafkaserver
  namespace: kafkans
  labels:
    app: kafkaserver
  annotations:
    field.cattle.io/publicEndpoints: >-
      [{"port":30004,"protocol":"TCP","serviceName":"kafkans:kafkaserver","allNodes":true},{"port":30003,"protocol":"TCP","serviceName":"kafkans:kafkaserver","allNodes":true}]
    kubesphere.io/creator: admin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kafkaserver
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: kafkaserver
      annotations:
        logging.kubesphere.io/logsidecar-config: '{}'
    spec:
      volumes:
        - name: volume-ohoeq0
          persistentVolumeClaim:
            claimName: kafka-data
      containers:
        - name: container-gh6mnf
          image: 'xxxx/kafka:4.0.0'
          ports:
            - name: tcp-9092
              containerPort: 9092
              protocol: TCP
          env:
            - name: KAFKA_CLUSTER_ID
              value: VOXKSd60Tu6i-xzyREPV2Q
            - name: KAFKA_KRAFT_ENABLED
              value: 'true'
            - name: KAFKA_CFG_PROCESS_ROLES
              value: 'controller,broker'
            - name: KAFKA_CFG_NODE_ID
              value: '1'
            - name: KAFKA_CFG_CONTROLLER_QUORUM_VOTERS
              value: '[email protected]:9093'
            - name: KAFKA_CFG_LISTENERS
              value: 'PLAINTEXT://:9092,CONTROLLER://:9093'
            - name: KAFKA_CFG_ADVERTISED_LISTENERS
              value: 'PLAINTEXT://外网地址:30684'
            - name: KAFKA_CFG_INTER_BROKER_LISTENER_NAME
              value: PLAINTEXT
            - name: KAFKA_CFG_CONTROLLER_LISTENER_NAMES
              value: CONTROLLER
            - name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP
              value: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT'
            - name: ALLOW_PLAINTEXT_LISTENER
              value: 'yes'
            - name: KAFKA_CFG_LOG_DIRS
              value: /kafka/data
          resources: {}
          volumeMounts:
            - name: volume-ohoeq0
              mountPath: /kafka/data
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
      schedulerName: default-scheduler
  serviceName: kafkaserver-123
  podManagementPolicy: OrderedReady
  updateStrategy:
    type: RollingUpdate
    rollingUpdate:
      partition: 0
  revisionHistoryLimit: 10

 

下列关于Kafka的配置:

  • KAFKA_CFG_INTER_BROKER_LISTENER_NAME Kafka的Broker地址前缀名称,固定为PLAINTEXT即可
  • KAFKA_CFG_CONTROLLER_LISTENER_NAMES Kafka的Controller地址前缀名称,固定为CONTROLLER即可
  • KAFKA_CFG_CLUSTER_ID 集群ID,可以自定义任何字符串作为集群ID,同一个集群中所有节点的集群ID必须配置为一样
  • KAFKA_CFG_NODE_ID 节点ID,用于标识每个集群中的节点,需要是不小于1的整数,同一个集群中的节点ID不可重复
  • KAFKA_CFG_PROCESS_ROLES 节点类型,broker,controller表示该节点是混合节点,通常单机部署时需要配置为混合节点
  • KAFKA_CFG_CONTROLLER_QUORUM_VOTERS 投票节点列表,通常配置为集群中所有的Controller节点,格式为节点id@节点外网地址:节点Controller端口,多个节点使用逗号,隔开,由于是混合节点,因此配置自己就行了
  • KAFKA_CFG_LISTENERS 表示Kafka要监听哪些端口,PLAINTEXT://:9092,CONTROLLER://:9093表示本节点作为混合节点,监听本机所有可用网卡90929093端口,其中9092作为客户端通信端口9093作为控制器端口
  • KAFKA_CFG_ADVERTISED_LISTENERS 配置Kafka的外网地址,需要是PLAINTEXT://外网地址:端口的形式,当客户端连接Kafka服务端时,Kafka会将这个外网地址广播给客户端,然后客户端再通过这个外网地址连接,除此之外集群之间交换数据时也是通过这个配置项得到集群中每个节点的地址的,这样集群中节点才能进行交互


参考链接:https://juejin.cn/post/7380421216019365897
 

你可能感兴趣的:(kafka,分布式)