Fork me on GitHub

在Minikube上运行Kafka集群

目录

  • 背景
  • 第一部分 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
root@deeplearning:~# minikube start
There is a newer version of minikube available (v1.2.0). Download it here:
https://github.com/kubernetes/minikube/releases/tag/v1.2.0

To disable this notification, run the following:
minikube config set WantUpdateNotification false
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Downloading Minikube ISO
153.08 MB / 153.08 MB [============================================] 100.00% 0s
Getting VM IP address...
Moving files into cluster...
Downloading kubeadm v1.10.0
Downloading kubelet v1.10.0
Finished Downloading kubeadm v1.10.0
Finished Downloading kubelet v1.10.0
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Loading cached images from config file.

第二部分 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

https://technology.amis.nl/2018/04/19/15-minutes-to-get-a-kafka-cluster-running-on-kubernetes-and-start-producing-and-consuming-from-a-node-application/

4、https://kubernetes.io/zh/docs/tutorials/stateful-application/basic-stateful-set/

5、https://jimmysong.io/kubernetes-handbook/guide/using-statefulset.html

6、Kubernetes部署Kafka集群

https://blog.usejournal.com/kafka-on-kubernetes-a-good-fit-95251da55837

https://www.cnblogs.com/cocowool/p/kubernetes_statefulset.html

本文标题:在Minikube上运行Kafka集群

文章作者:rong xiang

发布时间:2018年06月25日 - 19:06

最后更新:2022年10月25日 - 23:10

原始链接:https://zjrongxiang.github.io/posts/f15de0fe/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%