kubeasz k8s部署文档

1 容器运行时版本分界

1.1 版本分界线:Kubernetes 1.24

  1. K8s ≤ 1.23:保留 dockershim,支持 Docker 作为容器运行时;
  2. K8s ≥ 1.24(含 1.24~1.35):官方彻底移除 dockershim,仅支持 containerd / CRI-O,不可直接使用 Docker。

部署提醒:新版 kubeadm、kubeasz 均默认使用 containerd,仅安装 Docker 会导致节点无法就绪。

2 内核、操作系统与 K8s 版本匹配规范

2.1 各 K8s 版本最低内核要求、推荐内核、适配系统总览

K8s 版本区间最低内核要求生产推荐内核最优推荐操作系统禁止搭配系统
≤1.233.103.10CentOS 7.9Rocky8、Rocky9、Ubuntu22.04(无必要)
1.24 ~ 1.284.195.4 LTSUbuntu 20.04CentOS7.9(原生 3.10 内核)
1.29 ~ 1.324.195.10 / 5.15Ubuntu 22.04 / Rocky Linux 9CentOS7、Rocky8
1.33 ~ 1.35(当前最新 1.35.4)4.195.15 / 6.1 / 6.8Ubuntu 22.04 LTSCentOS7.9、Rocky Linux 8、内核<5.10 所有系统

2.2 核心约束说明

  1. 严禁使用 CentOS7.9(内核 3.10)安装 K8s 1.24 及以上版本,尤其 1.33~1.35
    风险:Calico BPF 初始化失败、conntrack 内存泄漏、kube-proxy 转发异常、cgroup v1 兼容性缺陷、网络组件持续 CrashLoopBackOff,无彻底修复方案。

  2. Rocky Linux 8(默认 4.18 内核)适配 K8s 1.33+ 存在官方兼容问题,nftables 负载均衡丢包,不推荐生产使用。

  3. K8s 1.33~1.35 官方不再兼容 RHEL 4.18 系列内核。

3 Calico 网络插件配套内核强制要求

  1. K8s ≥1.24 默认启用 BPF 后端 CALICO_NETWORKING_BACKEND=bpf硬性要求内核 ≥5.4
  2. 内核<5.4 启用 BPF 会出现 calico-node 卡在 Init:0/2,mount-bpffs 容器无法启动;
  3. 低内核临时兼容方案:修改 Calico yaml 模板,后端改为 iptables,但网络性能下降,仅临时过渡使用。

4 部署前置校验步骤(标准化检查项,部署前必执行)

  1. 查看系统内核
uname -r
  • 计划部署 1.33~1.35:内核输出必须 ≥5.10,不满足直接更换操作系统;
  1. 确认容器运行时

    • K8s≥1.24:系统必须预装 containerd,禁止仅安装 Docker;
  2. 内核配套校验

    • 启用 Calico BPF:内核 ≥5.4;
  3. 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安装

  • 6.1 下载项目源码、二进制及离线镜像

下载工具脚本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

  • 6.2 创建集群配置实例
# 容器化运行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 文件中修改。

  • 6.3 开始安装 如果你对集群安装流程不熟悉,请阅读项目首页 安装步骤 讲解后分步安装,并对 每步都进行验证
#建议使用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工具链接

更多推荐