Kubernetes集群在AWS上使用没有互联网出口的kops

时间:2018-05-08 11:19:19

标签: amazon-web-services docker kubernetes kops

目标:使用kops在AWS上安装kubernetes群集,无需任何互联网访问。

方法kops工具通常具有来自互联网的大量依赖关系。第一个也是最重要的一个是从{s3下载的nodeup。此nodeup二进制文件需要在文件kube_env.yaml中传递一些参数。

Assets:
- 125993c220d1a9b5b60ad20a867a0e7cda63e64c@https://storage.googleapis.com/kubernetes-release/release/v1.8.4/bin/linux/amd64/kubelet
- 8e2314db816b9b4465c5f713c1152cb0603db15e@https://storage.googleapis.com/kubernetes-release/release/v1.8.4/bin/linux/amd64/kubectl
- 1d9788b0f5420e1a219aad2cb8681823fc515e7c@https://storage.googleapis.com/kubernetes-release/network-plugins/cni-0799f5732f2a11b329d9e3d51b9c8f2e3759f2ff.tar.gz
- f62360d3351bed837ae3ffcdee65e9d57511695a@https://kubeupv2.s3.amazonaws.com/kops/1.8.0/linux/amd64/utils.tar.gz
ClusterName: ${cluster_fqdn}
ConfigBase: s3://${config_base}
InstanceGroupName: ${instance_group}
Tags:
- _automatic_upgrades
- _aws
- _kubernetes_master
- _networking_cni
channels:
- s3://${config_base}/addons/bootstrap-channel.yaml
protokubeImage:
  hash: 1b972e92520b3cafd576893ae3daeafdd1bc9ffd
  name: protokube:1.8.0
  source: https://kubeupv2.s3.amazonaws.com/kops/1.8.0/images/protokube.tar.gz

从上面的文件中可以看出,包和图像是从指定的源下载的。定制源并将其指向文件中提到的所有包的内部存储相当容易。但nodeupprotokube似乎从谷歌的docker存储库gcr.io调用docker图像,这需要Internet出口。

我们尝试将清单配置为指向托管在网络中的私有docker存储库,其中存储了所有必需的映像。但是没有从私有存储库中提取图像并且集群没有出现。这是我们实现无互联网集群的唯一障碍。我假设图像在二进制文件中是硬编码的。如果是这种情况,我能看到的唯一解决方案是构建自定义nodeup可执行文件。

我们正在寻找有关所采取方法的其他解决方案或建议。这些图像是在nodeup二进制文件中进行硬编码还是存在某种哈希验证? nodeup源代码没有详细记录。因此,很难确定图像的确切位置。

0 个答案:

没有答案