目录
- 背景
- 第一部分 Minikube集群启动
- 第一部分 Kubernetes中StatefulSet介绍
- 第三部分 部署Zookeeper集群
- 第四部分 部署Kafka集群
- 第五部分 总结
- 参考文献及资料
背景
Kafka和zookeeper是在两种典型的有状态的集群服务。首先kafka和zookeeper都需要存储盘来保存有状态信息,其次kafka和zookeeper每一个实例都需要有对应的实例Id(Kafka需要broker.id,zookeeper需要my.id)来作为集群内部每个成员的标识,集群内节点之间进行内部通信时需要用到这些标识。
对于这类服务的部署,需要解决两个大的问题,一个是状态保存,另一个是集群管理(多服务实例管理)。kubernetes中提的StatefulSet(1.5版本之前称为Petset)方便了有状态集群服务在上的部署和管理。具体来说是通过Init Container来做集群的初始化工 作,用 Headless Service来维持集群成员的稳定关系,用Persistent Volume和Persistent Volume Claim提供网络存储来持久化数据,从而支持有状态集群服务的部署。
StatefulSet 是Kubernetes1.9版本中稳定的特性,本文使用的环境为 Kubernetes 1.10.0。
第一部分 Minikube集群启动
1 | root@deeplearning:~# minikube start |
第二部分 Kubernetes中StatefulSet介绍
使用Kubernetes来调度无状态的应用较为简单
StatefulSet 这个对象是专门用来部署用状态应用的,可以为Pod提供稳定的身份标识,包括hostname、启动顺序、DNS名称等。
在最新发布的 Kubernetes 1.5 我们将过去的 PetSet 功能升级到了 Beta 版本,并重新命名为StatefulSet
第三部分 部署Zookeeper集群
第四部分 部署Kafka集群
参考文献及材料
1、kubernetes 中 kafka 和 zookeeper 有状态集群服务部署实践 (一) https://cloud.tencent.com/developer/article/1005492
2、https://cloud.tencent.com/developer/article/1005491
3、https://www.bogotobogo.com/DevOps/Docker/Docker_Kubernetes_StatefulSet.php
4、https://kubernetes.io/zh/docs/tutorials/stateful-application/basic-stateful-set/
5、https://jimmysong.io/kubernetes-handbook/guide/using-statefulset.html
https://blog.usejournal.com/kafka-on-kubernetes-a-good-fit-95251da55837
https://www.cnblogs.com/cocowool/p/kubernetes_statefulset.html