K3S 部署
首先在时间的发展过程中,k8s 经过了多个时间节点,经过了多次改进,比如现在 k8s 采用 container 而非 docker 作为镜像部署。所以需要最新的部署过程请参考官方的资料文档。
在实际操作测试过程中,也不一定部署 k8s 的节点,实际上 k8s 的节点非常重,可以采用 k3s 来代替,以 Ubuntu-22.04 的云服务器作为例子:
初始化 ubuntu 节点,更新系统
sudo apt update && sudo apt upgrade -y sudo apt dist-upgrade -y安装基础工具
sudo apt install -y \ curl \ wget \ git \ vim \ nano \ htop \ tmux \ unzip \ net-tools \ iproute2 \ dnsutils \ lsof \ rsync \ software-properties-common \ apt-transport-https \ ca-certificates \ gnupg \ lsb-release配置时区和时间同步
# 设置时区(例如上海) sudo timedatectl set-timezone Asia/Shanghai # 安装并启用 NTP 时间同步 sudo apt install -y chrony sudo systemctl enable --now chrony创建普通用户
# 替换 youruser 为你自己的用户名 sudo adduser youruser sudo usermod -aG sudo youruser清理
sudo apt autoremove -y sudo apt clean如果多节点是基于公网而非内网进行的通信,需要建立一个虚拟内网让所有节点进行联通,否则 k3s 集群默认还是使用内网节点进行的通信(如果是内网则不用)
在 master 和 node 上都安装 Tailscale
curl -fsSL https://tailscale.com/install.sh | sh # 登录(按提示操作),会给一个 url,在浏览器上登录账号之后授权这个设备,之后 Tailscale 才会给一个虚拟 ip sudo tailscale up # 获取 Tailscale 分配的 IP(如 100.x.y.z) tailscale ip部署 k3s 集群
如果是公网通信,那么强制使用
Tailscale IP作为节点通信地址,使用--flannel-backend=wireguard-native可以让 Flannel 直接走 WireGuard(K3s 内置支持),性能更好且 NAT/防火墙友好在 master 上执行,设置 644 是让普通用户也可以使用 kubectl 命令,如果是生产环境不建议
而且使用
https://rancher-mirror.rancher.cn/k3s/k3s-install.sh国内镜像高速安装,官方地址应该是https://get.k3s.io在 master 上启动(假设 Tailscale IP 是
) curl -#fL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \ INSTALL_K3S_MIRROR=cn \ sh -s - \ server \ --node-ip=<master-ip> \ --advertise-address=<master-ip> \ --flannel-backend=wireguard-native \ --write-kubeconfig-mode 644查看 master 上的 token
sudo cat /var/lib/rancher/k3s/server/node-token在 nodes 上执行,假设 master 的 Tailscale IP 是
curl -#fL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \ K3S_URL=https://<master-ip>:6443 \ K3S_TOKEN=<token> \ INSTALL_K3S_MIRROR=cn \ INSTALL_K3S_EXEC="--node-ip=<node-ip> --flannel-iface=tailscale0" \ sh -
如果是内网通信,则不需要使用虚拟内网进行节点通信地址
在 master 上执行
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \ INSTALL_K3S_MIRROR=cn \ sh -s - \ server \ --flannel-backend=wireguard-native \ --write-kubeconfig-mode 644 K3S_TLS_SAN="$(curl -s ifconfig.me)" \ sh -s - --write-kubeconfig-mode 644查看 master 上的 token
sudo cat /var/lib/rancher/k3s/server/node-token在 nodes 上执行,这里的
就是内网 ip 即可 curl -#fL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | K3S_URL=https://<SERVER-IP>:6443 K3S_TOKEN=<TOKEN> INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--node-ip=100.122.211.71 --flannel-iface=tailscale0" sh -给 master、nodes 节点全都给加下载镜像的代理,具体 docker 镜像网址参考
https://mirror.kentxxq.com/image# 创建目录 sudo mkdir -p /etc/rancher/k3s # 写入镜像配置(使用中科大等国内源) sudo tee /etc/rancher/k3s/registries.yaml <<EOF mirrors: docker.io: endpoint: - "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com" - "https://docker.1ms.run" - "https://docker.kejilion.pro" - "https://docker.m.ixdev.cn" - "https://hub.mirrorify.net" - "https://d.yydy.link:2023" - "https://docker.etcd.fun" - "https://hub3.nat.tf" - "https://proxy.vvvv.ee" - "https://dockerproxy.net" gcr.io: endpoint: - "https://gcr.mirrors.ustc.edu.cn" k8s.gcr.io: endpoint: - "https://gcr.mirrors.ustc.edu.cn" ghcr.io: endpoint: - "https://ghcr.mirrors.ustc.edu.cn" EOFmaster 重启 k3s
sudo systemctl restart k3snodes 重启 agent
sudo systemctl restart k3s-agent
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。