连接 Kubernetes 主节点和节点的最佳选择是使用专用网络。
如何设置 K3S 主节点和单节点集群:
先决条件:
- 所有机器都需要在同一个专用网络内。例如 192.168.0.0/24
- 所有机器都需要相互通信。您可以使用以下命令对它们执行 ping 操作:
$ ping IP_ADDRESS
在此示例中,有 2 个虚拟机:
- 主节点 (k3s),私有 IP 为 10.156.0.13
- 私有 IP 为 10.156.0.8 的工作节点 (k3s-2)
建立虚拟机之间的连接
最重要的是检查机器是否可以相互连接。正如我所说,最好的方法就是 ping 它们。
供应主节点
要在主节点上安装 K3S,您需要从 root 用户调用命令:
$ curl -sfL https://get.k3s.io | sh -
此命令的输出应如下所示:
[INFO] Finding latest release
[INFO] Using v0.10.2 as release
[INFO] Downloading hash https://github.com/rancher/k3s/releases/download/v0.10.2/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/rancher/k3s/releases/download/v0.10.2/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3s
检查主节点是否正常工作:
$ kubectl get nodes
上述命令的输出应该是这样的:
NAME STATUS ROLES AGE VERSION
k3s Ready master 2m14s v1.16.2-k3s.1
使用以下命令从主节点检索IMPORTANT_TOKEN :
$ cat /var/lib/rancher/k3s/server/node-token
此令牌将用于将代理节点连接到主节点。复制它
将代理节点连接到主节点
确保节点可以与主节点通信。之后,您可以从 root 用户调用命令:
$ curl -sfL https://get.k3s.io | K3S_URL=https://MASTER_NODE_IP:6443 K3S_TOKEN=IMPORTANT_TOKEN sh -
将您的 IMPORTANT_TOKEN 粘贴到此命令中。
在这种情况下,MASTER_NODE_IP 是 10.156.0.13。
此命令的输出应如下所示:
[INFO] Finding latest release
[INFO] Using v0.10.2 as release
[INFO] Downloading hash https://github.com/rancher/k3s/releases/download/v0.10.2/sha256sum-amd64.txt
[INFO] Downloading binary https://github.com/rancher/k3s/releases/download/v0.10.2/k3s
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-agent-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s-agent.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s-agent.service
[INFO] systemd: Enabling k3s-agent unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s-agent.service → /etc/systemd/system/k3s-agent.service.
[INFO] systemd: Starting k3s-agent
测试
在主节点上调用命令以检查代理是否连接成功:
$ kubectl get nodes
您之前添加的节点应该在此处可见:
NAME STATUS ROLES AGE VERSION
k3s Ready master 15m v1.16.2-k3s.1
k3s-2 Ready <none> 3m19s v1.16.2-k3s.1
上面的输出得出的结论是配置已正确进行。
EDIT1:从这一点开始,您可以部署 pod 并将它们公开到公共 IP 空间。
编辑2:
您可以在公共 IP 网络上连接 K3S 主节点和工作节点,但有一些先决条件。
先决条件:
- 主节点需要打开 6443/TCP 端口
- 确保主节点已保留静态 IP 地址
- 确保将防火墙规则配置为仅允许通过工作节点的 IP 地址进行访问(节点的静态 IP 地址可以对此有所帮助)
主节点供应
主节点部署同上。唯一的区别是你需要得到他的公共IP地址。
您的主节点不需要在以下命令中显示您的公共 IP:
供应工作节点
工作节点的部署不同之处仅在于将主节点的IP地址从私有IP地址更改为公共IP地址。从 root 帐户调用此命令:
curl -sfL https://get.k3s.io | K3S_URL=https://PUBLIC_IP_OF_MASTER_NODE:6443 K3S_TOKEN=IMPORTANT_TOKEN sh -
测试集群
要确保节点正确连接,您需要调用命令:
$ kubectl get nodes
输出应该是这样的:
NAME STATUS ROLES AGE VERSION
k3s-4 Ready <none> 68m v1.16.2-k3s.1
k3s-1 Ready master 69m v1.16.2-k3s.1
k3s-3 Ready <none> 69m v1.16.2-k3s.1
k3s-2 Ready <none> 68m v1.16.2-k3s.1
所有节点都应该在这里可见。