写在前面
kubernetes的安装有几种方式,不管是kube-admin还是社区贡献的部署方案都离不开这几种方式:
- 使用现成的二进制文件
直接从官方或其他第三方下载,就是kubernetes各个组件的可执行文件。拿来就可以直接运行了。不管是centos,ubuntu还是其他的linux发行版本,只要gcc编译环境没有太大的区别就可以直接运行的。使用较新的系统一般不会有什么跨平台的问题。
- 使用源码编译安装
编译结果也是各个组件的二进制文件,所以如果能直接下载到需要的二进制文件基本没有什么编译的必要性了。
- 使用镜像的方式运行
同样一个功能使用二进制文件提供的服务,也可以选择使用镜像的方式。就像nginx,像mysql,我们可以使用安装版,搞一个可执行文件运行起来,也可以使用它们的镜像运行起来,提供同样的服务。kubernetes也是一样的道理,二进制文件提供的服务镜像也一样可以提供。
从上面的三种方式中其实使用镜像是比较优雅的方案,容器的好处自然不用多说。但从初学者的角度来说容器的方案会显得有些复杂,不那么纯粹,会有很多容器的配置文件以及关于类似二进制文件提供的服务如何在容器中提供的问题,容易跑偏。 所以我们这里使用二进制的方式来部署。二进制文件已经这里备好,大家可以打包下载,把下载好的文件放到每个节点上,放在哪个目录随你喜欢,放好后最好设置一下环境变量$PATH,方便后面可以直接使用命令。(科学上网的同学也可以自己去官网找找)
下载地址(kubernetes 1.9.0版本)https://pan.baidu.com/s/1bMnqWY
————————————————————————————————————————————————————————————————————————
本次搭建是基于慕课网阿良老师github上面的教程搭建的。因为使用的是现成的二进制文件,因此只需要根据教程修改成自己的信息,就可以完成一个简易版的k8s集群搭建。
k8s搭建github地址:https://github.com/liuyi01/ku...
因为对k8s集群还未有深入的认识,因此自己本次搭建的是无CA证书的。
即完成了 [一、预先准备环境]、[二、基础集群部署 - kubernetes-simple]这两节的内容。
只要按照文档操作即可完成k8s的集群搭建。
关于自己安装过程中出现的问题在后续【问题汇总】处会给出。
Dashboard安装配置
关于dashborad的安装真心不容易,前前后后折腾了好几天。因为之前没有经验,因此走了不少弯路。
官网文档:https://kubernetes.io/docs/ta...
自己部署dashboard参考:https://blog.csdn.net/wo18237...
总结:
其实在master节点执行 kubectl create -f kubernetes-dashboard.yaml 是创建了几个对象。
secret
serviceaccount
role
rolebinding
deployment
service
deployment 的pod控制器创建出dashboard这个pod,服务以pod的形式运行,对外提供服务。
其中secret这个应该是证书服务,但是在之前安装时没有配置证书,因此导致后续创建dashboard的pod的时候老是报错,后面也是手动配置了证书才解决的。暂时规避了此问题,后续学习到证书这块在回头来看下。
dashboard的pod启动成功后,若chrome无法访问,则使用Firefox进行访问。
选择token认证。
查看Token:kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard-admin-token | awk '{print $1}')
填入Token:
登陆成功(终于登陆成功了)
【问题汇总】
一、在使用阿良github上面的安装kube-proxy组件的时候,查看日志会有报错。原因是系统上面的iptables版本太高了,需要重新安装成1.4.21-24.1版本的,因这个版本的rpm包在互联网上不好找,因此rpm下载链接为:
链接:https://pan.baidu.com/s/1FxmD...
提取码:en5k
若出现安装kube-proxy组件时出现问题,可以将系统本身的iptables版本卸载掉重新安装此版本。注意在卸载原先的iptable版本的时候,会卸载一些依赖,因此在重新安装iptables规则时,需要把对应的依赖都安装上。
若出现通过 kubectl get nodes出现NotReady的状态,需要重启node节点的kubelet服务;
若出现通过 calicoctl node status出现未连接的情况,需要重启node节点的 kube-calico服务。
确保在master节点查看信息如下:
二、安装Dashboard是出现以下问题。
2.1、kubernetes-dashboard.yaml的Dashboard Deployment配置处,有一个国内无法下载到的镜像,这边提供镜像下载地址,下载完成后在本地load 之后(所有node节点),并在下方添加镜像拉取策略(IfNotPresent)。这样就保证了无论调度到那台node节点上都能够找到这个镜像。如图:
2.2、修改service的类型为nodeport,这样就可以在集群外通过浏览器的方式访问服务。在Dashboard Service配置处新增type: NodePort配置,如图:
2.3、当kubectl creat -f kubernetes-dashboard.yaml之后,查看dashboard的容器状态为 Exited的。docker logs ContainerID
产生这个错误是因为Kubernets默认创建的secrets资源不包含用于访问kube-apiserver的根证书。
需要给apiserver设置安全证书,然后删除默认secrets,系统会自动产品新的sercrets。
这个坑就是官网给出的kubernetes-dashboard.yaml文件内有配置secret对象的原因。因此需要设置证书。
自己使用这个文档解决的,操作在master节点操作。
https://blog.csdn.net/u012066...
注意,后面存在添加配置,重启api和manager的操作,针对本地安装的方式,需要在/lib/systemd/system/kube-apiserver|kube-controller-manager.service文件内添加配置,然后重启服务即可。
稍等片刻后,在此查看就有新的secrets对象。
2.3、但重新create -f kubernetes-dashboard.yaml创建Dashboard时,发现出现此类问题。这是因为在kubernetes-dashboard.yaml没有指定apiserver的地址,端口是8080。添加完成后再次 create之后就可以了。
kubernetes-dashboard.yaml修改位置
【镜像源】
在kubernetes-dashboard.yaml文件内定义了镜像源,因为设置的是国外源,因此这边提供下载源,docker load 之后在本地即可。
【kubernets-dashboard-adm64-1.10.1.tar】
链接:https://pan.baidu.com/s/1no92...
提取码:is7c
或者可以使用阿里云上面kubernets-dashboard镜像。
registry.cn-hangzhou.aliyuncs.com/kubernetes-dashboard-amd64/dashboard
————————————————————————————————————————————————————————————————————
无证书的kubernetes-dashboard.yaml文件
链接:https://pan.baidu.com/s/1N3fp...
提取码:qvkf
这个是另外一个同事提供的yaml文件,没有配置secrets对象,应该是kubectl create -f 之后就可以成功。
还未测试...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。