翻看了很多的kubernetes的安装教程,也反复做了一些实验,深感教程之复杂,所以决定写一个极简版本的安装教程,目标在于用尽可能少的参数启动服务,并且剖析各组件关系,然后再在此基础上逐步添加参数,实现功能完备;
干什么在server节点上启动三个主要服务:apiserver、controller-manager、scheduler;
在node节点上启动两个主要服务:kubelet、kube-proxy;
试验启动容器,且测试容器内服务的功能;
不干什么不通过软件源安装;
不添加systemd服务;
尽量不做安全配置;不做bootstrap流程,不用kubeadm创建集群;
不做高可用配置;
不用ipvs做负载均衡;
不装任何插件(dns, dashboard, etc);
说明:
如果通过软件源安装,看似会简化部署流程,但事实上会引入一些别的问题,因为一方面解决版本配套要添加合适的源比较麻烦,另一方面发布包在操作系统上做的一些配置也很复杂,为迎合它也需要做一些复杂的工作;(其实就是源里的东西版本低了不想用这种大实话我是绝对不会说的)
个人感觉安全配置是提高了kubernetes入门门槛的关键原因,本身安全认证授权就是非常复杂的机制,与业务独立,一般人较少接触,任何一个新入门kubernetes的人在瞎子摸象之前要先搞明白这些东西就要花很多功夫;
但是,非安全的服务端口正在被deperecate,看一下今年4月社区contributer的表态,自己感受一下吧,。
未来这一部分可能是造成本文失效的最主要原因;
先大概知道一下架构,借用一张图,来源:https://www.kubernetes.org.cn/4047.html
版本及依赖 etcd 3.3.8docker 18.03.1-ce
flannel 0.10.0
kubernetes 1.10.5
etcd是一个基础组件,没有太复杂的依赖关系,没什么好说的;
docker见之前的docker安装流程;
flannel见之前的flannel安装流程;
下载程序包到官方changelog里找downloads:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.10.md
只下载server和node包就够了,client包只有一个kubectl工具,在前两个里都有带;
Server部署server有三个组件,apiserver是接口服务,对接etcd,做存储逻辑的封装,后面跟着controller-manager和scheduler,做一些后台控制逻辑;
整个server做的事情全都围绕etcd转,所以根本不需要系统的root权限,普通用户足够;
安装server解压server包,程序都解压到了kubernetes/server/bin路径:
$ tar vfxz kubernetes-server-linux-amd64.tar.gz # 解压
$ ls kubernetes/server/bin #看一下
$ cd kubernetes/server # 就在这个路径下做server服务的管理