您的位置 首页 kubesphere

k8s 部署zookeeper(kubesphere)

k8s 部署zookeeper(kubesphere)

 

①zookeeper的docker官方镜像不能直接用于此次集群服务搭建,由于官方zookeeper镜像在k8s环境中节点myid不能动态配置,这里我们需要根据实际需求定制我们可以动态改变zookeeper中的myid节点的镜像。

②这里使用的镜像是:ydockerp/zookeeper

ydockerp/zookeeper:3.8.0

 

③关于定制版的zookeeper镜像制作可参考Docker Hub

现在 kubesphere中新建 一个 项目kafka-test ,这里是测试环境。

(1)创建zookeeper集群服务配置文件

点击配置中心-配置-创建,新建zookeeper集群配置文件。填写zookeeper集群配置文件基础信息

zk-conf

添加元数据

zookeeper集群配置文件zoo.cfg

dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
clientPort=2181
quorumListenOnAllIPs=true
server.0=zookeeper-v1-0.zookeeper.kafka-test.svc.cluster.local:2888:3888;2181
server.1=zookeeper-v1-1.zookeeper.kafka-test.svc.cluster.local:2888:3888;2181
server.2=zookeeper-v1-2.zookeeper.kafka-test.svc.cluster.local:2888:3888;2181

 

注意这里的 配置信息是根据自己集群来的, 如果不会配置,可以找到白眉大叔Q,71570383

 

zoo.cfg

点击创建,完成zookeeper集群配置添加

PS:这里我们以三个节点的配置为例,超过3个节点的配置与此类似。集群的配置规则如下: server.<myid>=ip:2888:3888;2181,这里ip地址由于k8s集群中pod节点的上下线会动态改变ip地址,
我们取其hostname主机名地址,其构成规则是<节点名称>-<版本号>-<动态索引>.<节点名称>.<命名空间>.svc.cluster.local,固定写法,
这样就可以通过域名的方式访问集群各个pod节点;myid在zookeeper中pod启动时动态获取,我们镜像使用的策略是从访问域名中截取动态索引的值为节点的myid,myid范围从 0 ~ 255 之间,使用ydockerp/zookeeper这个镜像必须遵守这个规范,不然系统会报未知的错误。2888端口用于集群内部通讯,3888用于集群leader选举,2181端口用于客户端操作。

(2) 创建 服务

zookeeper集群服务搭建

- 点击应用负载-服务-创建-有状态服务

- 填写基本信息,点击下一步,这里要与集群配置信息填写一致,否则集群不能相互访问

- 选择容器副本数量为3,点击添加镜像

-  添加 ydockerp/zookeeper  镜像,并点选使用默认端口

ydockerp/zookeeper:3.8.0 

 

 

- 勾选同步主机时区,点对号添加,点击下一步

- 点击添加存储卷模板添加zookeeper的pvc存储

然后配置一下 目录 /data

- 点击挂载配置文件和秘钥

- 填写挂载zookeeper集群配置的基本信息,这里要选择添加子路径

- 勾选添加特定的键和路径,添加zookeeper集群配置,点击对号添加

- 完成挂载存储,点击下一步

- 点击创建,zookeeper服务就创建完成了

这样就部署完了。

 

zookeeper外网访问服务搭建

- 点击应用负载-服务-创建-指定工作负载

- 填写基本信息,点击下一步

zookeeper-node

-  指定zookeeper工作负载,点击确定

-填写客户端访问端口映射2181,点击下一步

- 选择外网访问,NodePort方式暴露端口,点击创建

- 使用idea插件工具zoolytic连接zookeeper测试

不会用的,点击连接

 

接下来我们对zookeeper集群服务验证

(1)查看集群主机名

for i in 0 1 2; do kubectl exec -n kafka-test zookeeper-v1-$i -- hostname; done

(2)查看集群myid

for i in 0 1 2; do echo "myid zookeeper-v1-$i";kubectl exec -n kafka-test zookeeper-v1-$i -- cat /data/myid; done

(3)#查看集群状态

for i in 0 1 2; do kubectl exec --namespace kafka-test  zookeeper-v1-$i zkServer.sh status; done

(4)#查看集群主机全名

for i in 0 1 2; do kubectl exec -n kafka-test zookeeper-v1-$i -- hostname -f; done

(5)#查看集群配置文件

for i in 0 1 2; do kubectl exec -n kafka-test zookeeper-v1-$i -- cat /conf/zoo.cfg; done

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章