是的,CentOS 完全可以在离线环境下部署 Kubernetes(K8s),这是企业内网、涉密环境或生产环境的常见需求。下面给你一个可落地的思路和步骤,从“能不能”到“怎么做”。
✅ 可以离线部署 K8s
✅ 支持 CentOS 7 / CentOS 8 Stream
✅ 常见方式:
K8s 离线部署本质是 解决 3 件事:
软件包(RPM)离线
容器镜像离线
网络组件离线
# 示例: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
在有网机器:
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
kubeadm init \
--apiserver-advertise-address=192.168.1.10 \
--pod-network-cidr=10.244.0.0/16 \
--image-repository=k8s.gcr.io
提前下载:
curl -O https://docs.projectcalico.org/v3.26/manifests/calico.yaml
修改镜像为本地:
image: calico/node:v3.26.1
导入镜像后:
kubectl apply -f calico.yaml
| CentOS 版本 | 建议 |
|---|---|
| CentOS 7 | ✅ 稳定,但已 EOL(2024) |
| CentOS 8 Stream | ✅ 可用 |
| Rocky / Alma | ✅ 强烈推荐替代 CentOS |
⚠️ 新项目不建议继续用 CentOS 7
containerd config default > /etc/containerd/config.toml
确保:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
systemctl stop firewalld
setenforce 0
swapoff -a
| 方案 | 是否支持离线 |
|---|---|
| KubeKey(KubeSphere) | ✅ 支持 |
| Rancher RKE | ✅ |
| 二进制部署 | ✅ 但极复杂 |
CentOS 完全可以离线部署 Kubernetes,核心就是:
离线 RPM + 离线镜像 + kubeadm。
如果你愿意,我可以:
你现在是 CentOS 几?打算几台机器?