返回 导航

Docker / K8s

hangge.com

K8s - 使用Strimzi快速搭建Kafka全家桶教程1(安装配置、单节点样例)

作者:hangge | 2021-06-28 08:10
    我之前写过一篇文章介绍如何在 K8s下部署 Kafka 集群(点击查看),但这种手动的方式略显繁琐。本文介绍另一种更简单的方式:使用 Strimzi Operator 来快速部署以一套 Kafka 集群环境。

一、安装配置

1,基本介绍

  • Strimzi 目前是 CNCF 的一个 sandbox 级别项目,它通过 Operator 来维护在 Kubernetes 上运行 Apache Kafka 生态系统,目前主要由 Red Hat 参与开发和维护。
  • 我们可以使用 Strimzi Operator 来快速部署以一套 Kafka 集群环境,包括 Zookeeper 集群,Kafka 集群,负责 UserTopic 管理的 Operator、为 HTTP 客户提供访问的 Kafka Bridge、适配外部事件源的 Kafka Connect、多数据中心消息同步的 Kafka Mirror Maker 等资源。

2,准备工作

(1)首先我们需要有一个 K8s 集群,这里我使用 Minikube 来搭建一个 Kubernetes 单节点集群环境进行测试:
注意:由于默认情况下 minikube 虚拟机只会分配 2G 内存,不够用,这里我们添加 --memory=4096 参数改成 4G 内存。
minikube start --registry-mirror=https://registry.docker-cn.com --kubernetes-version v1.16.1 --vm-driver=none --memory=4096

(2)接着创建一个名为 kafka 的命名空间:
kubectl create namespace kafka

(3)然后执行如下命令安装 strimzi kafka operator
kubectl create -f 'https://strimzi.io/install/latest?namespace=kafka' -n kafka

(4)最后查看 Pod,如果显示如下内容则表示安装成功:
若该 Pod 一直无法启动成功,不断地重启,可以试试刷新 iptables,并重启相关服务。具体操作方式可以参考我之前写的文章:
kubectl get pods -n kafka

二、搭建一个单节点的 Kafka 环境

1,开始搭建

(1)首先创建一个 kafka.yaml 文件,内容如下:
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
version: 2.7.0
replicas: 1
listeners:
- name: plain
port: 9092
type: internal
tls: false
- name: tls
port: 9093
type: internal
tls: true
config:
offsets.topic.replication.factor: 1
transaction.state.log.replication.factor: 1
transaction.state.log.min.isr: 1
log.message.format.version: "2.7"
inter.broker.protocol.version: "2.7"
storage:
type: jbod
volumes:
- id: 0
type: persistent-claim
size: 10Gi
deleteClaim: false
zookeeper:
replicas: 1
storage:
type: persistent-claim
size: 10Gi
deleteClaim: false
entityOperator:
topicOperator: {}
userOperator: {}

(2)然后执行如下命令开始创建:
kubectl apply -f kafka.yaml -n kafka

(3)执行如下命令可以查看是否创建成功:
kubectl get pods -n kafka
kubectl get service -n kafka
 

2,进行测试

(1)首先执行如下命令创建一个生产者,用于往 my-topic 这个主题发送消息:
kubectl -n kafka run kafka-producer -ti --image=quay.io/strimzi/kafka:0.22.1-kafka-2.7.0 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list my-cluster-kafka-bootstrap:9092 --topic my-topic

(2)接着重新再打开一个终端连接服务器,执行如下命令创建一个消费者,用于消费 my-topic 这个主题的消息:
kubectl -n kafka run kafka-consumer -ti --image=quay.io/strimzi/kafka:0.22.1-kafka-2.7.0 --rm=true --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server my-cluster-kafka-bootstrap:9092 --topic my-topic --from-beginning

(3)注意这两个生产者和消费者其实都是分别创建一个单独的 Pod

(4)我们在消息生产客户端发送消息,并观察消费者这边对消息的输出来体验 Kafka 对消息的基础处理。
评论

全部评论(0)

回到顶部