温馨提示×

centos k8s部署能离线吗

小樊
54
2026-07-09 14:17:56
栏目: 智能运维

可以的,CentOS 上部署 Kubernetes 完全支持离线部署,但需要提前准备好离线资源。下面给你一个可落地的离线部署方案说明,从「能不能」到「怎么做」。


一句话结论

可以离线部署
前提:提前在有网环境下载好所有依赖和镜像


一、离线部署需要准备哪些东西?

1️⃣ 系统 RPM 包(CentOS)

K8s 依赖以下系统组件(不一定全部,但常见):

  • dockercontainerd
  • kubelet
  • kubeadm
  • kubectl
  • socatconntrackipsetebtablesethtool

✅ 离线方案:

  • 使用 yum downloadonly
  • 或提前准备好 .rpm
  • 或自建本地 yum 仓库
yum install --downloadonly --downloaddir=/tmp/rpms \
  kubelet kubeadm kubectl containerd

2️⃣ Kubernetes 镜像(最关键)

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

✅ 离线方案:

  • 有网机器 pull + save
docker pull k8s.gcr.io/kube-apiserver:v1.28.0
docker save -o kube-apiserver.tar k8s.gcr.io/kube-apiserver:v1.28.0
  • 离线机器 load
docker load -i kube-apiserver.tar

3️⃣ 网络插件镜像(CNI)

例如 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


4️⃣ 内核模块 & 系统配置(无网也 OK)

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 离线(最常见)

适合:

  • 企业内网
  • 生产环境
  • 节点数量中等

流程:

  1. 有网机器准备:
    • rpm
    • 镜像
    • kubeadm 配置文件
  2. U 盘 / 内网仓库拷贝
  3. 离线机器:
    • 安装 rpm
    • 导入镜像
    • kubeadm init
kubeadm init --image-repository=本地仓库或默认

✅ 方式二:二进制离线部署(高级)

适合:

  • 完全无网
  • 高度定制
  • 安全合规要求高

特点:

  • 不依赖 yum
  • 手动部署 kubelet / apiserver / etcd

✅ 方式三:使用离线制品(最省事)

一些工具已帮你打包好:

工具 说明
KubeKey(KubeSphere) 支持离线包
sealos 离线集群一键部署
Rancher RKE 离线支持好

✅ 推荐 sealos / KubeKey


三、离线部署常见坑

❌ 镜像版本不一致
❌ 忘记导入 pause / etcd
❌ containerd 与 kubelet 版本不匹配
❌ CNI 没离线部署
❌ 内核参数未开启(即使离线也会失败)


四、CentOS 特别注意事项

  • CentOS 7:
    • 内核较老,建议 ≥ 3.10.0-1160
  • CentOS 8 / Stream:
    • 官方已停止维护,建议迁移 Rocky / Alma
  • 推荐:
    • Rocky Linux 8/9
    • AlmaLinux

五、你现在的情况适合哪种?

你可以直接告诉我:

1️⃣ CentOS 版本
2️⃣ K8s 版本
3️⃣ 单节点 / 多节点
4️⃣ 是否允许临时联网一次

我可以给你: ✅ 一份完整离线部署清单
rpm + 镜像清单
一步一步命令脚本

0