# 工具部署

工具类型: shell 脚本

文档更新: 2025-02-22 16:43:06

适用场景: 非云化产品的的私有化部署(自建环境)

# 相关下载

安装工具-新脚本: https://pan.baidu.com/s/1WSUpcnKpjUezYiwJXbYqwQ?pwd=2025

安装工具-老脚本: https://pan.baidu.com/s/1kkZ1JhpVJxFUA2fpvJ4DWg?pwd=2023

新脚本特性

1、支持 单主集群/多主集群 多种组合及节点扩容

2、支持 密码/密钥 两种登录方式进行远程部署

3、支持 docker/containerd 两种容器运行时

4、支持 flannel/calico/cilium 三种CNI插件

5、支持 kube-vip/keepalived+haproxy 两种高可用组件

6、支持 控制平面端点采用 IP/域名 两种方式

7、支持部署 metallb 负载均衡器

8、支持部署 ingress-nginx|traefik 两种 ingress 控制器

9、支持部署 longhorn/nfs-subdir-external-provisioner 两种持久化存储应用

10、支持部署 metrics-server/dashboard 等仪表盘/面板

11、支持部署 prometheus/grafana 等监控组件

12、支持调整 k8s 证书期限为10年或100年

13、支持开启 bgp 模式

# 环境支持

# 平台架构

只支持 amd64 和 arm64 两种硬件平台。

# 红帽家族

RHEL 7/8/9

CentOS 7/8

AlmaLinux 8/9

Rocky 8/9

OracleLinux 7/8/9

# 德班家族

Debian 10/11/12

Ubuntu 18.04/20.04/22.04/24.04

# Suse家族

SLES 15.4/15.5/15.6

openSuse 15.4/15.5/15.6

# 国产系统

OpenCloudOS 8/9

UOS 1050/1060/1070 A/D/E系列

Kylin V10 SP1/SP2/SP3

OpenEuler 20.03/22.03/24.03 SP1/SP2/SP3/SP4

Anolis 7/8/9

# 节点个数

节点个数: 奇数个 master 节点 + 任意个 worker 节点

具体节点个数与当前部署的环境作用和并发等有关,请参考资源准备手册提前准备相对应的节点个数。

# 相关组件

集群版本: containerd 1.7.x/2.0.x | docker 27.x.x + k8s 1.3[0-2].x

网络插件: calico 3.29.x | cilium 1.1[67].x

存储插件: longhorn 1.[78].x

ingress : traefik 3.[23].x | ingress-nginx 4.12.x

高 可 用: kube-vip 0.[89].x | keepalived+haproxy

负载均衡: metallb 0.14.x

# 脚本用法

本小节只是概述,不用深究,具体操作见后续章节:

安装准备: 上传 脚本/安装文件 到运维机上

参数修改: 设置 .sh 脚本内的相关参数以及 .nodes 文件中的节点信息 并保存

new表示全新安装,add表示安装运行一段时间后对node扩容

传参示例: bash multi-install-k8s.sh [i|c|d] <new|add> | [r|t|v]

执行部署: bash multi-install-k8s.sh i <new|add>

卸载部署: bash multi-install-k8s.sh r

需求检查: bash multi-install-k8s.sh c <new|add>

部署测试: bash multi-install-k8s.sh t

安装依赖: bash multi-install-k8s.sh d <new|add>

版本信息: bash multi-install-k8s.sh v

# 补充说明

1、只支持离线部署,不支持在线部署,故需要提前下载本工具并上传到服务器。

2、执行stat -fc %T /sys/fs/cgroup 检查 cgroup 版本 在 1.31.0 开始 cgroup v1 转为维护模式 1.32.0 开始不再支持。

3、为了减少潜在的问题和确保最佳的功能兼容性和稳定性,要求所有节点都使用相同的硬件平台、相同的操作系统、相同的内核版本、相同的unix时间戳。

4、如果有高级需求且熟悉bash以及K8S和各组件 可适当调整脚本 实现完全脱离 iptables/ipvs 的依赖。

