kubespray推荐的方法
kubespray离线安装kubernetes需要在内网搭建文件服务器、镜像仓库、包源以及按需的PyPi服务器和Helm仓库,本质上与在线安装没什么区别,只是将下载文件、镜像、包的地址覆盖为内部地址。这种方法比较正规,适用于绝大部分场景。
使用cache
这是利用kubespray的缓存机制实现的离线安装方法。首先需要在一个可以访问互联网的环境配置download_run_once=true
部署一个最小集群,从而在ansible节点获得所需的所有文件和镜像的缓存。然后再将这些缓存文件拷贝到内网ansible主机的指定目录,设置download_force_cache=true
将所需文件、镜像分发到节点并安装。
该方法有如下缺点:
- 缓存中没有需要的包,所以节点依赖的包需要单独安装;
- 所有文件都是通过ansible节点分发到集群所有节点,ansible节点带宽有限,部署性能远低于方法1;
使用cache的方法适用于安装小规模集群,比如演示集群、简单的测试集群等,单独为这些集群搭建文件服务器、镜像仓库、包源成本比较高。
制作镜像
这种方法适用于云厂商亦或是将kubernetes安装在虚拟机上的场景,将kubespray需要的所有文件、镜像下载到虚拟机镜像中(包也提前安装),然后用该镜像创建的虚拟机安装kubernetes集群。这种方法比第一种方法的部署速度还快,因为不需要下载任何文件或者镜像,非常适合部署较大规模的集群。但是该方法也存在如下缺点:
- 按照节点角色单独制作镜像管理成本较高,制作统一的镜像镜像又比较大(因为需要提前下载所有的文件和镜像);
- 需要下载的文件、镜像、包与具体的配置有关,静态的镜像显得不够灵活,满配的镜像又会比较大;
以上问题配合第一种方法也能达到适当的改良,即制作几个较大粒度且较为通用的虚拟机镜像,在安装过程中缺失的文件、镜像、包可以离线下载。需要注意的是,这种改良只适用于快速部署大规模的kubernetes集群。