在K8S上使用operator部署kafka集群
Kafka 的 Kubernetes (K8S) Operator 是一种用于在 Kubernetes 上简化 Kafka 集群管理的工具。目前有几个常见的 Kafka K8S Operator 可供选择,包括:1)Strimzi Operator:Strimzi 是一个由 Red Hat 维护的开源项目,专注于在 Kubernetes 上运行 Apache Kafka。它提供了创建、管理和运维
前言
Kafka 的 Kubernetes (K8S) Operator 是一种用于在 Kubernetes 上简化 Kafka 集群管理的工具。目前有几个常见的 Kafka K8S Operator 可供选择,包括:
1)Strimzi Operator:Strimzi 是一个由 Red Hat 维护的开源项目,专注于在 Kubernetes 上运行 Apache Kafka。它提供了创建、管理和运维 Kafka 集群所需的自定义资源定义 (CRDs)、操作符和容器镜像等组件。
2)Confluent Operator:Confluen这些 Kafka K8S Operator 提供了类似的功能,可以帮助您在 Kubernetes 上轻松创建、扩展和管理 Kafka 集群。t Operator 是由 Confluent 公司提供的一个商业产品,用于在 Kubernetes 上运行 Confluent Platform。它支持部署和管理完整的 Confluent Kafka 栈,包括 Kafka、Schema Registry、Kafka Connect 和 KSQL 等组件。
这些 Kafka K8S Operator 提供了类似的功能,可以帮助我们在 Kubernetes 上轻松创建、扩展和管理 Kafka 集群,本次部署将使用Strimzi Operator。
前提条件
需要K8S集群环境及docker环境,本次部署以三个节点的K8S集群为例。
部署Operator
部署过程第一步是部署operator,而由于operator是作为一个pod存在,就需要yaml文件,github上可以下载不同版本Strimzi Operator所需的yaml文件。
网址:https://github.com/strimzi/strimzi-kafka-operator
注意:官方文档中描述说Strimzi Operator与kafka版本具有严格的对应关系,每个Strimzi Operator版本可能只对应2-3个kafka版本,例如:Strimzi Operator 0.27.0只能够支持2.8.0、2.8.1、3.0.0版本的kafka,如yaml文件中所写:
本次部署使用Strimzi Operator 0.27.0,其余版本的Strimzi Operator均部署失败,报错原因有glibz.so文件缺失、与8080端口连接失败等问题,尝试过以下版本,只有0.27.0能成功部署
部署时所用的yaml文件名为strimzi-cluster-operator-0.27.0.yaml,该网址可直接下载:
Release 0.27.0 · strimzi/strimzi-kafka-operator · GitHub
下载完成后直接执行命令完成operator部署:
kubectl apply -f strimzi-cluster-operator-0.27.0.yaml -nkafka
然后查看pod验证:
kubectl get pods -nkafka
如上则为部署成功。
测试验证
编写如下kafka-cluster.yaml文件,部署zookeeper集群与kafka集群:
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-kafka-cluster spec: kafka: replicas: 3 image: quay.io/strimzi/kafka:0.27.0-kafka-3.0.0 listeners: - name: plain port: 9092 type: internal tls: false - name: tls port: 9093 type: internal tls: false storage: type: ephemeral size: 1Gi zookeeper: image: quay.io/strimzi/kafka:0.27.0-kafka-3.0.0 replicas: 3 storage: type: ephemeral size: 500Mi entityOperator: topicOperator: {} userOperator: {}
注意:在kafka-cluster.yaml中的tls属性如果为true,可能会影响后面在命令行中的消息收发,为false则不影响。
输入命令直接执行:
kubectl apply -f kafka-cluster.yaml -nkafka
该yaml文件会先在kafka的namespace下创建三个zookeeper的pod,等待三个pod均正常启动后再创建三个kafka的pod,其中kafka第二个节点会重启一次,第三个节点会重启两次,猜测跟集群搭建过程有关。
(这个my-kafka-cluster-entity-operator-7b8cd4484f-wjl6d不知道是什么东西,貌似跟topicOperator和userOperator有关)
官方测试集群是否搭建成功的方法是使用topicOperator与userOperator测试验证,我这一直不行,后来进入第一个节点使用kafka命令行往自身pod的ip上发送消息,在另外两个节点往自身pod的ip上接收,均能接收到第一个pod发送的消息,至此,验证完成。
更多推荐
所有评论(0)