温馨提示×

CentOS能离线部署K8s吗

小樊
47
2026-08-20 01:35:29
栏目: 智能运维

是的,CentOS 完全可以在离线环境下部署 Kubernetes(K8s),这是企业内网、涉密环境或生产环境的常见需求。下面给你一个可落地的思路和步骤,从“能不能”到“怎么做”。


一、结论先行

可以离线部署 K8s
✅ 支持 CentOS 7 / CentOS 8 Stream
✅ 常见方式:

  • kubeadm + 离线 RPM + 离线镜像
  • 二进制方式(最复杂,不推荐)
  • Rancher / KubeKey(部分支持离线)

二、离线部署的核心思路

K8s 离线部署本质是 解决 3 件事

  1. 软件包(RPM)离线

    • kubeadm
    • kubelet
    • kubectl
    • containerd / docker
    • 依赖库
  2. 容器镜像离线

    • k8s 核心组件镜像
    • CNI 网络插件镜像
    • DNS、Metrics Server 等
  3. 网络组件离线

    • Calico / Flannel / Cilium 等

三、推荐方案(最常用)

✅ 方案一:kubeadm + 离线 RPM + 离线镜像(强烈推荐)

1️⃣ 准备一台能联网的 CentOS(用于“打包”)

# 示例:CentOS 7
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
EOF

下载 RPM(不安装):

yum install --downloadonly --downloaddir=/root/k8s-rpm \
    kubelet kubeadm kubectl containerd

拷贝到离线机器:

scp -r /root/k8s-rpm target:/root/

离线机器安装:

cd /root/k8s-rpm
rpm -Uvh *.rpm

2️⃣ 离线镜像准备(关键)

在有网机器:

kubeadm config images list

拉取镜像:

kubeadm config images pull

导出:

docker images | grep k8s
docker save -o k8s-images.tar \
    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 load -i k8s-images.tar

3️⃣ 初始化集群(离线)

kubeadm init \
  --apiserver-advertise-address=192.168.1.10 \
  --pod-network-cidr=10.244.0.0/16 \
  --image-repository=k8s.gcr.io

4️⃣ 网络插件(Calico 离线)

提前下载:

curl -O https://docs.projectcalico.org/v3.26/manifests/calico.yaml

修改镜像为本地:

image: calico/node:v3.26.1

导入镜像后:

kubectl apply -f calico.yaml

四、CentOS 版本注意事项

CentOS 版本 建议
CentOS 7 ✅ 稳定,但已 EOL(2024)
CentOS 8 Stream ✅ 可用
Rocky / Alma 强烈推荐替代 CentOS

⚠️ 新项目不建议继续用 CentOS 7


五、常见坑(非常重要)

❌ 1. systemd & cgroup 驱动不一致

containerd config default > /etc/containerd/config.toml

确保:

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
  SystemdCgroup = true

❌ 2. 防火墙 / SELinux

systemctl stop firewalld
setenforce 0

❌ 3. swap 未关闭

swapoff -a

六、如果你不想这么麻烦

✅ 可选方案

方案 是否支持离线
KubeKey(KubeSphere) ✅ 支持
Rancher RKE
二进制部署 ✅ 但极复杂

七、总结一句话

CentOS 完全可以离线部署 Kubernetes,核心就是:
离线 RPM + 离线镜像 + kubeadm。

如果你愿意,我可以:

  • ✅ 给你一份 CentOS 7 离线部署完整脚本
  • ✅ 给你 1 台 Master + 2 台 Node 的实战方案
  • ✅ 帮你选 替代 CentOS 的最佳系统

你现在是 CentOS 几?打算几台机器?

0