咨询GKE环境下使用Strimzi Operator从零部署Kafka的完整步骤
前置准备工作
- 已正常运行的GKE集群,版本匹配Strimzi Operator要求(推荐1.24及以上),集群节点至少3个,单节点配置不低于2C4G
- 本地已安装配置
kubectl,且已完成GKE集群凭据拉取,可正常访问集群 - 已安装
helm(可选,也可直接用kubectl部署) - 提前规划好Kafka集群的存储类,GKE默认提供
standard(SSD存储类为premium-rwo),Kafka日志存储推荐使用SSD存储类
步骤1:部署Strimzi Operator
- 首先创建Operator专属命名空间:
kubectl create namespace strimzi-operator - 下载对应稳定版本的Strimzi部署压缩包,解压后在安装目录执行部署命令:
kubectl apply -f install/cluster-operator/ -n strimzi-operator - 验证Operator运行状态:
kubectl get pods -n strimzi-operator,直到看到cluster-operator的Pod状态为Running即可
步骤2:部署Kafka集群
- 创建Kafka集群专属命名空间:
kubectl create namespace kafka-cluster - 编写Kafka自定义资源YAML文件(示例配置如下,可按需调整副本数、存储、监听规则等参数):
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-kafka namespace: kafka-cluster spec: kafka: replicas: 3 listeners: - name: plain port: 9092 type: internal tls: false - name: tls port: 9093 type: internal tls: 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 storage: type: persistent-claim size: 100Gi class: premium-rwo # 按需替换为自己的存储类 zookeeper: replicas: 3 storage: type: persistent-claim size: 20Gi class: premium-rwo entityOperator: topicOperator: {} userOperator: {}
- 应用上述YAML文件:
kubectl apply -f kafka.yaml -n kafka-cluster - 等待集群部署完成:
kubectl get kafka my-kafka -n kafka-cluster,直到STATUS字段显示为Ready - 验证Pod运行状态:
kubectl get pods -n kafka-cluster,正常运行时可看到3个Kafka Pod、3个ZooKeeper Pod和1个Entity Operator Pod均处于Running状态
步骤3:基础功能验证
- 创建测试Topic,编写KafkaTopic资源YAML后执行
kubectl apply创建即可,示例配置:
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaTopic metadata: name: test-topic labels: strimzi.io/cluster: my-kafka namespace: kafka-cluster spec: partitions: 6 replicas: 3 config: retention.ms: 604800000 segment.bytes: 1073741824
- 验证Topic创建结果:
kubectl get kafkatopics -n kafka-cluster - 生产消息测试:在集群内启动临时客户端执行生产命令,输入内容即可发送消息
kubectl run -n kafka-cluster -it --rm kafka-producer --image=quay.io/strimzi/kafka:latest-kafka-3.5.1 --command -- /opt/kafka/bin/kafka-console-producer.sh --broker-list my-kafka-kafka-bootstrap:9092 --topic test-topic - 消费消息测试:启动临时消费者,可正常拉取到之前发送的测试消息即为部署正常
kubectl run -n kafka-cluster -it --rm kafka-consumer --image=quay.io/strimzi/kafka:latest-kafka-3.5.1 --command -- /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server my-kafka-kafka-bootstrap:9092 --topic test-topic --from-beginning
步骤4:Confluent Kafka迁移适配(生产环境用)
- 如需对外暴露集群,可按需配置NodePort、LoadBalancer或Ingress类型的listener,更新Kafka资源即可生效
- 原有Confluent Kafka的数据迁移可使用Strimzi原生支持的MirrorMaker2组件,部署KafkaMirrorMaker2自定义资源即可实现跨集群数据同步,全量+增量同步完成后再切流下线旧集群即可
- 原有Confluent Kafka的ACL规则可直接复用,通过Strimzi的User Operator即可实现权限配置,兼容原生Kafka的权限逻辑
- 监控可开启Strimzi自带的metrics配置,对接GKE自带的Prometheus、Grafana服务实现集群指标可视化
内容的提问来源于stack exchange,提问作者Nishchal Dinesh
相关产品推荐
相关产品推荐