5、所有集群节点必须确保可正常使用,systemd/systemctl/ssh/sftp-server这几个命令需要确保可用,节点之间可正常互访互联。

6、keepalived/haproxy 不支持在 master 节点之外的主机上进行部署,将与 k8s 集群件一起集中部署在所有 master节点中(包含扩容的master节点)。

7、为避免后续扩容带来的复杂性,强烈建议,无论是单主集群还是多主集群,都提供一个虚拟IP部署HA组件。

8、不支持从23年发布的老脚本扩容,不支持对非当前脚本部署的集群进行扩容。扩容时尽量使用部署时的采用的软件版本,避免因软件版本不一致引发兼容问题。

9、为避免误删,不支持自动卸载k8s集群。但是会输出卸载操作的方法供参考。

# 安装准备

# 磁盘规划

脚本默认把容器和kubelet的相关数据放在 /data 的不同目录下,从而避免撑爆系统盘。

如果有独立磁盘的,请把独立磁盘挂载到 /data 目录后再进行安装。

正式环境强烈建议挂载独立存储盘给 docker/containerd/kubelet 使用。

部署期间会产生临时文件,集群节点及运维机需预留至少 50G 到 100G 的存储空间。

# 压缩包说明

<arch> 表示平台架构,<version> 表示版本号。

1、两种架构下的压缩包分别带有amd64 和 arm64 字样。

2、两种压缩格式:7z 和 tgz。

3、K8S集群件和容器运行时都是采用二进制离线部署。

4、K8S的可选组件calico采用清单方式部署,其他一律采用helm chart包部署。

如果不想单独下载各自的软件和镜像,可下载全量包,全量包包含了部署脚本、chart包、文档、离线镜像、相关软件等。

7F63CRY6ACAFE

# 文件上传

1、上传 脚本/安装文件/镜像文件 到运维机上。

2、将脚本文件上传并解压,7z格式使用7zzs,tgz格式的使用tar。

3、可以使用自己准备的离线镜像包,也可以使用预置离线镜像包。随脚本预置的镜像的各版本都已在 amd64/arm64 上做了测试。

# 解包命令示例

在脚本所在目录执行解压。

7z格式解压命令参考

# 解压全量包-amd64
7zzs x -y multi-install-k8s-v1.32.1-amd64.7z

# 解压全量包-arm64
7zzs x -y multi-install-k8s-v1.32.1-arm64.7z

tgz格式解压命令参考

# 解压脚本安装文件-amd64
tar -xf multi-install-k8s-amd64.tgz

# 解压脚本安装文件-arm64
tar -xf multi-install-k8s-arm64.tgz

非全量包按照脚本中已设置为启用的组件按需解包

# 其他的7z包依此类推
7zzs x -y release/images/calico-v3.29.2-images-amd64.7z

# 脚本参数调整

根据实际情况,修改脚本内的相关参数并保存。

# 节点清单

集群节点清单文件:multi-install-k8s.nodes 不要修改节点清单文件的文件名,也不要删除或修改 .nodes 文件内的类似 [master] 之类的节名称,否则会导致脚本无法正常识别。

5AZ4KRY6ABQFK

注意:如果部署高可用组件,k8s的vip地址在脚本内进行设置。

# 其他配置

按照脚本内的注释调整即可,不再赘述。对于不熟悉的参数,保持默认即可。

1742278648627.png

# 文件分发

脚本自动按需查找和分发文件到对应节点中,无需手动执行。

# 安装部署

传参示例: bash multi-install-k8s.sh [i|c|d] <new|add> |[r|t|v]

执行部署: bash multi-install-k8s.sh i <new|add>

卸载集群: bash multi-install-k8s.sh r

需求检查: bash multi-install-k8s.sh c <new|add>

部署测试: bash multi-install-k8s.sh t

安装依赖: bash multi-install-k8s.sh d <new|add>

版本信息: bash multi-install-k8s.sh v

# 部署过程屏幕输出

XCN6KRY6AAQDS

# 新装和扩容后的节点信息

ZHZ6MRY6ADADW

# 常见问题

编撰人:yangfc、het