添加集群节点
本节介绍如何添加 KubeSphere 集群节点。
节点添加过程中将用到开源工具 KubeKey 的 v4.x 版本。有关 KubeKey 的更多信息,请访问 GitHub KubeKey 仓库。
| 说明 |
|---|
本节介绍的节点添加方式仅适用于 Kubernetes 通过 KubeKey 安装的场景。如果您的 Kubernetes 不是通过 KubeKey 安装,请参阅 Kubernetes 官方文档添加节点。 |
前提条件
-
集群节点的操作系统和版本须为 Ubuntu 18.04、Ubuntu 20.04、Ubuntu 22.04、Ubuntu 24.04、Debian 10、Debian 11、CentOS 8、AlmaLinux 9.0 或 Kylin v10。多台服务器的操作系统可以不同。关于其它操作系统和版本支持,请咨询青云科技官方解决方案专家或交付服务专家。
-
为确保集群具有足够的计算和存储资源,建议新增节点配置至少 8 个 CPU 核心,16 GB 内存和 200 GB 磁盘空间。除此之外,建议在每台集群节点的 /var/lib/docker(对于 Docker)或 /var/lib/containerd(对于 containerd) 目录额外挂载至少 200 GB 磁盘空间用于存储容器运行时数据。
-
如果添加控制平面节点,您需要提前为集群配置高可用性。如果您使用负载均衡器,请确保负载均衡器监听所有控制平面节点的 6443 端口。有关更多信息,请参阅配置高可用性。
-
新增节点上已安装 socat、conntrack、tar、ebtables 和 ipset。
注意: 当前 Web Installer 暂不支持添加集群节点,请通过命令行操作。
获取当前集群配置文件
如果集群是通过 Web Installer 安装的,可通过以下方式获取当前集群的配置文件。
获取 inventory.yaml
cp kubekey/runtime/kubekey.kubesphere.io/v1/inventories/default/default.yaml kkv4-inventory.yaml
获取 config.yaml
cat schema/config.json | jq '{spec: .["kubernetes.json"]}' > kkv4-config.json
方式一:通过 inventory.yaml 分组添加
此方式要求待添加的节点已预先在 inventory.yaml 中定义好连接信息,并分配到对应的分组(如 kube_control_plane、kube_worker、etcd)。
-
确认
inventory.yaml中已包含新节点的连接信息和分组配置。inventory.yaml 示例:
spec:
hosts:
node1:
connector:
type: ssh
host: 192.168.1.101
port: 22
user: root
password: 123456
groups:
kube_control_plane:
hosts:
- localhost
- node1
kube_worker:
hosts:
- localhost
- node1
etcd:
hosts:
- localhost
-
执行以下命令添加节点:
./kk add nodes -i inventory.yaml -c config.yamlKubeKey 会自动识别
inventory.yaml中已定义但尚未加入集群的节点,并将其安装为对应分组的角色。
方式二:通过命令行参数指定分组
此方式只需在 inventory.yaml 中定义节点的连接信息,无需事先分配到分组。
-
确认
inventory.yaml中已定义待添加节点的连接信息。inventory.yaml 示例:
spec:
hosts:
node1:
connector:
type: ssh
host: 192.168.1.101
port: 22
user: root
password: 123456
node2:
connector:
type: ssh
host: 192.168.1.102
port: 22
user: root
password: 123456
-
执行以下命令添加节点并指定角色:
./kk add nodes --control-plane node1 --worker node2 -i inventory.yaml -c config.yaml --override离线环境提示: 在离线环境中,可以添加
--set download.fetch=false参数,禁止从互联网下载资源。-
--control-plane:指定作为控制平面节点的主机名列表。 -
--worker:指定作为工作节点的主机名列表。 -
--etcd:指定作为 etcd 节点的主机名列表。 -
--override:执行成功后,自动更新inventory.yaml文件。
-
参数说明
| 参数 | 描述 |
|---|---|
|
Inventory 文件路径,定义节点连接信息 |
|
Config 文件路径,定义集群关键配置 |
|
指定 Kubernetes 版本,默认使用集群当前版本 |
|
指定要添加为控制平面节点的节点列表 |
|
指定要添加为工作节点的节点列表 |
|
指定要添加为 etcd 节点的节点列表 |
|
执行成功后覆盖更新 inventory.yaml 文件 |
|
离线包路径,离线环境时使用 |