Tailscale+k3s构建跨云集群

默认分类 · 2023-08-16

之前介绍了Tailscale+Headscale的异地组网方案,最终要实现的目标就是构建起一套跨云的k8s集群,测试过rke的k8s和Tailscale的组合,会有一些奇奇怪怪的问题,导致线下没有公网ip的机器产生几十m/s的异常上传流量,看到网上有大佬做了Tailscale+k3s的集群构建,跟着大佬的脚步搭一个试试。

准备工作

  • 部署好Tailscale并完成组网
  • 将集群各节点的主机名和Tailscale-ip写入到各节点的/etc/hosts文件中
  • Docker的安装参考之前的rancher+k3s的教程,这里不再赘述了

Master节点部署

  1. 下载k3s的安装脚本

    curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh > ./k3s-install.sh
    chmod +x ./k3s-install.sh
  2. 配置环境变量

    TAILSCALE_IP=<Tailscale网卡对应的IP>
    EXPOSE_IP=<API Server额外的监听地址>
  3. 执行安装脚本
    ❗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节点部署

  1. 下载k3s的安装脚本

    curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh > ./k3s-install.sh
    chmod +x ./k3s-install.sh
  2. 获取集群Token
    在Master节点上执行以下命令

    cat /var/lib/rancher/k3s/server/node-token
  3. 配置环境变量

    K3S_SERVER=https://<master节点 Tailscale网卡对应的IP>:6443
    MASTER_NODE_TOKEN=<k3s master节点token>
    TAILSCALE_IP=<Tailscale网卡对应的IP>
  4. 执行安装脚本

    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 - 
Theme Jasmine by Kent Liao