节点预处理
在安装 global 集群之前,所有节点(控制平面节点和工作节点)必须完成预处理。
支持的操作系统和内核版本
下表列出了支持的操作系统、其验证版本及对应测试的内核版本。
INFO
仅支持官方操作系统自带的内核版本。 内核版本必须与测试版本匹配(例如 A.B.C);破折号(“-”)后的后缀可以不同。
如果操作系统、内核版本或 CPU 架构不符合要求,请联系技术支持。
x86
- RHEL 7.8:
3.10.0-1127.el7.x86_64 - RHEL 8.0:
4.18.0-80.el8.x86_64 - RHEL 8.6:
4.18.0-372.9.1.el8.x86_64
WARNING
RHEL 7.8 不支持 Calico Vxlan IPv6。
ARM
- Kylin V10 SP3:
4.19.90-52.22.v2207.ky10.aarch64
WARNING
- Kylin V10、V10-SP1 和 V10-SP2 存在已知内核问题,可能导致 NodePort 网络访问失败;建议升级至 Kylin V10-SP3。
- ARM 架构仅支持
Kunpeng 920,其他型号请联系技术支持。
执行快速配置脚本
安装包提供了用于快速配置节点的脚本。
解压安装包后,在 res 目录下获取 init.sh 脚本文件。将脚本文件复制到节点,并确保拥有 root 权限。
执行脚本:
WARNING
init.sh 无法保证以下所有检查均被正确处理,仍需继续执行以下步骤。
节点检查
以下列出了节点必须完成的所有检查。根据节点的角色,所需检查项会有所不同,例如部分检查仅适用于控制平面节点。
检查分为两类:
- ✅ 表示必须通过的检查。
- ⚠️ 表示特定场景下必须满足的检查。请根据说明判断是否满足对应条件,如满足则必须解决。
以下是检查列表:
-
操作系统和内核
- ✅ 机器的 grub 启动配置必须包含参数
transparent_hugepage=never。 - ✅ CentOS 7.x 系统的 grub 启动配置必须包含参数
cgroup.memory=nokmem。 - ✅ 检查内核模块
ip_vs、ip_vs_rr、ip_vs_wrr和ip_vs_sh是否已启用。 - ⚠️ 当内核版本低于 4.19.0(或 RHEL 低于 4.18.0)时,检查内核模块
nf_conntrack_ipv4和(IPv6 时)nf_conntrack_ipv6是否已启用。 - ⚠️ 如果
global集群计划使用Kube-OVNCNI,必须启用内核模块geneve和openvswitch。 - ✅ 禁用 apparmor/selinux 和防火墙。
- ✅ 禁用
swap。
- ✅ 机器的 grub 启动配置必须包含参数
-
用户与权限
- ✅ 节点的 SSH 用户拥有
root权限,且可无密码使用sudo。 - ✅
/etc/ssh/sshd_config中的UseDNS和UsePAM参数必须设置为no。 - ✅ 执行
systemctl show --property=DefaultTasksMax返回infinity或非常大的值,否则需调整/etc/systemd/system.conf。
- ✅ 节点的 SSH 用户拥有
-
节点网络
- ✅
hostname必须符合以下规则:- 不超过 36 个字符。
- 以字母或数字开头和结尾。
- 仅包含小写字母、数字、
-和.,但不能包含.-、..或-.。
- ✅
/etc/hosts中的localhost必须解析为127.0.0.1。 - ✅
/etc/resolv.conf文件必须存在且包含nameserver配置,但不能包含以 172 开头的地址(需禁用 systemd-resolved)。 - ⚠️
/etc/resolv.conf文件不应配置 search 域(如必须配置,参见配置 Search Domain)。 - ✅ 机器 IP 地址不能是回环、多播、链路本地、全 0 或广播地址。
- ✅ 执行
ip route必须返回默认路由或指向0.0.0.0的路由。 - ✅ 节点不得占用以下端口:
- 控制平面节点:
2379、2380、6443、10249~10256 - 安装程序所在节点:
8080、12080、12443、16443、2379、2380、6443、10249~10256 - 工作节点:
10249~10256
- 控制平面节点:
- ✅ 如果集群使用 Kube-OVN 或 Calico,确保以下端口未被占用:
- Kube-OVN:
6641、6642 - Calico:
179
- Kube-OVN:
- ⚠️ 确保 nerdctl 所需的网络段
172.17.x.x~172.18.x.x的 IP 地址未被占用。如该网段 IP 被占用且无法更改,请联系技术支持。
- ✅
-
软件和目录要求
- ✅ 必须安装以下工具:
ip、ss、tar、swapoff、modprobe、sysctl、md5sum和scp或sftp。 - ⚠️ 如果计划使用本地存储 TopoLVM 或 Rook,需安装
lvm2。 - ✅ 不允许存在
/etc/systemd/system/kubelet.service文件。 - ✅
/tmp挂载参数中不得包含noexec。 - ✅ 删除与
global集群组件冲突的软件包(参见删除冲突软件包)。 - ✅ 必须删除以下文件(如存在):
/var/lib/docker/var/lib/nerdctl/opt/nerdctl//var/lib/containerd/var/log/pods/var/lib/kubelet/pki
- ✅ 必须安装以下工具:
-
跨节点检查
- ✅
global集群内节点间不得存在网络防火墙限制。 - ✅ 集群中每个节点的
hostname必须唯一。 - ✅ 所有节点的时区必须统一,且时间同步误差 ≤ 10 秒。
- ✅
附录
删除冲突软件包
安装前,节点上可能已在 docker/nerdctl/containerd 环境中运行应用,或已安装与 global 集群冲突的软件,因此需要检查并卸载冲突软件包。
DANGER
- 为避免应用中断或数据丢失,请务必确认是否存在冲突软件包。发现冲突时,请制定应用切换方案并备份数据后再卸载。
- 卸载冲突软件包后,仍需检查
/usr/local/bin/等目录中是否存在其他潜在冲突的二进制文件(如与 docker、nerdctl、containerd、runc、podman、容器网络、容器运行时或 Kubernetes 相关的软件)。
以下命令供参考。
检查:
卸载:
配置 Search Domain
在 Linux 操作系统中,/etc/resolv.conf 文件用于配置 DNS 客户端的域名解析设置。search 行指定 DNS 查询的域名搜索路径。
配置要求
- 域名数量:
search行中的域名数量应小于domainCountLimit - 3(默认domainCountLimit为 32)。 - 单个域名长度: 每个域名长度不得超过 253 个字符。
- 总字符长度: 所有域名及空格的总字符数不得超过
MaxDNSSearchListChar(默认 2048)。
示例
- 域名总数为 3。
- 单个域名长度,如
domain1.com,为 11。 - 总字符长度为 35,即 11 + 11 + 11 + 2(两个空格)。
WARNING
- 如果
/etc/resolv.conf文件中的search行不满足上述限制,可能导致 DNS 查询失败或性能下降。 - 修改
/etc/resolv.conf文件前,建议先备份该文件。