概述
节点是集群的基本组成元素。添加至集群的节点,既可以是虚拟机,也可以是物理服务器。每个节点都包含运行 Pod 所需要的基本组件,包括 Kubelet、Kube-proxy 、Container Runtime 等。
拥有平台管理权限的用户可管理集群下的节点。
注意:不支持为接入集群添加节点,或删除接入集群的节点。
节点类型
- 
控制节点:负责运行集群中的 kube-apiserver、kube-scheduler、kube-controller-manager、etcd 等组件、容器网络以及平台的部分管理组件。 - 
当允许应用部署在控制节点上时,控制节点可同时作为计算节点使用。 
- 
集群上至少需要有 1 个控制节点,且控制节点个数只能为 1、3、5。 
- 
控制节点的个数大于等于 3 时,集群具有多备容灾能力,为高可用集群。 
 
- 
- 
计算节点:负责承载运行在集群上的业务容器组。通常可根据业务量规划集群中所需计算节点个数。 
Linux 节点可用性检查
若您需要自建集群,请先参照下表检查集群中所有节点的相关配置是否满足条件。需确保必备条件均已满足,否则可能会导致集群部署失败。
| 检查项 | 必备条件 | 
|---|---|
| SSH 连接性检查 | 检查 SSH 的密码或者私钥是否正确;SSH 链接超时错误;SSH 链接其它错误。 | 
| 主机 SSH 用户权限检查 | 主机的用户名需为 ROOT,且密码正确;或者无需密码的 SUDO 用户。 | 
| 检查 SSHD | /etc/ssh/sshd_config配置文件中 UseDNS 和 UsePAM 参数需为 no。 | 
| 操作系统及内核版本 | 参考 支持的操作系统及 CPU 型号 。 | 
| 内核模块 | 模块 iptable_nat、br_netfilte、nf_conntrack存在。 | 
| 内核网络模块 | 网络内核模块要求: | 
| 内核参数 | 需要配置 ipv6.disable=0。 | 
| 检查系统工具 | 主机上必须存在的系统工具有: ip,ss,tar,swapoff,modprobe,sysctl,md5sum,scp和sftp二者中必须包含其中一个。 | 
| 访问 tmp 目录 | 账号必须有权限在 /tmp目录下执行ls和cat命令。 | 
| GPU 设备 | 使用 GPU 设备时检查设备是否存在。 | 
| CPU / 内存 | CPU 至少 2 核;内存至少 2 G。 | 
| 检查主机名称 | 获取主机的 hostname,只能以 a-z、0-9开头或结尾,由a-z、0-9、-、.组成(不含连用的-、.),最多 36 个字符。且任意两台集群的 hostname 不允许相同。 | 
| 检查 kubelet 服务 | 不能存在 /etc/systemd/system/kubelet.service文件。 | 
| 交换分区 | 关闭。 | 
| ETCD 目录 | 数据目录为空。 | 
| 防火墙 | 关闭。 | 
| SELinux | 关闭。 | 
| Apparmor | 1. Apparmor 服务未关闭,并且 /sys/module/apparmor/parameters/enabled文件不存在或存在且为Y。2. 关闭 Apparmor 服务。 | 
| 默认路由 | 服务器有 default 路由或指向 0.0.0.0这个地址的路由。 | 
| 端口是否被占用 | 检查以下监听端口是否被占用: | 
| 网卡 | 集群和主机配置的网卡都存在。 | 
| 硬件架构 | 节点的硬件架构(X86、ARM)必须与集群的硬件架构相同。 | 
| /etc/hosts | hosts 文件中无重复 IP。 | 
| 时区 | 所有主机时区统一。 | 
| 主机时间 | 所有主机间同步误差小于 10 秒。 | 
| IP 地址 | IP 地址必须存在。如果开启了 ipv6 地址,ipv6 地址也必须存在,且满足以下条件: 127.0.0.1、0:0:0:0:0:0:0:0或::。224.0.0.0到239.255.255.255、FF开头的 ipv6 地址。169.254.0.0/16*地址块、fe80::/10*地址块。255.255.255.255。 | 
| IP 段 | Docker 所需网段 172.16.x.x - 172.32.x.x的 IP  未被占用。若该网段的 IP 已被占用且无法更改,请修改所有节点上的 Docker 的配置文件,增加 bip参数,避免 Docker 使用被占用 IP。 | 
| 节点联通性 | 节点及其 SSH 端口能够正常访问。 | 
| 节点是否能访问平台 | 节点能够通过平台地址访问平台。 | 
| 节点是否能访问平台镜像仓库 | 节点能够访问平台的镜像仓库。 | 
| 节点 IP 是否在已配置的任一网段中 | 对于默认子网为非 underlay 场景下,节点 IP 不在已配置的任一网段(默认子网网段、容器网段、Service 网段、Join 网段)中。 | 
| 检查 DNS | /etc/resolv.conf文件必须存在,并且有 nameserver 的配置项,并且不允许配置 127 开头的地址。 | 
| 检查 pki 目录 | pki 目录能为空或者不存在。 | 
| 检查 cri 目录空间 | 检查指定目录 /var/lib/containerd或/var/lib当前可用大小。 | 
| 检查超时 | 检查默认超时时间是 110s 左右。 | 
| 检查不能存在的目录 | /var/log/pods目录不能存在。 | 
| /usr/bin 服务 | “docker”, “containerd”, “runc” 这些服务如果存在,必须在 /usr/bin目录下。 | 
支持的操作系统及 CPU 型号
| 架构 | CPU 型号 | 支持的操作系统 | 内核版本 | 备注(可补充内核版本) | 
|---|---|---|---|---|
| ARM | 鲲鹏 920 | openEuler 20.03 | 4.19.90-2112.8.0.0131.oe1.aarch64 | |
| 银河麒麟 OS V10 SP2 | 4.19.90-17.ky10.aarch64 | Kylin Linux Advanced Server release V10 (Sword) | ||
| UOS 20 | 4.19.0-arm64-server | UnionTech OS Server 20 Enterprise | ||
| x86 | - | openEuler 20.03 | 4.19.90-2112.8.0.0131.oe1.x86_64 | |
| Tlinux 2.4 | 4.14.105-19-0016 | 不支持IPv6 | ||
| Redhat 7.8 | 3.10.0-1127.el7.x86_64 | |||
| Ubuntu 20.04 | 5.4.0-100-generic | |||
| CentOS 7.6、7.7、7.8、7.9 | 3.10.0-1127 <= 内核版本 <3.11 |