k3s 离线部署流程(内网环境)
一、准备工作
1. 下载 k3s 安装相关文件(在有外网的跳板机上)
- k3s 安装脚本
curl -sfL https://get.k3s.io -o install_k3s.sh
- k3s 二进制文件
curl -LO https://github.com/k3s-io/k3s/releases/download/<k3s版本>/k3s
- k3s 镜像包
wget https://github.com/k3s-io/k3s/releases/download/<k3s版本>/k3s-airgap-images-amd64.tar.gz
2. 导入镜像并推送到内网 Harbor 仓库(如有)
- 登录 Harbor
- 导入镜像
docker load -i k3s-airgap-images-amd64.tar.gz
- 标记并推送到 Harbor(可选)
3. 打包所有安装文件
tar czvf k3s_offline_package.tar.gz install_k3s.sh k3s k3s-airgap-images-amd64.tar.gz
二、文件分发
- 使用 scp 或 ansible 将安装包分发到所有目标节点
三、节点初始化
1. 解压安装包
tar xzvf k3s_offline_package.tar.gz -C /tmp/
2. 导入镜像
docker load -i /tmp/k3s-airgap-images-amd64.tar.gz
3. 分发 k3s 二进制和安装脚本
cp /tmp/k3s /usr/local/bin/k3s
cp /tmp/install_k3s.sh /usr/local/bin/install_k3s.sh
chmod +x /usr/local/bin/k3s /usr/local/bin/install_k3s.sh
4. 配置镜像仓库(可选)
在 /etc/rancher/k3s/registries.yaml
配置内网 Harbor 仓库:
mirrors:"<内网仓库地址>":endpoint:- "https://<内网仓库地址>"
四、集群安装
1. 安装 master 节点
INSTALL_K3S_SKIP_DOWNLOAD=true \
K3S_KUBECONFIG_MODE="644" \
INSTALL_K3S_EXEC="server --docker" \
/usr/local/bin/install_k3s.sh
2. 获取集群 token
cat /var/lib/rancher/k3s/server/node-token
3. 安装 worker 节点
INSTALL_K3S_SKIP_DOWNLOAD=true \
K3S_URL="https://<master节点地址>:6443" \
K3S_TOKEN="<master节点token>" \
INSTALL_K3S_EXEC="agent --docker" \
/usr/local/bin/install_k3s.sh
五、常见问题与排查
- 节点
NotReady
:检查 Docker 是否启动、镜像是否导入、网络是否畅通。 - k3s-agent 启动失败:确认
/usr/local/bin/k3s
存在且有执行权限,Docker 服务已启动。 - 镜像拉取失败:检查 registries.yaml 配置和 Harbor 仓库访问权限。
六、集群验证
在 master 节点执行:
kubectl get node
所有节点 Ready
即部署成功。