「Kubernetes」- 图形化管理界面(Dashboard) @20210417
问题描述
通过 Web UI (Dashboard) 界面,能够对集群的资源进行管理、显示正在运行的应用,查看资源状态,查看集群信息。
该笔记将记录:在 Kubernetes Cluster 中,如何安装部署 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 |
第一步、下载部署文件
根据 Release 描述,v2.0.0-rc3 与 Kubernetes 1.16 兼容;
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc3/aio/deploy/recommended.yaml
而 v2.0.0-rc4 由于 Kubernetes API 版本之间的重大更改,某些功能无法正常使用。因此,我们才选择部署 v2.0.0-rc3 版本。
第二步、调整部署文件
根据自己的需要修改部署文件:
1)修改镜像地址,以使用私有镜像仓库中的镜像:这需要我们拉取目标镜像,创建镜像标签并推送似有仓库;然后,修改 YAML 文件以使用私有镜像;
2)修改命名空间位置,将其部署到自定义的命名空间;
第三步、应用部署文件
官方配置使用 kubernetes-dashboard 命令空间(由于是 beta 版本,因此放在单独的命名空间中,便于后期清理):
# 删除旧命名空间(可选) kubectl delete ns kubernetes-dashboard # 应用部署文件 kubectl apply -f recommended.yaml
第四步、登录仪表盘
在新版本的 Kubernetes Dashboard 中,出于安全考虑,不再提供 SKIP 按钮,所以通过 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证书,参考「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
相关文章
「Rook-Ceph」- 常见错误汇总
「Helm」- 安装
「Rook-Ceph」- 创建共享文件系统
「Rook-Ceph」- 安装仪表盘
cert-manager.yaml
参考文献
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
SKIP button in kubernetes dashboard is missing #703
How to sign in kubernetes dashboard?