> 原文连接:Kubernetes Dashboard 终结者:KubeSpherenode
2018 年 7 月份,青云在 Cloud Insight 云计算峰会上推出了一款全新的容器平台——KubeSphere
,旨在帮助企业快速低成本管理容器。而且 KubeSphere
自己是开源的,它是基于 Kubernetes 构建的分布式、多租户、企业级开源容器平台,具备强大且完善的网络与存储能力,并经过极简的人机交互提供完善的多集群管理、CI / CD 、微服务治理、应用管理等功能,帮助企业在云、虚拟化及物理机等异构基础设施上快速构建、部署及运维容器架构,实现应用的敏捷开发与全生命周期管理。git
KubeSphere 目前最新的版本为高级版 2.0.2
,而且全部版本 100% 开源。它的 Dashboard 是这个样子的:github
<center><p id="small">KubeSphere 主界面</p></center>redis
<center><p id="small">Istio 微服务治理界面</p></center>docker
<center><p id="small">多维度监控界面</p></center>api
这个颜值,比 Kubernetes Dashboard 不知道高到哪里去了,感兴趣的小伙伴能够给一个 Github Star 鼓励一下开发小哥。访问官网请戳这里:kubesphere.io浏览器
KubeSphere 官网大体提供了两种安装方式,一种是安装 k8s 集群和 KubeSphere,一种是在现有的 k8s 集群上安装 KubeSphere。我想大多数用户的需求确定是在现有的集群上安装,但官方文档给出的部署方案有不少奇怪的坑,本文就来为你们一一填平这些坑。bash
固然,还有些同窗可能会和我同样有强迫症,即便目前没有现成的 Kubernetes 环境,我也不想让 KubeSphere 给我来个全家桶,仍是想本身搭建 k8s 集群,怎么办,二进制部署好烦啊,像我这种菜鸟没有半天搞不定,有没有简单快捷的方法,十分钟就能建好集群?固然有,用 sealos 就行了,只需一条命令便可跨主机安装全部依赖,不须要 ansible
,不须要 ssh 登陆到其余机器,安装以前须要作一些准备工做:微信
个人机器规划是这样的:网络
Hostname | IP | Role |
---|---|---|
sealos-node1 | 192.168.0.2 | master |
sealos-node2 | 192.168.0.3 | node |
sealos-node3 | 192.168.0.4 | node |
安装步骤分为如下几步:
一、在 master 上执行如下命令:
$ sealos init --master 192.168.0.2 \ --node 192.168.0.3 \ --node 192.168.0.4 \ --user root \ --passwd password \ --version v1.14.5 \ --pkg-url /root/kube1.14.5.tar.gz
二、没有了。
真没有了,若是想了解原理,请查看 sealos 的官方文档。
下面就正式进入 KubeSphere 的安装环节。
一、首先将 ks-installer
仓库克隆到 master 节点上:
$ git clone https://github.com/kubesphere/ks-installer -b advanced-2.0.2
二、在 Kubernetes 集群中建立名为 kubesphere-system
和 kubesphere-monitoring-system
的 namespace。
三、建立 Kubernetes 集群 CA 证书的 Secret。
> 注:按照当前集群 ca.crt 和 ca.key 证书路径建立(Kubeadm 建立集群的证书路径通常为 /etc/kubernetes/pki
)
$ kubectl -n kubesphere-system create secret generic kubesphere-ca \ --from-file=ca.crt=/etc/kubernetes/pki/ca.crt \ --from-file=ca.key=/etc/kubernetes/pki/ca.key
四、建立 etcd 的证书 Secret。
> 注:根据集群实际 etcd 证书位置建立;
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs \ --from-file=etcd-client-ca.crt=/etc/kubernetes/pki/etcd/ca.crt \ --from-file=etcd-client.crt=/etc/kubernetes/pki/etcd/healthcheck-client.crt \ --from-file=etcd-client.key=/etc/kubernetes/pki/etcd/healthcheck-client.key
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs
我这里是使用 sealos 搭建的集群,能够经过查看 etcd 的资源清单文件来获取它的证书:
五、修改部署文件
因为 KubeSphere 部署过程当中涉及的组件很是多,安装过程当中会有不少莫名其妙的坑,你可能会遇到如下几个问题:
**问题 1:**若是现有集群中已经安装有 metrics-server,须要在配置文件中将 metrics_server_enable
设置为 False。个人集群中没有安装这个组件,因此不用设为 False。
**问题 2:**在安装过程当中卡死在 Waitting for ks-sonarqube port to become open
部分,节点上经过 NodePort 已经能够正常访问 sonarqube ,该问题没有解决,因为是一个不影响全局安装的一个操做,因此一样在配置文件中将 sonarqube_enable
设置为 False。
**问题 3:**若是当前的集群资源不是很足,能够临时取消掉 istio 的安装,后续再开启 istio 的支持。
**问题 4:**KubeSphere 的组件默认状况下使用持久化存储,须要确保集群中有一个默认的 StorageClass
资源对象,若是确实没有,只是想临时部署一个 demo,能够在配置文件中将 persistence
里面的 enable
设置为 false。
我最终用于安装 KubeSphere 的配置文件以下:
只须要修改 ConfigMap 的值便可,其中 kube_apiserver_host
就是现有集群的 APIServer 地址,etcd_endpoint_ips
就是 etcd 的所在节点 IP,默认端口为 2379,若是你是集群模式 etcd,这里能够填写多个节点 IP,中间用 ,
隔开,下面就是不须要安装的组件设置为 False。
六、自定义 Docker 镜像。
由于目前 ConfigMap 中不能禁用日志,因此只能强行修改 ansible playbook 了。进入 ks-installer 的根目录,将 kubesphere.yaml
中的 ks-logging
删除:
而后修改 Dockerfile
,将 Helm v2 替换为 Helm v3,缘由你懂得,我可不想装 tiller。修改后的 Dockerfile 内容以下:
最后从新构建镜像,将部署文件中 Deployment 的镜像改成自定义的镜像,就能够直接部署了:
$ kubectl apply -f deploy/kubesphere.yaml $ kubectl -n kubesphere-system get pod NAME READY STATUS RESTARTS AGE ks-account-585846bd44-mt7ss 1/1 Running 0 3h9m ks-apigateway-7d77cb9495-hxgz8 1/1 Running 0 3h9m ks-apiserver-697c5f4859-dsbmm 1/1 Running 0 3h7m ks-console-5b8fbf45c4-7hxrw 1/1 Running 0 3h8m ks-console-5b8fbf45c4-hj4bj 1/1 Running 0 3h8m ks-controller-manager-7497f6c944-4k8wd 1/1 Running 0 3h8m ks-docs-65999c97c9-5f9z7 1/1 Running 0 3h37m kubesphere-installer-6j49s 0/1 Completed 0 3h10m openldap-78df9f7b47-wvs5n 1/1 Running 0 3h38m redis-99f5985b8-2d62q 1/1 Running 0 3h38m $ kubectl -n kubesphere-system get job NAME COMPLETIONS DURATION AGE kubesphere-installer 1/1 2m9s 3h10m
若是上面用于安装的 Job 是完成状态的话,证实 KubeSphere 已经安装成功了。
能够建立一个 IngressRoute 对象来访问 KubeSphere:
将域名信息加入本地电脑的 hosts 中,就能够在浏览器中访问 KubeSphere 的 Dashboard 了。
默认的集群管理员帐号为:
详细的使用方式能够参考官方文档:https://kubesphere.io/docs/zh-CN/
扫一扫下面的二维码关注微信公众号,在公众号中回复◉加群◉便可加入咱们的云原生交流群,和孙宏亮、张馆长、阳明等大佬一块儿探讨云原生技术