欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
如何快速部署借助Helm,只需少量操作即可部署kafka;
kafka和zookeeper对存储都有需求,若提前准备了StorageClass,存储一事则变得十分简单
参考文章本次实战涉及到的K8S、Helm、NFS、StorageClass等前置条件,它们的安装和使用请参考:
《kubespray2.11安装kubernetes1.15》
《部署和体验Helm(2.16.1版本)》
《Ubuntu16环境安装和使用NFS》
《K8S使用群晖DS218+的NFS》
《K8S的StorageClass实战(NFS)》
环境信息本次实战的操作系统和软件的版本信息如下:
Kubernetes:1.15
Kubernetes宿主机:CentOS Linux release 7.7.1908
NFS服务:IP地址192.168.50.135,文件夹/volume1/nfs-storageclass-test
Helm:2.16.1
Kafka:2.0.1
Zookeeper:3.5.5
接下来的实战之前,请您准备好:K8S、Helm、NFS、StorageClass;
操作添加helm仓库(该仓库中有kafka):helm repo add incubator
下载kafka的chart:helm fetch incubator/kafka
下载成功后当前目录有个压缩包:kafka-0.20.8.tgz,解压:tar -zxvf kafka-0.20.8.tgz
进入解压后的kafka目录,编辑values.yaml文件,下面是具体的修改点:
首先要设置在K8S之外的也能使用kafka服务,修改external.enabled的值,改为true:
6. 找到configurationOverrides,下图两个黄框中的内容原本是注释的,请删除注释符号,另外,如果您之前设置过跨网络访问kafka,就能理解下面写入K8S宿主机IP的原因了:
7. 接下来设置数据卷,找到persistence,按需要调整大小,再设置已准备好的storageclass的名称:
8. 再设置zookeeper的数据卷:
9. 设置完成,开始部署,先创建namespace,执行:kubectl create namespace kafka-test
10. 在kafka目录下执行:helm install --name-template kafka -f values.yaml . --namespace kafka-test
11. 如果前面的配置没有问题,控制台提示如下所示:
12. kafka启动依赖zookeeper,整个启动会耗时数分钟,期间可见zookeeper和kafka的pod逐渐启动:
13. 查看服务:kubectl get services -n kafka-test,如下图红框所示,通过宿主机IP:31090、宿主机IP:31091、宿主机IP:31092即可从外部访问kafka:
14. 查看kafka版本:kubectl exec kafka-0 -n kafka-test -- sh -c 'ls /usr/share/java/kafka/kafka_*.jar' ,如下图红框所示,scala版本2.11,kafka版本2.0.1:
kafka启动成功后,咱们来验证服务是否正常;
对外暴露zookeeper为了远程操作kafka,有时需要连接到zookeeper,所以需要将zookeeper也暴露出来;
创建文件zookeeper-nodeport-svc.yaml,内容如下:
apiVersion: v1 kind: Service metadata: name: zookeeper-nodeport namespace: kafka-test spec: type: NodePort ports: - port: 2181 nodePort: 32181 selector: app: zookeeper release: kafka执行命令:kubectl apply -f zookeeper-nodeport-svc.yaml