前言

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发送的消息,至此,验证完成。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