
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: '1@127.0.0.1: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表示本节点作为混合节点,监听本机所有可用网卡的9092和9093端口,其中9092作为客户端通信端口,9093作为控制器端口KAFKA_CFG_ADVERTISED_LISTENERS 配置Kafka的外网地址,需要是PLAINTEXT://外网地址:端口的形式,当客户端连接Kafka服务端时,Kafka会将这个外网地址广播给客户端,然后客户端再通过这个外网地址连接,除此之外集群之间交换数据时也是通过这个配置项得到集群中每个节点的地址的,这样集群中节点才能进行交互参考链接:https://juejin.cn/post/7380421216019365897