我们可以使用 kubeadm 在完全离线模式下安装 Kubernetes 吗?

Can we install Kubernetes in a complete offline mode with kubeadm?

我需要在完全离线模式下安装 Kubernetes 集群。我可以按照 http://kubernetes.io/docs/getting-started-guides/scratch/ 中的所有说明并从二进制文件安装,但这似乎是一个复杂的设置。使用 kubeadm 的安装非常简单,但我没有看到任何关于我是否可以通过在本地下载 .deb 软件包来安装集群的文​​档。

非常感谢任何指向该方向的指示。

我认为还没有人对此进行记录。最重要的是在集群中的每台机器上预加载正确的图像。在那之后事情应该就可以了。

此 PR 中对此进行了一些讨论:https://github.com/kubernetes/kubernetes/pull/36759

如果我有带宽,我会实施 kubeadm list-images,这样我们就可以 docker save $(kubeadm list-images) | gzip > kube-images.tar.gz。您可以通过阅读代码等方式手动构建该列表。

Can we install Kubernetes in a complete offline mode with kubeadm?

是的,我已经用 ansible 和 kubeadm 设置了几个离线集群 (1.15.x)。主要是你需要在U盘里准备好以下东西,带上你的离线环境。

  • .deb/.rpm 文件来安装 ansible
  • .deb/.rpm 文件安装 docker
  • .deb/.rpm 文件来安装 kubeadm、kubectl、kubelet
  • Docker kubernetes 集群图像(您可以通过 kubeadm config images list 找到)
  • Docker kubernetes 插件图片(flannel/calico、仪表板等)
  • 你的 ansible 剧本

安装步骤如下:

  1. 使用 dpkg 或 rpm(手动)安装 ansible
  2. 使用 dpkg 或 rpm(通过 ansible 任务)安装 docker
  3. 使用 dpkg 或 rpm 安装 kubeadm、kubectl、kubelet(通过 ansible 任务)
  4. docker load 所有 docker 图像(通过 ansible 任务)
  5. 运行 kubeadm initkubeadm join(通过 ansible 任务)

这里可能有很多细节。欢迎留下您的评论。