Kubernetes Dashboard 终结者:KubeSphere
2018 年 7 月份,青云在 Cloud Insight 云计算峰会上推出了一款全新的容器平台——KubeSphere,旨在帮助企业快速低成本管理容器。并且 KubeSphere 本身是开源的,它是基于 Kubernetes 构建的分布式、多租户、企业级开源容器平台,具有强大且完善的网络与存储能力,并通过极简的人机交互提供完善的多集群管理、CI / CD 、微服务治理、应用管理等功能,帮助企业在云、虚拟化及物理机等异构基础设施上快速构建、部署及运维容器架构,实现应用的敏捷开发与全生命周期管理。
KubeSphere 目前最新的版本为高级版 2.0.2,并且所有版本 100% 开源。它的 Dashboard 是这个样子的:

KubeSphere 主界面

Istio 微服务治理界面

多维度监控界面
这个颜值,比 Kubernetes Dashboard 不知道高到哪里去了,感兴趣的小伙伴可以给一个 Github Star 鼓励一下开发小哥。访问官网请戳这里:kubesphere.io
KubeSphere 官网大致提供了两种安装方式,一种是安装 k8s 集群和 KubeSphere,一种是在现有的 k8s 集群上安装 KubeSphere。我想大多数用户的需求肯定是在现有的集群上安装,但官方文档给出的部署方案有很多奇怪的坑,本文就来为大家一一填平这些坑。
1. 环境准备
当然,还有些同学可能会和我一样有强迫症,即使目前没有现成的 Kubernetes 环境,我也不想让 KubeSphere 给我来个全家桶,还是想自己搭建 k8s 集群,怎么办,二进制部署好烦啊,像我这种菜鸟没有半天搞不定,有没有简单快捷的方法,十分钟就能建好集群?当然有,用 sealos 就好了,只需一条命令即可跨主机安装所有依赖,不需要 ansible,不需要 ssh 登录到其他机器,安装之前需要做一些准备工作:
- 所有节点安装并启动 docker
- 下载 kubernetes 离线安装包
- 下载最新版本 sealos(目前稳定版是 2.0.4)
我的机器规划是这样的:
| Hostname | IP | Role |
|---|---|---|
| sealos-node1 | 192.168.0.2 | master |
| sealos-node2 | 192.168.0.3 | node |
| sealos-node3 | 192.168.0.4 | node |
安装步骤分为以下几步:
1、在 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
2、没有了。
真没有了,如果想了解原理,请查看 sealos 的官方文档。
下面就正式进入 KubeSphere 的安装环节。
2. 安装 KubeSphere
1、首先将 ks-installer 仓库克隆到 master 节点上:
$ git clone https://github.com/kubesphere/ks-installer -b advanced-2.0.2
2、在 Kubernetes 集群中创建名为 kubesphere-system 和 kubesphere-monitoring-system 的 namespace。

3、创建 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
4、创建 etcd 的证书 Secret。
注:根据集群实际 etcd 证书位置创建;
- 若 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
- 若 etcd 没有配置证书,则创建空 Secret(以下命令适用于 Kubeadm 创建的 Kubernetes 集群环境):
$ kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs
我这里是使用 sealos 搭建的集群,可以通过查看 etcd 的资源清单文件来获取它的证书:

5、修改部署文件
由于 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。
6、自定义 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 了。

默认的集群管理员账号为:
- 用户名:admin
- 密码:P@88w0rd

详细的使用方式可以参考官方文档:https://kubesphere.io/docs/zh-CN/
3. 参考资料
微信公众号
扫一扫下面的二维码关注微信公众号,在公众号中回复◉加群◉即可加入我们的云原生交流群,和孙宏亮、张馆长、阳明等大佬一起探讨云原生技术

