可以的,CentOS 上部署 Kubernetes 完全支持离线部署,但需要提前准备好离线资源。下面给你一个可落地的离线部署方案说明,从「能不能」到「怎么做」。
✅ 可以离线部署
❗ 前提:提前在有网环境下载好所有依赖和镜像
K8s 依赖以下系统组件(不一定全部,但常见):
docker 或 containerdkubeletkubeadmkubectlsocat、conntrack、ipset、ebtables、ethtool✅ 离线方案:
.rpm 包yum install --downloadonly --downloaddir=/tmp/rpms \
kubelet kubeadm kubectl containerd
kubeadm 部署时必须拉取镜像,离线必须提前准备。
k8s.gcr.io/kube-apiserver:v1.28.x
k8s.gcr.io/kube-controller-manager:v1.28.x
k8s.gcr.io/kube-scheduler:v1.28.x
k8s.gcr.io/kube-proxy:v1.28.x
k8s.gcr.io/pause:3.9
k8s.gcr.io/etcd:3.5.x
k8s.gcr.io/coredns/coredns:v1.10.x
✅ 离线方案:
docker pull k8s.gcr.io/kube-apiserver:v1.28.0
docker save -o kube-apiserver.tar k8s.gcr.io/kube-apiserver:v1.28.0
docker load -i kube-apiserver.tar
例如 Calico / Flannel / Cilium
docker.io/calico/node:v3.26.x
docker.io/calico/cni:v3.26.x
docker.io/calico/kube-controllers:v3.26.x
✅ 同样需要 pull → save → load
modprobe br_netfilter
modprobe ip_vs
modprobe ip_vs_rr
cat <<EOF > /etc/modules-load.d/k8s.conf
br_netfilter
ip_vs
ip_vs_rr
EOF
适合:
流程:
kubeadm initkubeadm init --image-repository=本地仓库或默认
适合:
特点:
一些工具已帮你打包好:
| 工具 | 说明 |
|---|---|
| KubeKey(KubeSphere) | 支持离线包 |
| sealos | 离线集群一键部署 |
| Rancher RKE | 离线支持好 |
✅ 推荐 sealos / KubeKey
❌ 镜像版本不一致
❌ 忘记导入 pause / etcd
❌ containerd 与 kubelet 版本不匹配
❌ CNI 没离线部署
❌ 内核参数未开启(即使离线也会失败)
你可以直接告诉我:
1️⃣ CentOS 版本
2️⃣ K8s 版本
3️⃣ 单节点 / 多节点
4️⃣ 是否允许临时联网一次
我可以给你:
✅ 一份完整离线部署清单
✅ rpm + 镜像清单
✅ 一步一步命令脚本