本节介绍如何添加 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_planekube_workeretcd)。

  1. 确认 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
  1. 执行以下命令添加节点:

    ./kk add nodes -i inventory.yaml -c config.yaml

    KubeKey 会自动识别 inventory.yaml 中已定义但尚未加入集群的节点,并将其安装为对应分组的角色。

方式二:通过命令行参数指定分组

此方式只需在 inventory.yaml 中定义节点的连接信息,无需事先分配到分组。

  1. 确认 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
  1. 执行以下命令添加节点并指定角色:

    ./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 文件。

参数说明

参数 描述

-i, --inventory

Inventory 文件路径,定义节点连接信息

-c, --config

Config 文件路径,定义集群关键配置

--with-kubernetes

指定 Kubernetes 版本,默认使用集群当前版本

--control-plane

指定要添加为控制平面节点的节点列表

--worker

指定要添加为工作节点的节点列表

--etcd

指定要添加为 etcd 节点的节点列表

--override

执行成功后覆盖更新 inventory.yaml 文件

-a, --artifact

离线包路径,离线环境时使用