将自建GPU服务器加入k8s集群做节点
前面工作总结
这篇博客是接着前几篇博客写的,我们在阿里云上做了如下工作:
- 安装了一个三节点的的K8S——基于基于rke2的K8S部署过程记录- rke2 + rancher + metallb
- 为了让服务器通过统一的IP访问外网,我们创建了一个NAT服务器——如何在阿里云上自建NAT服务器来访问外网
- 为了让本地服务器加入阿里云上的服务器,我们拆掉了 VPN中的地址转换——如何将办公室中新购买的GPU服务器接入到阿里云上部署的K8S - 如何去掉pritunl中的NAT
在《 如何将老板的游戏机接入阿里云自建K8S跑大模型(上) - 如何去掉pritunl中的NAT》,中我们只讲了如何拆掉NAT,留了一个尾巴,没讲如何将本地服务器加入到阿里云上的自建K8S,这次来讲一讲。
按装Worker节点服务
curl -sfL https://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_TYPE="agent" sh -
systemctl enable rke2-agent.service
mkdir -p /etc/rancher/rke2/
vim /etc/rancher/rke2/config.yaml
编辑配置文件,将服务器的token放到配置中
文件路径:/etc/rancher/rke2/config.yaml
server: https://192.168.10.1:9345
token: *******::server:************
启动服务
systemctl start rke2-agent.service
设置污点
为了让GPU服务器只跑需要GPU的任务,我们需要再这个节点上设置一个污点,有了污点容器默认就不会被调度到这个节点。
配通网络 (关键点)
我们使用的网络插件是 cannal
给网络插件添加容忍
让网络插件能够在这个节点运行,不然容器间的网络会有问题:
设置后,网络依然不通,本地节点的容器 和 云服务器上的容器之间的网络不通
配置网络插件
网络不通的原因:canal会在K8S节点一个 VTEP 设备,默认监听的 是 eth0
网卡,与云上的服务器通信只能使用 VPN 创建的 虚拟网卡 tun0
。
所以,必须让 VTEP 设备使用虚拟网卡tun0
。
解法:可以配置正则自动匹配:
rke2 的 canal VTEP设备 监听的默认端口是 :8472/UDP
所以,还需要在阿里云安全组上做 端口放行;修改VPN服务器所在注意的安全组,增加如下规则:
参考文章:
feat: add support for --iface-regex match interface with multi IP addresses
什么是VXLAN
gone是我开发的一个golang依赖注入框架,编写web服务器超级方便,麻烦帮忙点个赞吧?
gone的项目地址:https://github.com/gone-io/gone