# 工具部署
工具类型: 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包、文档、离线镜像、相关软件等。
# 文件上传
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] 之类的节名称,否则会导致脚本无法正常识别。
注意:如果部署高可用组件,k8s的vip地址在脚本内进行设置。
# 其他配置
按照脚本内的注释调整即可,不再赘述。对于不熟悉的参数,保持默认即可。
# 文件分发
脚本自动按需查找和分发文件到对应节点中,无需手动执行。
# 安装部署
传参示例: 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
# 部署过程屏幕输出
# 新装和扩容后的节点信息
# 常见问题
快速跳转
