温馨提示×

debian能离线部署k8s吗

小樊
35
2026-09-11 05:59:46
栏目: 智能运维

可以的,Debian 完全支持离线(离线/air-gapped)部署 Kubernetes,不过比在线环境要麻烦一些,核心是“把所有依赖提前准备好”。

下面从可行性、常见方案、关键步骤、注意事项几个方面说清楚。


一、Debian 离线部署 K8s 是否可行?

✅ 完全可行
Kubernetes 本身不依赖外网运行,只是安装和拉镜像时通常需要联网。只要提前把以下内容准备好,就可以在纯离线环境部署:

  • 系统包(apt 包)
  • Kubernetes 二进制或 deb 包
  • 容器运行时(containerd / docker)
  • 所有 K8s 组件镜像(kube-apiserver、etcd 等)
  • 网络插件镜像(Calico / Flannel 等)
  • 可选:Helm、CSI 插件、Ingress 等

二、常见离线部署方式(推荐程度)

✅ 方式 1:kubeadm + 离线镜像(最常用)

适合:

  • 生产环境
  • 有一定运维能力

思路:

  1. 在有网的机器上
    • 下载 kubeadm / kubelet / kubectl deb 包
    • 下载 containerd
    • kubeadm config images list 获取镜像列表
    • docker pull + docker save 导出镜像
  2. 拷贝到离线 Debian 机器
  3. 手动 dpkg -i 安装
  4. kubeadm init --image-repository=本地仓库

✅ 方式 2:使用私有镜像仓库(推荐生产)

架构:

离线机器 → 本地 Harbor / registry

优点:

  • 避免每台机器导镜像
  • 后续扩展节点方便

做法:

  • 在一台机器部署 registry
  • 所有镜像 push 到本地 registry
  • kubeadm 使用 --image-repository

✅ 方式 3:离线二进制部署(kubeasz / sealos)

工具:

特点:

  • 一条命令离线安装
  • 已打包好所有依赖
  • 非常适合内网

最省事的离线方案


三、离线部署关键步骤(以 kubeadm 为例)

1️⃣ 准备离线包(联网机器)

# 下载 deb
apt download kubelet kubeadm kubectl

# 容器运行时
apt download containerd.io

2️⃣ 导出 K8s 镜像

kubeadm config images list

docker pull registry.k8s.io/kube-apiserver:v1.29.0
docker save -o kube-apiserver.tar registry.k8s.io/kube-apiserver:v1.29.0

3️⃣ 离线机器安装

dpkg -i *.deb
systemctl enable --now containerd

4️⃣ 导入镜像

docker load -i kube-apiserver.tar

5️⃣ 初始化集群

kubeadm init \
  --image-repository=本地仓库地址 \
  --pod-network-cidr=10.244.0.0/16

四、容易踩的坑(重点)

❗ 1. Debian 版本

  • ✅ Debian 11 / 12 推荐
  • 注意内核版本(≥ 4.15)

❗ 2. 容器运行时

  • Kubernetes 已弃用 Docker
  • 推荐 containerd

❗ 3. 网络插件必须离线

  • Calico / Flannel 镜像也要提前下

❗ 4. DNS / 时间同步

  • 离线环境务必:
    • NTP 时间同步
    • /etc/hosts 配置主机名

五、我可以进一步帮你

如果你愿意,可以告诉我:

  1. Debian 版本(11 / 12?)
  2. K8s 版本(1.28 / 1.29?)
  3. 是否允许一台机器做私有仓库?
  4. 单节点 / 多节点?

我可以直接给你一套可复制的离线部署清单或脚本

0