原文链接: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-systemkubesphere-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 集群上安装 KubeSphere

微信公众号

扫一扫下面的二维码关注微信公众号,在公众号中回复◉加群◉即可加入我们的云原生交流群,和孙宏亮、张馆长、阳明等大佬一起探讨云原生技术

Kubernetes Dashboard 终结者:KubeSphere相关推荐

  1. 云原生Java架构师(五)Kubernetes上安装KubeSphere

    目录 一.简介 二. 安装流程 三.安装Docker 四.安装 Kubernetes 4.1 准备基础环境 4.2 安装kubelet.kubeadm.kubectl 4.3 初始化master节点 ...

  2. Kubernetes Dashboard、 Rancher、 Kuboard什么关系

    Kubernetes 已然是当下容器编排领域事实上的标准,各大云服务商都急于推出 Kubernetes 服务,互联网公司也纷纷跟进,将自己的应用容器化,并使用 Kubernetes 编排. 在 Kub ...

  3. 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告

    阿里云容器服务Kubernetes 已修复Dashboard漏洞CVE-2018-18264,本文介绍该漏洞的影响版本及解决方法.阿里云容器服务Kubernetes内建的Kubernetes Dash ...

  4. 搭建kubernetes DashBoard

    1.什么是kubernetes DashBoard kubernetes中完成的所有操作可以通过命令行工具kubectl完成的.其实,为了提供更丰富的用户体验,kubernetes还开发了一个基于we ...

  5. Kubernetes Dashboard - 每天5分钟玩转 Docker 容器技术(173)

    前面章节 Kubernetes 所有的操作我们都是通过命令行工具 kubectl 完成的.为了提供更丰富的用户体验,Kubernetes 还开发了一个基于 Web 的 Dashboard,用户可以用 ...

  6. kubernetes1.8.4 安装指南 -- 11. 安装kubernetes dashboard

    接下来安装WebUI Dashboard dashboard的版本兼容性 所以接下来安装的是1.8.0版本. 参照文档https://github.com/kubernetes/dashboard/w ...

  7. 有史以来最详细 安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题)

    安装部署Kubernetes Dashboard (补充解决官方出现的一些RBAC CERT等问题) 官方文档:https://github.com/kubernetes/dashboard 参考文章 ...

  8. Kubernetes Dashboard on Ubuntu 16.04安装记录

    2019独角兽企业重金招聘Python工程师标准>>> Kubernetes Dashboard on Ubuntu 16.04安装记录 以下内容在Kubernetes 1.9.3 ...

  9. [原]部署kubernetes dashboard(二)

    #######################    以下为声明  ##################### 此文档是之前做笔记在两台机上进行的实践,kubernetes处于不断开发阶段 不能保证每 ...

  10. [k8s]kubernetes dashboard的安装

    之前一直使用的是命令行,但是又觉得如果连控制台都还没有动手实践过会不会有点low 1.安装dashboard 参阅官网的安装方法,https://github.com/kubernetes/dashb ...

最新文章

  1. 云计算读书笔记(二)
  2. 目标检测中的Tricks
  3. GUN Global + Vim及其插件 打造Android源码阅读器
  4. delphi数组问题
  5. 昕灵感应流行坊(Shop.25941.Cn)^_^全新开张
  6. [转]VS2010+MFC解析Excel文件中数据
  7. 大学生及转行学IT编程,必须做到这4点,做不到!建议放弃编程方向
  8. leetcode - 368. 最大整除子集
  9. 对飞行前请求的响应未通过访问控制检查:它没有http ok状态。_HTTP 缓存
  10. Mysql主键和外键
  11. 智能车仿真 —— 室外光电创意组(racecar车模仿真,阿克曼车辆模型)
  12. java压缩文件夹下所有文件
  13. Delphi惹谁了?
  14. 眼科赛道的“觉醒年代”,清晰医疗赴港能否具备后发优势?
  15. 入门力扣自学笔记118 C++ (题目编号1413)
  16. Alpine执行bash
  17. 炫酷可视化教程 Cufflinks 来啦!!!
  18. C语言中abs()函数和fabs()函数以及fabsf()函数的区别
  19. 学妹教你并发编程的三大特性:原子性、可见性、有序性
  20. 英语语法笔记——状语从句(五)

热门文章

  1. 流程图基本图形的含义
  2. Spring系列技术实战(项目搭建、知识点总结)
  3. 谷歌浏览器为什么不能自定义安装路径?
  4. JAVA小项目-银行管理系统(图形化界面)2-开户与挂失
  5. vue 动态显示实时时间
  6. python读取lmdb文件_LMDB文件读取器
  7. 最新免费纯净版PE制作工具V2.1【更新说明】
  8. codeblocks20.03汉化版 附汉化补丁|codeblocks汉化版
  9. linux设置ipsan_linux挂载ipsan服务器
  10. realtek高清晰音频管理器打不开怎么办?