之前介绍了Tailscale+Headscale的异地组网方案,最终要实现的目标就是构建起一套跨云的k8s集群,测试过rke的k8s和Tailscale的组合,会有一些奇奇怪怪的问题,导致线下没有公网ip的机器产生几十m/s的异常上传流量,看到网上有大佬做了Tailscale+k3s的集群构建,跟着大佬的脚步搭一个试试。
准备工作
- 部署好Tailscale并完成组网
- 将集群各节点的主机名和Tailscale-ip写入到各节点的/etc/hosts文件中
- Docker的安装参考之前的rancher+k3s的教程,这里不再赘述了
Master节点部署
下载k3s的安装脚本
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh > ./k3s-install.sh chmod +x ./k3s-install.sh
配置环境变量
TAILSCALE_IP=<Tailscale网卡对应的IP> EXPOSE_IP=<API Server额外的监听地址>
执行安装脚本
❗Rancher不同版本的控制台对下游的k3s集群有版本要求,参考:支持矩阵cat ./k3s-install.sh | \ INSTALL_K3S_VERSION=v1.20.15+k3s1 \ INSTALL_K3S_MIRROR=cn \ INSTALL_K3S_EXEC="server \ --node-ip $TAILSCALE_IP \ --advertise-address $TAILSCALE_IP \ --tls-san $EXPOSE_IP \ --node-external-ip $TAILSCALE_IP \ --flannel-iface tailscale0 \ --docker" \ sh -
Worker节点部署
下载k3s的安装脚本
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh > ./k3s-install.sh chmod +x ./k3s-install.sh
获取集群Token
在Master节点上执行以下命令cat /var/lib/rancher/k3s/server/node-token
配置环境变量
K3S_SERVER=https://<master节点 Tailscale网卡对应的IP>:6443 MASTER_NODE_TOKEN=<k3s master节点token> TAILSCALE_IP=<Tailscale网卡对应的IP>
执行安装脚本
cat k3s-install.sh | \ INSTALL_K3S_VERSION=v1.20.15+k3s1 \ INSTALL_K3S_MIRROR=cn \ INSTALL_K3S_EXEC="agent \ --server $K3S_SERVER \ --token $MASTER_NODE_TOKEN \ --node-ip $TAILSCALE_IP \ --node-external-ip $TAILSCALE_IP \ --flannel-iface tailscale0 \ --docker" \ sh -