# 1 简介
# 1.1 实验环境
已经使用 Kuboard Spary 搭建好 Kubernetes 集群和 Kuboard,使用的软件如下:
| 名称 | 版本 | 
|---|---|
| kuboard spary | v1.2.3-amd64 | 
| kubernetes | v1.25.5 | 
| zookeeper | 3.8.0 | 
# 1.2 集群规划
- Zookeeper(三台 4 核 8G 的 Ubuntu20.04 服务器)
| 主机名 | IP | 
|---|---|
| node1 | 192.168.0.6 | 
| node2 | 192.168.0.7 | 
| node3 | 192.168.0.14 | 
# 2 创建 ConfigMap
# 2.1 创建 zookeeper-environment
- 创建一个名为zookeeper-environment的配置字典,包含变量对如下:Key Value ALLOW_ANONYMOUS_LOGIN yes BITNAMI_DEBUG false ZOO_4LW_COMMANDS_WHITELIST srvr, mntr, ruok ZOO_DATA_LOG_DIR ZOO_ENABLE_AUTH no ZOO_INIT_LIMIT 10 ZOO_LOG_LEVEL ERROR ZOO_MAX_CLIENT_CNXNS 60 ZOO_PORT_NUMBER 2181 ZOO_SERVERS zookeeper-statefulset-0.zookeeper-statefulset.bigdata.svc.cluster.local:2888:3888::1 zookeeper-statefulset-1.zookeeper-statefulset.bigdata.svc.cluster.local:2888:3888::2 zookeeper-statefulset-2.zookeeper-statefulset.bigdata.svc.cluster.local:2888:3888::3 ZOO_SYNC_LIMIT 5 ZOO_TICK_TIME 2000 
# 2.2 创建 zookeeper-setup
- 创建一个名为 - zookeeper-setup的配置字典,Key 为- setup.sh,value 如下:- 1 2 3 4 5 6 7 8 9 10 11 12 13 14- #!/bin/bash if [[ -f "/bitnami/zookeeper/data/myid" ]]; then export ZOO_SERVER_ID="$(cat /bitnami/zookeeper//data/myid)" else HOSTNAME="$(hostname -s)" if [[ $HOSTNAME =~ (.*)-([0-9]+)$ ]]; then ORD=${BASH_REMATCH[2]} export ZOO_SERVER_ID="$((ORD + 1 ))" else echo "Failed to get index from hostname $HOST" exit 1 fi fi exec /entrypoint.sh /run.sh
# 3 创建 StatefulSet
- 创建一个名为zookeeper-statefulset的有状态副本集,设置 replica 为3
# 3.1 创建工作容器
- 容器名称:zookeeper 
- 容器镜像:bitnami/zookeeper:3.8.0 
- 命令: - /opt/scripts/setup.sh
- 环境变量:引用之前创建的配置字典 - zookeeper-environment
- 容器端口:2181 
- 资源请求限制: - CPU 资源请求:500m 
- 内存资源请求:500Mi 
- CPU 资源限制:500m 
- 内存资源限制:500Mi 
 
- 健康检查: - 容器存活探针: - 执行命令: - /bin/bash -c 'echo "ruok" | timeout 2 nc -w 2 localhost 2181 | grep imok'
- 初始延迟:30 秒 
- 执行探测频率:10 秒 
- 超时时间:5 秒 
- 健康阈值:1 秒 
- 不健康阈值:6 秒 
 
 
- 容器就绪探针:与容器存活探针相同 
- 容器安全上下文: - runAsNonRoot: - true
- 用户:1001 
 
# 3.2 创建存储挂载
- 数据卷:配置字典 - zookeeper-setup
- 挂载路径:/opt/scripts/setup.sh 
- 子路径:setup.sh 
# 3.3 创建 SVC
- 服务类型:NodePort 
- 端口: - 端口名称 - port - targetPort - client - 2181 - 2181 - server - 2888 - 2888 - leader-election - 3888 - 3888 
# 3.4 设置亲和性
- 设置 Node 亲和性(硬策略) - 必须满足标签表达式:app.kubernetes.io/component=zookeeper
 
- 设置 Pod 反亲和性(软策略) - 尽量满足标签表达式 - 权重:49 
- togologykey:app.kubernetes.io/name 
- 表达式:app.kubernetes.io/component=zookeeper 
 
 
# 4 部署结果
# 4.1 集群信息

# 4.2 节点状态测试
|  |  | 


