在上一篇博客3台机器部署Kubernetes集群中,笔者介绍了部署Kubernetes集群的过程,但仅部署了kube-apiserver
、kube-controller-manager
、kube-schedular
、kubelete
、kube-proxy
几个基本模块,本篇将介绍Kubernetes几个实用的扩展插件的安装。扩展插件一般都是定义好的yaml文件,可直接使用Kubernetes进行创建及控制。
kube-dns
DNS扩展插件用于支持Kubernetes的服务发现机制,它包括SkyDNS
、Kube2sky
、etcd
和healthz
四个容器。SkyDNS
提供DNS解析服务,etcd
用于存储SkyDNS
的数据,Kube2sky
负责监听Kubernetes,当有新的Service创建,它会将Service的记录添加到SkyDNS
中,而kubectl可以通过查询SkyDNS
将相应的服务记录添加到新创建的Service中。
如果kubelet已经启动并且没有配置启动参数,则需要将原进程kill掉并重启。
DNS的作用很大,如果没有该服务,好多Pod在启动的时候会遇到问题,如:
kube-dns-rc.yaml
kube-dns-svc.yaml
Dashboard
Dashboard是Kubernete的可视化管理界面,存在目录kubernetes/cluster/addons/dashboard目录下。
dashboard-controller.yaml
release包中源文件没有args: - --apiserver-host=http://10.0.63.202:8080
这一行,直接运行会出错(CrashLoopBackOff ),导致pod创建不成功,添加后创建正常。
错误报告:Cannot configure apiserver URL
解决办法:Clarify how users can change apiserver-host in canary deployment
dashboard-service.yaml
Cluster monitoring
kubernetes/cluster/addons/cluster-monitoring目录包含安装平台监控的yaml文件,由Heapster
、InfluxDB
、GCE
、Grafana
等几个容器构成,Heapter
负责收集Kubernetes运行平台的监控数据,然后导入InfuxDB
或GCE
,InfluxDB
是一个分布式时序、事件和指标数据库,而Grafana负责将数据进行图表展示。
目录下的heapster-controller.yaml
文件中的yaml configs并不是让kubectl create -f
直接使用的,只能通过salt在创建集群时使用,我们可以将这些yaml config去掉,并根据集群的资源状况将模板表达式替换为合理的值。详见[kubernetes issue 21065][issue_21065]。
部署过程中会有一些错误:
由于对heapster不是很了解,目前还没有找到好的解决办法,等找到后会进行更新,现在先这样了:(
Node Problem Detector
这个扩展组件是一个DeamonSet,即在每个Node节点上都会启动一个Pod,用于检测Node的状态并将问题汇报给apiserver,由于是一个DeamonSet,因此需要更高的权限,在kubelet和kube-apiserver的启动选项中都添加上--allow-privileged=true
,否则会在创建时遇到错误:
友情提示 => 遇到pod不能正常启动一定要多查看日志,常用命令: