RingLinkRingLink
Kubernetes

借助 RingLink 创建跨多区域的 kubernetes 集群

Kubernetes 集群通常所有的节点都在同一个区域或者同一个数据中心内,这样可以确保低延迟和高带宽的网络连接。

然而,在某些情况下,您可能需要跨多个区域或数据中心部署 Kubernetes 集群,例如 HomeLab 等场景。

方案设计

  • 使用 RingLink 将所有的节点组建成一个二层(L2)的虚拟局域网。
  • 所有的节点都会有一个虚拟的局域网 IP 地址。
  • RingLink 会自动处理跨区域的网络连接,确保所有节点可以互相连接。
  • 在此虚拟局域网中部署 Kubernetes 集群。

部署步骤

接下来将演示如何使用 RingLink 创建一个跨多个区域的 Kubernetes 集群。 为了方便演示,在部署 Kubernetes 集群中,将使用 kubeadm 工具来简化操作,您也可以使用其他工具如 k3smicrok8s 等。

首先,需要在所有需要作为 Kubernetes 节点的主机上安装并配置 RingLink 客户端。 为了方便批量的安装和部署,将使用 Config Key 的方式来部署 RingLink 客户端。

打开 RingLink Dashboard

在左侧导航栏中进入想要使用的网络。

在右侧点击 添加 Linux 服务器 按钮

启用允许脚本用于多台设备

点击生成脚本,复制生成的内容

在所有需要作为 Kubernetes 节点的主机上执行一键安装脚本。 这将会安装 RingLink 客户端并连接到指定的网络。

检查是否安装成功

在所有主机上执行以下命令,检查 RingLink 客户端是否安装成功并连接到网络:

ringlink-cli status

如果安装成功,您应该会看到类似以下的输出:

Running f8e6898c63
Super Layer: off
Connected to:
  53cd98d2 172.29.0.1/24

部署 Kubernetes 集群

在所有主机上部署 RingLink 客户端并连接到同一个网络后,就可以开始部署 Kubernetes 集群了。

假设我们要部署一个三节点的 Kubernetes 集群,其中一个节点作为 Master 节点,另外两个节点作为 Worker 节点。

noderoleRingLink IP
node1Master172.29.0.1
node2Worker172.29.0.2
node3Worker172.29.0.3

部署 Master 节点

在 Master 节点上执行以下命令来初始化 Kubernetes 集群:

在 Master 节点上初始化 Kubernetes 集群:

sudo kubeadm init --apiserver-advertise-address=172.29.0.1

等待初始化完成后,获取 kubeconfig

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

获取加入集群的 token 和命令

kubeadm token create --print-join-command

记下输出的命令,稍后在 Worker 节点上使用。

部署 Worker 节点

在每个 Worker 节点上执行上一步获取到的命令来加入集群,例如:

kubeadm join 172.29.0.1:6443 --token 1p806r.a43b0d156o5519fg --discovery-token-ca-cert-hash sha256:0564da81298778267

验证集群状态

在 Master 节点上执行以下命令来查看集群状态:

kubectl get nodes -o wide

常见问题

如果在部署过程中遇到问题,可以参考以下常见问题及解决方案:

相关资源