脱机部署k3s
离线部署 K3s 文档
1. 准备工作
- 操作系统准备:确保服务器已安装好基础操作系统(Ubuntu、CentOS 等)。
- 关闭防火墙或放通端口:建议关闭防火墙或确保 6443、10250 等端口已开放。
- 准备离线资源文件:
下载地址
-
k3s-airgap-images-arm64.tar
(K3s 离线镜像包) -
k3s-arm64
(K3s 二进制文件) -
nginx.tar
(需要导入的镜像文件,示例中为 nginx) -
确认网络信息:
- 当前节点 IP(示例中为 10.37.129.7)
- 默认网关 IP(示例中为 10.37.129.1)
2. 配置网络路由(针对虚拟机 Host-Only 的情况)
sudo ip route add default via 10.37.129.1
3. 准备 K3s 离线镜像目录
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp ./k3s-airgap-images-arm64.tar /var/lib/rancher/k3s/agent/images/
4. 安装 K3s 二进制文件
sudo cp k3s-arm64 /usr/local/bin/k3s
sudo chmod +x /usr/local/bin/k3s
5. 运行 K3s 安装脚本
INSTALL_K3S_EXEC="--flannel-backend=host-gw \--cluster-cidr=172.20.0.0/16 \--service-cidr=172.21.0.0/16 \--node-ip=10.37.129.7" \INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh
脚本下载地址
6. 导入额外镜像到 containerd
sudo ctr -n k8s.io images import nginx.tar
创建 nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginxlabels:app: nginx
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestimagePullPolicy: IfNotPresentports:- containerPort: 80volumeMounts:- name: mydiskmountPath: /usr/share/nginx/htmlvolumes:- name: mydiskhostPath:path: /data/nginx-htmltype: DirectoryOrCreate---
apiVersion: v1
kind: Service
metadata:name: nginx
spec:selector:app: nginxtype: NodePortports:- port: 80targetPort: 80nodePort: 30080
运行服务
kubectl apply -f nginx.yaml
7. 验证服务状态与集群健康
systemctl status k3s## 查看Pods
kubectl get pods -A## 查看事件
kubectl events --for pod/coredns-645bdb8675-4wxvd -n kube-system
附加说明
- 本文档基于 ARM64 架构,如需其他架构,请替换对应二进制文件和镜像包。
- 离线镜像包和二进制文件需提前准备。
- 网络参数根据实际环境调整。