You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu 16.04机器上离线安装Kubernetes?

Ubuntu 16.04 离线安装 Kubernetes 步骤

一、提前在联网机器上准备离线资源

1. 下载 Kubernetes 组件 deb 包

选择适配 Ubuntu 16.04 的 K8s 版本(如 v1.21.14),在联网机器执行:

# 临时添加 K8s 源
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt update
# 下载指定版本的 kubeadm、kubelet、kubectl 及依赖包
apt-get download kubeadm=1.21.14-00 kubelet=1.21.14-00 kubectl=1.21.14-00 cri-tools socat conntrack ipset
# 打包所有 deb 包
tar -czf k8s-debs.tar.gz *.deb

将打包好的 k8s-debs.tar.gz 传输到离线机器。

2. 下载 K8s 集群所需镜像

# 获取当前版本需要的镜像列表
kubeadm config images list --kubernetes-version v1.21.14
# 拉取并保存所有镜像
for img in $(kubeadm config images list --kubernetes-version v1.21.14); do
    docker pull $img
    docker save -o ${img//\//-}.tar $img
done
# 打包镜像文件
tar -czf k8s-images.tar.gz *.tar

将 k8s-images.tar.gz 传输到离线机器。

3. 下载 Docker 离线包(若离线机器未安装 Docker)

选择适配 Ubuntu 16.04 的 Docker 版本(如 20.10.x),在联网机器执行:

curl -fsSL https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/ | grep -E "(docker-ce|docker-ce-cli|containerd.io)" | awk '{print "https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/"$9}' | xargs wget
# 打包 Docker deb 包
tar -czf docker-debs.tar.gz *.deb

将 docker-debs.tar.gz 传输到离线机器。

二、离线机器环境配置

# 关闭防火墙
ufw disable
# 关闭 SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# 关闭 swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
# 配置内核参数
cat <<EOF >/etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
# 加载必要内核模块
modprobe br_netfilter
modprobe overlay

三、离线安装 Docker

# 解压 Docker 包
tar -xzf docker-debs.tar.gz
# 安装 Docker
dpkg -i *.deb
# 启动并设置开机自启
systemctl start docker
systemctl enable docker

四、离线安装 Kubernetes 组件

# 解压 K8s 组件包
tar -xzf k8s-debs.tar.gz
# 安装所有组件及依赖
dpkg -i *.deb
# 设置 kubelet 开机自启
systemctl enable kubelet

五、导入 K8s 镜像到 Docker

# 解压镜像包
tar -xzf k8s-images.tar.gz
# 导入所有镜像
for img in *.tar; do
    docker load -i $img
done
# 若镜像源与 kubeadm 期望不一致,重新打标签(示例)
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.21.14 k8s.gcr.io/kube-apiserver:v1.21.14

六、初始化 Master 节点

# 初始化集群,指定版本并忽略预检查
kubeadm init --kubernetes-version v1.21.14 --ignore-preflight-errors=all --pod-network-cidr=10.244.0.0/16
# 配置 kubectl 环境
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

保存初始化完成后输出的 Worker 节点加入命令。

七、离线安装 Pod 网络插件(以 Flannel 为例)

  1. 提前在联网机器下载 Flannel 的 yaml 文件和镜像:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
docker pull quay.io/coreos/flannel:v0.14.0
docker save -o flannel.tar quay.io/coreos/flannel:v0.14.0

将 kube-flannel.yml 和 flannel.tar 传输到离线机器。

  1. 在离线机器执行:
# 导入 Flannel 镜像
docker load -i flannel.tar
# 应用网络配置
kubectl apply -f kube-flannel.yml

八、Worker 节点加入集群

在 Worker 节点重复执行步骤二到五的操作,然后执行 Master 节点初始化时输出的加入命令,示例:

kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

若 token 过期,可在 Master 节点生成新命令:

kubeadm token create --print-join-command

内容的提问来源于stack exchange,提问作者CuriousCase

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 02:15:38