4-6 k8s构建zookeeper集群

这篇博客介绍了如何在k8s环境中构建Zookeeper集群。首先,文章讲解了Zookeeper的基本作用,然后逐步展示了创建Dockerfile构建镜像、设置NFS共享目录、创建PV和PVC、部署Zookeeper集群的详细步骤。最后,作者提供了检查集群状态的方法,确保3个节点正常运行,形成一主两从的架构。
摘要由CSDN通过智能技术生成

前言

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

下面我们通过k8s构建zookeeper镜像,上传私有仓库,创建PV/PVC,最后yaml部署3个节点的zookeeper集群。
集群需要奇数位,本文创建了3个pv,3个pvc,3个service,3个pod。



zookeeper镜像

准备文件,包括安装包,启动脚本,配置,秘钥等:

ls zookeeper/

# 目录,包括查看zk状态脚本
bin  
# 目录,包括zoo配置和属性
conf  
# 构建文件
Dockerfile  
# 启动脚本,动态生成zoo id
entrypoint.sh  
# 秘钥文件
KEYS  
# 镜像源
repositories  
# zk安装包
zookeeper-3.4.14.tar.gz  
# 安装包验证
zookeeper-3.4.14.tar.gz.asc

构建Dockerfile镜像内容:

vim Dockerfile

# 基于官网精简版java8
FROM elevy/slim_java:8

ENV ZK_VERSION 3.4.14
ADD repositories /etc/apk/repositories 
# 拷贝zookeeper程序
COPY zookeeper-3.4.14.tar.gz /tmp/zk.tgz
COPY zookeeper-3.4.14.tar.gz.asc /tmp/zk.tgz.asc
COPY KEYS /tmp/KEYS
RUN apk add --no-cache --virtual .build-deps \
...
...

# 复制配置和启动文件,一定要加上可执行权限。
COPY conf /zookeeper/conf/
COPY bin/zkReady.sh /zookeeper/bin/
RUN chmod +x /zookeeper/bin/zkReady.sh
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh

# 环境变量
ENV PATH=/zookeeper/bin:${
   PATH} \
    ZOO_LOG_DIR=/zookeeper/log \
    ZOO_LOG4J_PROP="INFO, CONSOLE, ROLLINGFILE" \
    JMXPORT=9010

# 启动脚本ENTRYPOINT 参数为CMD 
ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "zkServer.sh", "start-foreground" ]

# 暴露服务端口
EXPOSE 2181 2888 3888 9010

构建镜像,上传镜像:

nerdctl build -t easzlab.io.local:5000/myhub/zookeeper:v1 .
nerdctl push --insecure-registry easzlab.io.local:5000/myhub/zookeeper:v1

创建NFS共享目录

在NFS服务器创建3个共享目录:

# 创建3个共享目录,属主属组选nfsnobody。
mkdir -p /data/k8sdata/myserver/zookeeper-datadir-1
mkdir -p /data/k8sdata/myserver/zookeeper-datadir-2
mkdir -p /data/k8sdata/myserver/zookeeper-datadir-3
chown nfsnobody.nfsnobody /data/k8sdata/myserver/zookeeper-datadir-1
chown nfsnobody.nfsnobody /data/k8sdata/myserver/zookeeper-datadir-2
chown nfsnobody.nfsnobody /data/k8sdata/myserver/zookeeper-datadir-3


# 提供共享服务,可共享的IP段为物理机IP,rw可读写,all_squash远程用户连到nfs服务器都压榨成nfsnobody用户。
cat << EOF >> /etc/exports
/data/k8sdata/myserver/zookeeper-datadir-1 192.168.100.0/24(rw,all_squash)
/data/k8sdata/myserver/zookeeper-datadir-2 192.168.100.0/24(rw,all_squash)
/data/k8sdata/myserver/zookeeper-datadir-3 192.168.100.0/24(rw,all_squash)
EOF

# 重新加载,查看挂载情况
exportfs -r
exportfs -v

# nfs涉及端口较多,测试环境可关闭防火墙
systemctl disable --now firewalld

创建PV

创建3个pv,分配的3个pv总和可以比NFS硬盘空间大,但不建议。

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: zookeeper-datadir-pv-1
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce 
  nfs:
    server: 192.168.100.155
    path: /data/k8sdata/myserver/zookeeper-datadir-1 

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: zookeeper-datadir-pv-2
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    server: 192.168.100.155 
    path: /data/k8sdata/myserver/zookeeper-datadir-2 

---
apiVersion: v1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值