通过 Web UI (Dashboard) 界面,可以对集群的资源进行管理、显示正在运行的应用,查看资源状态,查看集群信息。本文将介绍如何安装部署 Kubernetes Dashboard 图形化界面。
项目地址:
系统环境
属性 | 参数 |
---|---|
系统环境: | CentOS Linux release 7.5.1804 (Core) |
软件版本: | Kubernetes v1.14.0 |
Docker version 19.03.2, build 6a30dfc | |
Helm v3.0.0-beta.3 | |
网络信息: | k8s-master x 1 / 172.31.253.28 |
k8s-node01 x 1 / 172.31.253.29 |
第一步、下载部署文件
Kubernetes v1.14.0 and Dashboard v2.0.0-beta1
根据 Release 描述,Kubernetes 1.14 应该使用 Dashboard v2.0.0-beta1 版本:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta1/aio/deploy/recommended.yaml
Kubernetes v1.16.2 and Dashboard v2.0.0-rc3
根据 Release 描述,v2.0.0-rc3 与 Kubernetes 1.16 兼容;而 v2.0.0-rc4 由于 Kubernetes API 版本之间的重大更改,某些功能无法正常使用。因此我们部署 v2.0.0-rc3 版本:
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc3/aio/deploy/recommended.yaml
第二步、调整部署文件
根据自己的需要修改部署文件:
使用私有镜像地址
比如修改镜像地址,使用私有镜像仓库中的镜像:
1)拉取目标镜像,创建标签,推送虽有仓库;
2)修改 YAML 文件;
修改命名空间位置
2)使用自己规划的命名空间;
第三步、应用部署文件
官方配置使用 kubernetes-dashboard 命令空间(由于是 beta 版本,因此放在单独的命名空间中,便于后期清理)。
#!/bin/sh # 删除旧命名空间(可选) kubectl delete ns kubernetes-dashboard # 应用部署文件 kubectl apply -f recommended.yaml
# 登录仪表盘
-「SKIP button in kubernetes dashboard is missing #703」
在新版本的Kubernetes Dashboard中,出于安全考虑,不再提供SKIP按钮,所以通过Dashboard集群操作时,需要先创建口令。
-「How to sign in kubernetes dashboard?」
关于如何生成口令可以参考该文章。
# 暴露服务(Ingress)
为了允许外部访问,我们通过Ingress暴露服务,但是要进行“特殊配置”。情况是这样的,前端Nginx Ingress会解码HTTPS连接,然后向后端的Dashboard传递HTTP请求,而Dashboard只处理HTTPS连接,这就导致无法连接。解决办法有两个:使Dashboard监听80端口;将HTTPS连接直通Dashboard容器。
方法一、使Dashboard监听80端口
我们并不想介绍,并不安全,也不是官方推荐做法。下面是容器启动参数:
--auto-generate-certificates=false --insecure-bind-address=0.0.0.0 --port=80 --insecure-port=9090 --enable-insecure-login
通过上述参数启用HTTP协议(这可是别人传给我的)。
方法二、将HTTPS连接直通Dashboard容器
这是我们目前采用的方法,需要进行以下操作:
1)由于Nginx Ingress Controller默认禁用SSL直通,所以要修改它的资源定义(Daemonset或Deployment),在容器启动参数中添加''--enable-ssl-passthrough''选项,以启用SSL直通。但是这只是启用SSL直通功能,而进行SSL直通需要单独配置。
2)在Dashboard的Ingress定义中,添加''nginx.ingress.kubernetes.io/ssl-passthrough: true''注解,以进行直通。
3)如果想要配置TLS证书,参考「[[05.Kubernetes Cluster:z.Error List (Kubernetes):DASHBOARD - Chrome NET ERR CERT INVALID|DASHBOARD - Chrome NET ERR CERT INVALID]]」笔记,过程是类似的(修改kubernetes-dashboard-certs密钥)。
最后绑定HOST进行访问测试即可(详细过程略过)。
相关链接
Kubernetes/TAKS/Web UI (Dashboard)
GitHub/kubernetes/dashboard/docs/user/access-control/creating-sample-user.md
相关文章
「Kubernetes」- 部署NGINX Ingress Controller组件
「Kubernetes」- 安装cert-manager组件
「K8s」- Traefik Installation
「NGINX Ingress Controller」- 修改默认重定向状态码
「Rook-Ceph」- 集群环境搭建
参考文献
GitHub/helm/charts/stable/kubernetes-dashboard
GitHub/kubernetes/dashboard/v2.0.0-beta4
NGINX Ingress Controller/Command line arguments
NGINX Ingress Controller/Annotations/SSL Passthrough