初衷
自从kubernetes(k8s)出现以来,安装复杂、部署困难就一直被业内吐槽,同时也把很多初学者挡在门外。虽然官方也有专门用来入门的单机部署方案:Minikube,和用来搭建集群的Kubeadm,但国内绿色的网络环境让官方的方案变得异常复杂。所以社区也涌现出很多专门用于部署k8s的项目,像使用ansible脚本方式的kubeasz,在github上已经有500多star;还有各种k8s相关的网站也有很多专门针对环境搭建的长文。
不管是官方的还是社区的方案,总体上都离不开下面这几种方式:
- 使用现成的二进制文件
直接从官方或其他第三方下载,就是k8s各个组件的可执行文件。拿来就可以直接运行了。不管是centos,ubuntu还是其他的linux发行版本,只要gcc编译环境没有太大的区别就可以直接运行的。使用较新的系统一般不会有什么跨平台的问题。
- 使用源码编译安装
编译结果也是各个组件的二进制文件,所以如果能直接下载到需要的二进制文件基本没有什么编译的必要性了。
- 使用镜像的方式运行
同样一个功能使用二进制文件提供的服务,也可以选择使用镜像的方式。就像nginx,像mysql,我们可以使用安装版,搞一个可执行文件运行起来,也可以使用它们的镜像运行起来,提供同样的服务。k8s也是一样的道理,二进制文件提供的服务镜像也一样可以提供。
从上面的三种方式中其实使用镜像是比较优雅的方案,容器的好处自然不用多说。但从初学者的角度来说容器的方案会显得有些复杂,不那么纯粹,会有很多容器的配置文件以及关于类似二进制文件提供的服务如何在容器中提供的问题,容易跑偏。所以二进制的方式更适合初学者。
那有同学会问了,网上已经有很多二进制安装的教程了,我为什么还重复造轮子?确实,k8s的二进制安装方式确实也有很多教程了,我在入门的时候也有去看过,主要有两种教程,一种是傻瓜式,也叫一键式,运行一个命令,执行一个脚本,一切搞定(当然一般会遇到一些问题,需要自己想办法解决^_^)。还有一种是复杂式,一步一步的所有东西都写下来,照着走一遍,基本几个小时就过去了(主要是k8s的认证授权部分太复杂),还不算你中间遇到的问题。正是出于我自己在入门时碰到的种种问题,让我有了这个想法:做一个专门给初学者看的教程,让他们既能把环境搭建好,还能顺带理解k8s的架构,理解认证授权,理解每个组件的配置和它们之间的关系。所以我把k8s拆分了,剥离了它的认证授权和服务发现,先从核心模块入手,搭建好一个集群,然后练练手,再给集群添加认证授权。让初学者更容易接受了理解。
本文转自kubernetes中文社区-纯手工搭建k8s集群-序