離線部署 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 架構,如需其他架構,請替換對應二進制文件和鏡像包。
- 離線鏡像包和二進制文件需提前準備。
- 網絡參數根據實際環境調整。