kubeasz k8s部署
kubeasz k8s部署文档
1 容器运行时版本分界
1.1 版本分界线:Kubernetes 1.24
- K8s ≤ 1.23:保留 dockershim,支持 Docker 作为容器运行时;
- K8s ≥ 1.24(含 1.24~1.35):官方彻底移除 dockershim,仅支持 containerd / CRI-O,不可直接使用 Docker。
部署提醒:新版 kubeadm、kubeasz 均默认使用 containerd,仅安装 Docker 会导致节点无法就绪。
2 内核、操作系统与 K8s 版本匹配规范
2.1 各 K8s 版本最低内核要求、推荐内核、适配系统总览
| K8s 版本区间 | 最低内核要求 | 生产推荐内核 | 最优推荐操作系统 | 禁止搭配系统 |
|---|---|---|---|---|
| ≤1.23 | 3.10 | 3.10 | CentOS 7.9 | Rocky8、Rocky9、Ubuntu22.04(无必要) |
| 1.24 ~ 1.28 | 4.19 | 5.4 LTS | Ubuntu 20.04 | CentOS7.9(原生 3.10 内核) |
| 1.29 ~ 1.32 | 4.19 | 5.10 / 5.15 | Ubuntu 22.04 / Rocky Linux 9 | CentOS7、Rocky8 |
| 1.33 ~ 1.35(当前最新 1.35.4) | 4.19 | 5.15 / 6.1 / 6.8 | Ubuntu 22.04 LTS | CentOS7.9、Rocky Linux 8、内核<5.10 所有系统 |
2.2 核心约束说明
-
严禁使用 CentOS7.9(内核 3.10)安装 K8s 1.24 及以上版本,尤其 1.33~1.35
风险:Calico BPF 初始化失败、conntrack 内存泄漏、kube-proxy 转发异常、cgroup v1 兼容性缺陷、网络组件持续 CrashLoopBackOff,无彻底修复方案。 -
Rocky Linux 8(默认 4.18 内核)适配 K8s 1.33+ 存在官方兼容问题,nftables 负载均衡丢包,不推荐生产使用。
-
K8s 1.33~1.35 官方不再兼容 RHEL 4.18 系列内核。
3 Calico 网络插件配套内核强制要求
- K8s ≥1.24 默认启用 BPF 后端
CALICO_NETWORKING_BACKEND=bpf,硬性要求内核 ≥5.4; - 内核<5.4 启用 BPF 会出现 calico-node 卡在
Init:0/2,mount-bpffs 容器无法启动; - 低内核临时兼容方案:修改 Calico yaml 模板,后端改为
iptables,但网络性能下降,仅临时过渡使用。
4 部署前置校验步骤(标准化检查项,部署前必执行)
- 查看系统内核
uname -r
- 计划部署 1.33~1.35:内核输出必须 ≥5.10,不满足直接更换操作系统;
-
确认容器运行时
- K8s≥1.24:系统必须预装 containerd,禁止仅安装 Docker;
-
内核配套校验
- 启用 Calico BPF:内核 ≥5.4;
-
cgroup 说明
Ubuntu22.04/24.04、Rocky9 默认开启 cgroup v2,完美适配 1.35;CentOS7 仅支持 cgroup v1,新版 K8s 兼容性差。
5.基础系统配置
-
2c/4g内存/40g硬盘(该配置仅测试用)
-
最小化安装
Ubuntu 16.04 server或者CentOS 7 Minimal -
配置基础网络、更新源、SSH登录等
-
配置从部署节点能够ssh免密登录所有节点,并且设置python软链接
#$IP为所有节点地址包括自身,按照提示输入yes 和root密码
ssh-copy-id $IP
6.在部署节点编排k8s安装
下载工具脚本ezdown,举例使用kubeasz版本3.5.0
export release=3.5.0
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown
下载kubeasz代码、二进制、默认容器镜像(更多关于ezdown的参数,运行./ezdown 查看)
# 国内环境
./ezdown -D
# 海外环境
#./ezdown -D -m standard
【可选】下载额外容器镜像(cilium,flannel,prometheus等)
# 按需下载
./ezdown -X flannel
./ezdown -X prometheus
...
【可选】下载离线系统包 (适用于无法使用yum/apt仓库情形)
./ezdown -P
上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已整理好放入目录/etc/kubeasz
# 容器化运行kubeasz
./ezdown -S
# 创建新集群 k8s-01
docker exec -it kubeasz ezctl new k8s-01
2021-01-19 10:48:23 DEBUG generate custom cluster files in /etc/kubeasz/clusters/k8s-01
2021-01-19 10:48:23 DEBUG set version of common plugins
2021-01-19 10:48:23 DEBUG cluster k8s-01: files successfully created.
2021-01-19 10:48:23 INFO next steps 1: to config '/etc/kubeasz/clusters/k8s-01/hosts'
2021-01-19 10:48:23 INFO next steps 2: to config '/etc/kubeasz/clusters/k8s-01/config.yml'
然后根据提示编辑’/etc/kubeasz/clusters/k8s-01/hosts’ 和 ‘/etc/kubeasz/clusters/k8s-01/config.yml’:根据前面节点规划修改hosts 文件和其他集群层面的主要配置;其他集群组件配置项可以在config.yml 文件中修改。
#建议使用alias命令,查看~/.bashrc 文件应该包含:alias dk='docker exec -it kubeasz'
source ~/.bashrc
# 一键安装,等价于执行docker exec -it kubeasz ezctl setup k8s-01 all
dk ezctl setup k8s-01 all
# 或者分步安装,具体使用 dk ezctl help setup 查看分步安装帮助信息
# dk ezctl setup k8s-01 01
# dk ezctl setup k8s-01 02
# dk ezctl setup k8s-01 03
# dk ezctl setup k8s-01 04
...
注意本文使用的是kubeasz工具,https://github.com/easzlab/kubeasz工具链接
更多推荐
所有评论(0)