添加新节点

    本教程演示了如何将新节点添加到单节点集群。若要水平扩展多节点集群,操作步骤基本相同。

    1. 使用 KubeKey 检索集群信息。以下命令会创建配置文件 ()。

      备注

    2. 在配置文件中,将新节点的信息放在 hostsroleGroups 之下。该示例添加了两个新节点(即 node1node2)。这里的 master1 是现有节点。

      1. ···
      2. spec:
      3. hosts:
      4. - {name: master1, address: 192.168.0.3, internalAddress: 192.168.0.3, user: root, password: [email protected]}
      5. - {name: node1, address: 192.168.0.4, internalAddress: 192.168.0.4, user: root, password: [email protected]}
      6. - {name: node2, address: 192.168.0.5, internalAddress: 192.168.0.5, user: root, password: [email protected]}
      7. roleGroups:
      8. etcd:
      9. - master1
      10. master:
      11. - master1
      12. worker:
      13. - node1
      14. - node2
      15. ···

      备注

      • 有关更多配置文件的信息,请参见编辑配置文件

      • 添加新节点时,请勿修改现有节点的主机名。

      • 用自己的主机名替换示例中的主机名。

    3. 安装完成后,您将能够在 KubeSphere 的控制台上查看新节点及其信息。在集群管理页面,选择左侧菜单节点下的集群节点,或者执行命令 kubectl get node 以检查更改。

      1. NAME STATUS ROLES AGE VERSION
      2. master1 Ready master,worker 20d v1.17.9
      3. node1 Ready worker 31h v1.17.9

    添加主节点的步骤与添加工作节点的步骤大体一致,不过您需要为集群配置负载均衡器。您可以使用任何云负载均衡器或者硬件负载均衡器(例如 F5)。另外,Keepalived 和 、或者 Nginx 也是创建高可用集群的替代方案。

    1. 使用 KubeKey 创建配置文件。

    2. 打开文件,可以看到一些字段预先填充了值。将新节点和负载均衡器的信息添加到文件中。以下示例供您参考:

      1. apiVersion: kubekey.kubesphere.io/v1alpha1
      2. kind: Cluster
      3. metadata:
      4. name: sample
      5. spec:
      6. hosts:
      7. # You should complete the ssh information of the hosts
      8. - {name: master1, address: 172.16.0.2, internalAddress: 172.16.0.2, user: root, password: Testing123}
      9. - {name: master2, address: 172.16.0.5, internalAddress: 172.16.0.5, user: root, password: Testing123}
      10. - {name: master3, address: 172.16.0.6, internalAddress: 172.16.0.6, user: root, password: Testing123}
      11. - {name: worker1, address: 172.16.0.3, internalAddress: 172.16.0.3, user: root, password: Testing123}
      12. - {name: worker2, address: 172.16.0.4, internalAddress: 172.16.0.4, user: root, password: Testing123}
      13. - {name: worker3, address: 172.16.0.7, internalAddress: 172.16.0.7, user: root, password: Testing123}
      14. roleGroups:
      15. etcd:
      16. - master1
      17. - master2
      18. - master3
      19. master:
      20. - master1
      21. - master2
      22. worker:
      23. - worker1
      24. - worker2
      25. controlPlaneEndpoint:
      26. # If loadbalancer is used, 'address' should be set to loadbalancer's ip.
      27. domain: lb.kubesphere.local
      28. address: 172.16.0.253
      29. port: "6443"
      30. kubernetes:
      31. version: v1.21.5
      32. imageRepo: kubesphere
      33. clusterName: cluster.local
      34. proxyMode: ipvs
      35. masqueradeAll: false
      36. maxPods: 110
      37. nodeCidrMaskSize: 24
      38. network:
      39. plugin: calico
      40. kubePodsCIDR: 10.233.64.0/18
      41. kubeServiceCIDR: 10.233.0.0/18
      42. registry:
      43. privateRegistry: ""
    3. 请注意 controlPlaneEndpoint 字段。

      • 负载均衡器的域名默认为 lb.kubesphere.local,用于内部访问。您可以按需进行更改。
      • 大多数情况下,您需要为 address 字段提供负载均衡器的私有 IP 地址。然而,不同的云厂商可能为负载均衡器进行不同的配置。例如,如果您在阿里云上配置服务器负载均衡 (SLB),该平台会为 SLB 分配一个公共 IP 地址,这意味着您需要为 address 字段指定公共 IP 地址。
      • port 字段指代 api-server 的端口。