Kubespray免FQ安装k8s集群

简述

笔者在学习使用 kubespray 在多台服务器部署k8s集群时,被伟大的长城防火墙虐得遍体鳞伤。原本30分钟内可以完成的工作,可能在墙内花个几天时间,解决了被墙的问题,已经丧失了大半的兴趣和信心,有人可能直接就放弃,这学习成本之高,实乃墙内IT学习者的悲哀。好了,言归正传,在消沉了一两天之后,在网上一些资料的帮助下,我解决了这个问题,这里分享出来,希望能帮助到你,让你能顺利地完成部署。

  • 说明:标题中“不科学上网”指的是服务器不需要科学上网,实际操作有些步骤还是需要在自己的本地机器上通过VPN等手段下载一些墙外的资源,我相信这对读者来说应该不是什么问题

问题和解决方案

如上所述,部署中遇到的问题来自于两方面:
1. k8s 所依赖的各组件的 docker 镜像,在官方的kubespray中,依赖的部分核心镜像托管于谷歌云的 docker 仓库(gcr.io)中,该地址是被墙的
2. 一部分通过 HTTP 下载的依赖,位于 storage.googe.com 和 dl.google.com 上,也是被墙的

经过查找资料,我得出了以下解决方案:
1. 针对问题(1),我从官方的 kubespray 库中通过全文查找,找到了命名空间为 gcr.io(包括 k8s.gcr.io 等相关命名空间)的 docker 镜像的声明,总共约 14 处,并通过 docker 中央仓库 docker hub 的 Automated Build 功能,在自己的命名空间 waychan23 下,构建了依赖的所有 docker 镜像;同时,我 fork 了 kubespray,并将上述找到的 docker 镜像声明,一一对应修改成了自己在 docker hub 上的镜像名;
2. 针对问题(2),同样,我从官方的 kubespray 中,全文搜索,找到了 google 相关域名的 HTTP 资源声明,并在本地机器通过(本地机器FQ) VPN 下载,并上传至自己在阿里云 OSS 的空间下;同时,在我 fork 的 kubespray 中相关的 HTTP 资源声明改成对应的阿里云OSS资源地址;

经过了上述的操作,我顺利地完成了在阿里云3台ECS上部署k8s集群的任务。

上述操作看似简单,实则需要花上1-2天的时间,好在读者可以直接使用笔者修改过的 kubespray,相信能帮你更快地实现部署。

笔者 fork 的 kubespray 库位于:waychan23/kubespray,笔者docker hub命名空间下的镜像是公开的,读者可以直接使用,而 HTTP 的资源我没有对外开放 OSS 的读取权限,所以,读者还需要自行替换成自己的HTTP文件服务地址,好在工作量不大,只有5处左右(后续笔者会抽空上传到百度云盘上)。

猜你喜欢

转载自www.cnblogs.com/waychan/p/9902316.html
今日推荐