「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?


posted @ 2021-04-17 12:50  研究林纳斯写的  阅读(348)  评论(0编辑  收藏  举报