从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的zookeeper集群服务

Posted 北溟溟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的zookeeper集群服务相关的知识,希望对你有一定的参考价值。

前言

ZooKeeper是Apache的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。往期的博客内容我们已经介绍过其作为分布锁的应用案例实战内容,本节内容我们主要介绍一下使用kubesphere平台安装一个k8s环境下高可用的zookeeper集群服务。

正文

  • 关于zookeeper的docker镜像资源的说明

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

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

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

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

  •  点击添加数据

  • 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=app-zk-v1-0.app-zk.app.svc.cluster.local:2888:3888;2181
server.1=app-zk-v1-1.app-zk.app.svc.cluster.local:2888:3888;2181
server.2=app-zk-v1-2.app-zk.app.svc.cluster.local:2888:3888;2181

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端口用于客户端操作。

  • 填写zookeeper配置数据,点对号添加zookeeper集群配置

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

  • zookeeper集群服务搭建

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

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

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

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

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

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

- 填写完存储基本信息点对号添加

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

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

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

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

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

  • zookeeper集群服务验证
#查看集群主机名
for i in 0 1 2; do kubectl exec -n app app-zk-v1-$i -- hostname; done

#查看集群myid
for i in 0 1 2; do echo "myid app-zk-v1-$i";kubectl exec -n app app-zk-v1-$i -- cat /data/myid; done

#查看集群状态
for i in 0 1 2; do kubectl exec --namespace app  app-zk-v1-$i zkServer.sh status; done

#查看集群主机全名
for i in 0 1 2; do kubectl exec -n app app-zk-v1-$i -- hostname -f; done

#查看集群配置文件
for i in 0 1 2; do kubectl exec -n app app-zk-v1-$i -- cat /conf/zoo.cfg; done

  •  zookeeper外网访问服务搭建

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

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

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

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

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

 - 点击创建,完成外网访问服务创建 

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

结语

到这里关于k8环境下,使用kubesphere搭建高可用的zookeeper集群服务就结束,别忘了关注、收藏、加点赞哦,我们下期见。。。

以上是关于从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的zookeeper集群服务的主要内容,如果未能解决你的问题,请参考以下文章

从零开始搭建k8s集群——使用KubeSphere管理平台搭建链路追踪组件zipkin服务端

(九)从零开始搭建k8s集群——使用KubeSphere管理平台搭建流控组件sentinel服务端

从零开始搭建k8s集群——使用KubeSphere管理平台搭建一个高可用的zookeeper集群服务

(十八)从零开始搭建k8s集群——使用KubeSphere管理平台搭建logstash服务

(七)从零开始搭建k8s集群——使用KubeSphere管理平台创建一个高可用的Redis集群服务

(八)从零开始搭建k8s集群——使用KubeSphere管理平台创建一个高可用的Nacos(2.0.4)集群服务