Kubernetes Dashboard 终结者:KubeSphere的更多相关文章
- Kubernetes Dashboard - 每天5分钟玩转 Docker 容器技术(173)
前面章节 Kubernetes 所有的操作我们都是通过命令行工具 kubectl 完成的.为了提供更丰富的用户体验,Kubernetes 还开发了一个基于 Web 的 Dashboard,用户可以用 ...
- Kubernetes dashboard安装
1. To download Dashboard plugin deployment YAML file from internet. #cd /home #mkdir k8s #cd k8s # w ...
- centos7下kubernetes(5。部署kubernetes dashboard)
基于WEB的dashboard,用户可以用kubernetes dashboard部署容器话的应用,监控应用的状态,执行故障排查任务以及管理kubernetes各种资源. 在kubernetes da ...
- kubernetes学习笔记之十一:kubernetes dashboard认证及分级授权
第一章.部署dashboard 作为Kubernetes的Web用户界面,用户可以通过Dashboard在Kubernetes集群中部署容器化的应用,对应用进行问题处理和管理,并对集群本身进行管理.通 ...
- Mac搭建kubernetes dashboard全流程
1. 下载dashboard文件: curl -o kubernetes-dashboard.yaml https://raw.githubusercontent.com/kubernetes/das ...
- kubernetes Dashboard 使用RBAC 权限认证控制
kubernetes RBAC实战 环境准备 先用kubeadm安装好kubernetes集群,[包地址在此](https://market.aliyun.com/products/56014009/ ...
- docker for mac 安装 kubernetes、kubernetes dashboard
安装参考地址(按照此文档,安装成功):https://yq.aliyun.com/articles/508460 官方说明:https://kubernetes.io/docs/tasks/acces ...
- Kubernetes学习之路(十九)之Kubernetes dashboard认证访问
Dashboard:https://github.com/kubernetes/dashboard 一.Dashboard部署 由于需要用到k8s.gcr.io/kubernetes-dashboar ...
- Kubernetes dashboard 配置
安装前准备 下载dashboard的yaml文件 wget -O kube-dashboard.yaml https://git.io/kube-dashboard-no-rbac 这个版本是没有权限 ...
随机推荐
- 吉特日化MES-电子批记录普通样本
在实施吉特日化配料系统的时候,客户希望一键式生成生产过程电子批记录,由于功能的缺失以及部分设备的数据暂时还无法完全采集到,先做一个普通样本的电子批记录格式打印. 电子批记录包含如下几个部分: 1. ...
- Redis 学习笔记(篇九):主从复制
Redis 中,可以通过执行 savleof 命令或者设置 slaveof 选项,让一个服务器去复制另一个服务器,我们称被复制的服务器为主服务器,而对主服务器进行复制的服务器则被称为从服务器. Red ...
- HDU 4417
题意略. 思路: 仔细思考这个题目会发现,它其实是要你查询两次,第一是要规定l,r的范围,第二是要在范围内查询小于等于H的个数.所以有的人说要用主席树. 现在,如果我们能省去范围内对h的查询呢?也就是 ...
- python 3.7.4下载与安装的问题
发病时间:2019 年 8 月12 日 周一 1.操作系统环境: Win10 64位 2.pyhon版本3.7.4 python官网地址:www.python.org 本机下载的文件名为:python ...
- Centos安装和配置Mysql5.7
[root@localhost ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm -bash ...
- Leetcode之二分法专题-1011. 在 D 天内送达包裹的能力(Capacity To Ship Packages Within D Days)
Leetcode之二分法专题-1011. 在 D 天内送达包裹的能力(Capacity To Ship Packages Within D Days) 传送带上的包裹必须在 D 天内从一个港口运送到另 ...
- Collection集合与Map集合的知识点梳理
在Java中集合分为单列集合(Collection)与双列集合(Map),本文主要对两种集合的常用实现类作一介绍,如果有不足,恳请指教更正. 1.前言 说到集合肯定要介绍下集合的概念与特点:集合是一个 ...
- JS-特效 ~ 02. 屏幕滚动事件、 DTD、scroll、顶部悬浮导航、两侧跟随广告、返回顶部小火煎
ceil 向上取整 floor 向下取整 round 四舍五入 缓动动画 动画原理 = 盒子位置 + 步长 清除定时器 步长越来越小 盒子位置 = 盒子本身位置 + (目标位置-本身位置)/n(最好为 ...
- 解决homebrew下install时出现的问题
在homebrew下install influxdb时出现error: Error: Failure while executing: git config --local --replace-a ...
- 【3】Decision tree(决策树)
前言 Decision tree is one of the most popular classification tools 它用一个训练数据集学到一个映射,该映射以未知类别的新实例作为输入,输出 ...