基于K8s、Strimzi的Kafka Connect实战
0. 源码地址
https://github.com/wiselyman/kafka-in-battle
1. Operator Framework
Operator Framework是一个用来管理k8s原生应用(Operator)的开源工具。
Operator Framework支持的Operator分享地址:https://operatorhub.io。
如安装Kafka使用Strimzi Apache Kafka Operator,地址为:https://operatorhub.io/operator/strimzi-kafka-operator 。
打开Strimzi Apache Kafka Operator页面,右侧有install按钮,按照页面提示进行Operator安装。
2. 安装Operator Lifecycle Manager
Operator Lifecycle Manager是Operator Framework的一部分,OLM扩展了k8s提供声明式方法安装、管理、更新Operator以及他们的依赖。
点击页面上的install显示如何安装Strimzi Apache Kafka Operator,我们首先第一步要安装Operator Lifecycle Manager(不要执行下句命令):
curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/0.12.0/install.sh | bash -s 0.12.0
该命令需要使用quay.io的镜像,我们需采取从源码安装,并修改源码中的镜像地址加速。
源码地址:https://github.com/operator-framework/operator-lifecycle-manager/releases,当前最新版本为0.12.0
。
-
下载:https://github.com/operator-framework/operator-lifecycle-manager/releases/download/0.12.0/crds.yaml
-
下载:https://github.com/operator-framework/operator-lifecycle-manager/releases/download/0.12.0/olm.yaml
将olm.yml
中:
quay.io -> quay.azk8s.cn
执行安装:
kubectl apply -f crds.yaml
kubectl apply -f olm.yaml
3. 安装Strimzi Apache Kafka Operator
kubectl create -f https://operatorhub.io/install/strimzi-kafka-operator.yaml
使用下面命令观察Operator启动情况
kubectl get csv -n operators
显示如下则安装成功
wangyunfeis-MacBook-Pro:olm wangyunfei$ kubectl get csv -n operators
NAME DISPLAY VERSION REPLACES PHASE
strimzi-cluster-operator.v0.14.0 Strimzi Apache Kafka Operator 0.14.0 strimzi-cluster-operator.v0.13.0 Succeeded
4. 安装Kafka集群
下载https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/0.14.0/examples/kafka/kafka-persistent.yaml,主要修改的是所需存储空间为5Gi作为测试条件,这里的存储需要K8s集群中有默认的StorageClass
。
apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
version: 2.3.0
replicas: 3
listeners:
plain: {
}
tls: {
}
config:
offsets.topic.replication.factor: 3
transaction.state.log.replication.factor: 3
delete.topic.enable: "true"
transaction.state.log.min.isr: 2
log.message.format.version: "2.3"
storage:
type: jbod