本节介绍如何添加 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.json

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

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

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

    ./kk add nodes --control-plane node1 --worker node2 -i inventory.yaml -c kkv4-config.json --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

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