Kubernetes(k8s) Web-UI界面(一):部署和访问仪表板(Dashboard)
一.系统环境
本文主要基于Kubernetes1.21.9和Linux操作系统CentOS7.4。
服务器版本 | dashboard版本 | docker软件版本 | Kubernetes(k8s)集群版本 | CPU架构 |
---|---|---|---|---|
CentOS Linux release 7.4.1708 (Core) | v2.5.1 | Docker version 20.10.12 | v1.21.9 | x86_64 |
Kubernetes集群架构:k8scloude1作为master节点,k8scloude2,k8scloude3作为worker节点。
服务器 | 操作系统版本 | CPU架构 | 进程 | 功能描述 |
---|---|---|---|---|
k8scloude1/192.168.110.130 | CentOS Linux release 7.4.1708 (Core) | x86_64 | docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calico | k8s master节点 |
k8scloude2/192.168.110.129 | CentOS Linux release 7.4.1708 (Core) | x86_64 | docker,kubelet,kube-proxy,calico | k8s worker节点 |
k8scloude3/192.168.110.128 | CentOS Linux release 7.4.1708 (Core) | x86_64 | docker,kubelet,kube-proxy,calico | k8s worker节点 |
二.前言
Kubernetes仪表板(Dashboard)是一个基于Web的用户界面,用于可视化监控和管理Kubernetes集群。它提供了对集群资源、应用程序部署和状态等信息的实时查看和操作。
使用Kubernetes仪表板(Dashboard)的前提是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Centos7 安装部署Kubernetes(k8s)集群》https://www.cnblogs.com/renshengdezheli/p/16686769.html。
三.仪表板(Dashboard)简介
Kubernetes仪表板是一个功能强大的工具,它允许您以图形化方式管理Kubernetes集群。通过仪表板,您可以:
- 查看集群的总体概况、节点状态和资源使用情况。
- 管理和监控Pod、Deployment、Service等Kubernetes对象。
- 进行应用程序的故障诊断和调试。
- 创建和编辑Deployment、Service、Ingress等资源配置。
了解了仪表板的基本功能后,让我们开始部署和访问Kubernetes仪表板。
四.部署Kubernetes仪表板(Dashboard)
本次部署的是2.5.1版本的dashboard,下载dashboard的安装yaml文件。
[root@k8scloude1 safe]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
[root@k8scloude1 safe]# ls recommended.yaml
recommended.yaml
查看dashboard需要的镜像。
[root@k8scloude1 safe]# grep image recommended.yaml
image: kubernetesui/dashboard:v2.5.1
imagePullPolicy: Always
image: kubernetesui/metrics-scraper:v1.0.7
提前在所有节点下载dashboard镜像和metrics-scraper镜像,外国的镜像下载不下来,我们下载阿里云的镜像。
在k8scloude1节点下载镜像。
[root@k8scloude1 safe]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.7
v1.0.7: Pulling from google_containers/metrics-scraper
18dd5eddb60d: Pull complete
1930c20668a8: Pull complete
Digest: sha256:36d5b3f60e1a144cc5ada820910535074bdf5cf73fb70d1ff1681537eef4e172
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.7
registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.7
[root@k8scloude1 safe]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.5.1
v2.5.1: Pulling from google_containers/dashboard
d1d01ae59b08: Pull complete
a25bff2a339f: Pull complete
Digest: sha256:cc746e7a0b1eec0db01cbabbb6386b23d7af97e79fa9e36bb883a95b7eb96fe2
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.5.1
registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.5.1
[root@k8scloude1 safe]# docker images | egrep 'dashboard|metrics-scraper'
registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard v2.5.1 7fff914c4a61 10 days ago 243MB
registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper v1.0.7 7801cfc6d5c0 9 months ago 34.4MB
kubernetes集群的worker节点也下载相关镜像。
[root@k8scloude2 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.5.1
[root@k8scloude2 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.7
[root@k8scloude2 ~]# docker images | egrep 'dashboard|metrics-scraper'
registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard v2.5.1 7fff914c4a61 10 days ago 243MB
registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper v1.0.7 7801cfc6d5c0 9 months ago 34.4MB
[root@k8scloude3 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.5.1
[root@k8scloude3 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.7
[root@k8scloude3 ~]# docker images | egrep 'dashboard|metrics-scraper'
registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard v2.5.1 7fff914c4a61 10 days ago 243MB
registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper v1.0.7 7801cfc6d5c0 9 months ago 34.4MB
修改yaml文件,把镜像换为我们下载好的镜像,镜像下载策略修改为imagePullPolicy: IfNotPresent。
[root@k8scloude1 safe]# vim recommended.yaml
[root@k8scloude1 safe]# grep image recommended.yaml
#image: kubernetesui/dashboard:v2.5.1
image: registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard:v2.5.1
imagePullPolicy: IfNotPresent
#image: kubernetesui/metrics-scraper:v1.0.7
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper:v1.0.7
imagePullPolicy: IfNotPresent
可以发现dashboard是以sa服务账号kubernetes-dashboard运行的,关于服务账号Service Accounts详细内容,请查看博客《Kubernetes(k8s)服务账号Service Accounts》。
[root@k8scloude1 safe]# grep serviceAccountName recommended.yaml
serviceAccountName: kubernetes-dashboard
serviceAccountName: kubernetes-dashboard
安装dashboard。
[root@k8scloude1 safe]# kubectl apply -f recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
kubectl get all查看所有资源。
[root@k8scloude1 safe]# kubectl get all -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
pod/dashboard-metrics-scraper-7f458d9467-mrb7v 1/1 Running 0 73s
pod/kubernetes-dashboard-7bf6f979bf-c4ckm 1/1 Running 0 73s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dashboard-metrics-scraper ClusterIP 10.100.179.87 <none> 8000/TCP 73s
service/kubernetes-dashboard ClusterIP 10.106.18.67 <none> 443/TCP 73s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/dashboard-metrics-scraper 1/1 1 1 73s
deployment.apps/kubernetes-dashboard 1/1 1 1 73s
NAME DESIRED CURRENT READY AGE
replicaset.apps/dashboard-metrics-scraper-7f458d9467 1 1 1 73s
replicaset.apps/kubernetes-dashboard-7bf6f979bf 1 1 1 73s
dashboard的pod都运行起来了。
[root@k8scloude1 safe]# kubectl get pod -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-7f458d9467-mrb7v 1/1 Running 0 2m28s
kubernetes-dashboard-7bf6f979bf-c4ckm 1/1 Running 0 2m28s
查看svc,kubernetes-dashboard这个svc的服务发布类型为ClusterIP,外部不能访问,我们需要修改为NodePort,关于svc的详细内容,请查看博客《Kubernetes(k8s)服务service:service的发现和service的发布》。
[root@k8scloude1 safe]# kubectl get svc -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.100.179.87 <none> 8000/TCP 2m48s
kubernetes-dashboard ClusterIP 10.106.18.67 <none> 443/TCP 2m48s
修改svc,把type :ClusterIP改为type: NodePort。
[root@k8scloude1 safe]# kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
service/kubernetes-dashboard edited
现在kubernetes-dashboard的svc类型就变为NodePort了。
[root@k8scloude1 safe]# kubectl get svc -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.100.179.87 <none> 8000/TCP 5m40s
kubernetes-dashboard NodePort 10.106.18.67 <none> 443:31997/TCP 5m40s
五.访问Kubernetes仪表板(Dashboard)
5.1 使用token登录Dashboard
浏览器访问ip:31997即可访问dashboard界面(注意http访问不了),访问https://192.168.110.130:31997/,选择使用token登录。
登录Dashboard的这个token,去对应的sa账号kubernetes-dashboard的secret里找。
每创建一个sa,都会有一个对应的secret(secret命名格式为:sa名-tokenXXXX)。
[root@k8scloude1 safe]# kubectl get secrets -n kubernetes-dashboard
NAME TYPE DATA AGE
default-token-dxmmt kubernetes.io/service-account-token 3 11m
kubernetes-dashboard-certs Opaque 0 11m
kubernetes-dashboard-csrf Opaque 1 11m
kubernetes-dashboard-key-holder Opaque 2 11m
kubernetes-dashboard-token-26pf9 kubernetes.io/service-account-token 3 11m
因为dashboard是以sa账号kubernetes-dashboard运行的,所需的token就在对应的secret里。
[root@k8scloude1 safe]# kubectl get sa -n kubernetes-dashboard
NAME SECRETS AGE
default 1 14m
kubernetes-dashboard 1 14m
查看kubernetes-dashboard-token-26pf9的描述信息,如下token就是dashboard登录所需的token。
[root@k8scloude1 safe]# kubectl describe secrets kubernetes-dashboard-token-26pf9 -n kubernetes-dashboard
Name: kubernetes-dashboard-token-26pf9
Namespace: kubernetes-dashboard
Labels: <none>
Annotations: kubernetes.io/service-account.name: kubernetes-dashboard
kubernetes.io/service-account.uid: ab3eeadd-eea3-4ab5-9ef5-d3d592a1d272
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1066 bytes
namespace: 20 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6InJJaUNYYXpKanA2Qkg4SW4yemE1MVM4MTJxeXpVbV9sQkk5RF9CaVpLZlEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi0yNnBmOSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImFiM2VlYWRkLWVlYTMtNGFiNS05ZWY1LWQzZDU5MmExZDI3MiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.j11A6AmYaY1YKKxHXTF8zlzf21UYkBYW_QTSVtGr_G0ERZDlYyXbrxMWBGdByTNboptgjFRx-rfqKDE3S_zQKSYPbJvuch3sn4Tg8kD4j1aMWK6Kd5un5MUGYLTPs-HyzPgcfAEqRszlkDTSfEkss721lcqAyWpFcVl6RZLA22fOn1m27Qlsa3Sr8aS8GsvMxGVvEjeEtXhJujvF_U73G7QSy26Iz9uWtcZ6EfaMsyXasiUXkcOfVqiMGrbC29H3PvaGA5J5vrwdaPaxc6DQbhJG67jICve22tWH8Iu_Li9UsqFZnQUxLL6rOO2Pwa8vgakSqqT5hA6CWqAYNe1ttA
输入token之后成功登录dashboard。
5.2 对sa账号kubernetes-dashboard授权
此时发现什么资源都没有
查看报错信息,发现是没有权限。
对sa账号kubernetes-dashboard绑定cluster-admin权限,授予管理员权限,关于授权的详细信息,请查看博客《Kubernetes(k8s)访问控制:权限管理之RBAC鉴权》。
对sa账号kubernetes-dashboard绑定cluster-admin权限,--serviceaccount的语法为:--serviceaccount=namespace名:sa账号。
[root@k8scloude1 safe]# kubectl create clusterrolebinding dashboardcrbinding --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:kubernetes-dashboard
clusterrolebinding.rbac.authorization.k8s.io/dashboardcrbinding created
授权之后,刷新浏览器,报错消失。
5.3 访问Dashboard
点击关于,查看dashboard版本。
此时,首页能看到相关信息了,点击命名空间,可以看到所有的命名空间了。
可以选择命名空间查看相关pod。
点击+可以创建资源,把yaml文件粘贴进去,然后点击上传,就可以创建资源了。
六.总结
本篇博客介绍了如何部署和访问Kubernetes仪表板。通过安装仪表板,您可以方便地管理和监控Kubernetes集群,并进行诊断和调试操作。
Kubernetes仪表板提供了直观的用户界面,使您能够更轻松地执行集群管理任务和应用程序配置。
七.附加信息
- Kubernetes仪表板对于展示和管理集群中的资源非常有用,但在生产环境中要小心谨慎地使用,并且合理限制访问权限。
- 建议在部署仪表板之前了解和熟悉Kubernetes的基本概念和操作,以便更好地利用仪表板进行管理和监控。
- 请确保您的Kubernetes版本与本文档中提到的版本匹配,以避免可能的不兼容性问题。
Kubernetes(k8s) Web-UI界面(一):部署和访问仪表板(Dashboard)的更多相关文章
- Kubernetes K8S之kube-prometheus概述与部署
Kubernetes K8S之kube-prometheus概述与部署 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7. ...
- Istio(二):在Kubernetes(k8s)集群上安装部署istio1.14
目录 一.模块概览 二.系统环境 三.安装istio 3.1 使用 Istioctl 安装 3.2 使用 Istio Operator 安装 3.3 生产部署情况如何? 3.4 平台安装指南 四.Ge ...
- HiveServer2的WEB UI界面
1.hive-site.xml配置如下: <property> <name>hive.server2.webui.host</name> <val ...
- kubernetes Helm-chart web UI添加
charts web ui 添加chart仓库 helm repo add cherryleo https://fileserver-1253732882.cos.ap-chongqing.myqcl ...
- kubernetes实践之二:Kubernetes可视WEB UI Dashboard搭建
Kubernetes可视WEBUI Dashboard搭建 支持浏览器:火狐 一.Dashboard下载地址 git clone https://github.com/kubernetes/kuber ...
- 基于 k8s-搭建 Kubernetes 的 web 管理界面
查看我们的k8s环境是否正常: 使用kubectl get nodes 获取我们的节点的信息: 到此说明我们的kubernetes环境是正常的,接下来就可以实验了 第一步在master上传所需的软件包 ...
- kafka自带没web ui界面,怎么办?安装个第三方的
见 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8.0.9和0.10以后版本)(图文详解)(默认端口或任意自定义端口)
- WEB UI 界面打印PDF
项目上看到的,感觉很厉害的样子,所以要存档... 说一下思路:画的SF,然后在WDA里调用SF,产生PDF数据流,然后在WDA里用PDF展示出来,UI调用... COMPONENTCONTROLLER ...
- azkaban web ui界面出现异常诡异“丑”界面的问题解决(图文详解)
前期博客 启动azkaban时出现User xml file conf/azkaban-users.xml doesn't exist问题解决(图文详解) 问题详情 [hadoop@master co ...
- Hbase配置WEB UI界面
1 找到各个节点下面的Hbase-site.xml文件,添加如下配置 <property> <name>hbase.master.info.port</name> ...
随机推荐
- 部署kubernetes官网博客
部署kubernetes官网博客 访问 https://kubernetes.io/ 有些时候不问题,部署离线内网使用官网以及博客, 各位尝鲜可以访问 https://doc.oiox.cn/ 安装d ...
- w10通过修改注册表实现禁止更新系统
对于Windows系统更新或驱动更新,并不是越新越好,当然新版本的系统可能带来了许多新的功能.漏洞修补.漂亮的用户界面和流畅的系统优化等,但是新版本的系统和驱动更新有可能会造成CPU占用居高不下,文件 ...
- Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】
Unity学习参考文档和开发工具 unity的官网文档:https://docs.unity3d.com/cn/current/Manual/ScriptingSection.html ■ 学习方式: ...
- devops|中小公司不要做研发效能度量
我特别反感那些不顾公司现状一上来就想要做研发效能度量的人,尤其是想把研发效能度量当成锤子四处去敲打螺丝钉的人. 没几个人的小公司上来就做研发效能度量,就如同普通人一上来直接问媒婆怎么能娶到迪丽热巴.解 ...
- Django简介 安装下载 app概念 主要目录介绍
目录 Django简介 前戏 Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,即模型M,视图V和模版T.这套框架是以比利时的吉普赛爵士吉他手Django Re ...
- 实例化对象 A a = new A();
"new" 在Java中代表实例化的意思, A a = new A()代表实例化了一个对象a, 这个对象a属于A类. 可以认为A是一个抽象概念, 对象a是一个实体(存储于内存), ...
- Spring Security 报:Encoded password does not look like BCrypt
SpringBoot 集成 Security 时,报 Encoded password does not look like BCrypt 原因:SecurityConfig 必须 Bean 的形式实 ...
- 百度飞桨(PaddlePaddle)-数字识别
手写数字识别任务 用于对 0 ~ 9 的十类数字进行分类,即输入手写数字的图片,可识别出这个图片中的数字. 使用 pip 工具安装 matplotlib 和 numpy python -m pip i ...
- 2023-03-28:有一根长度为 n 个单位的木棍,棍上从 0 到 n 标记了若干位置。 给你一个整数数组 cuts ,其中 cuts[i] 表示你需要将棍子切开的位置, 你可以按顺序完成切割,也可
2023-03-28:有一根长度为 n 个单位的木棍,棍上从 0 到 n 标记了若干位置. 给你一个整数数组 cuts ,其中 cuts[i] 表示你需要将棍子切开的位置, 你可以按顺序完成切割,也可 ...
- 2023-01-11:体育馆的人流量。编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。返回按 visit_date 升序排列 的结果表。 DROP TAB
2023-01-11:体育馆的人流量.编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录.返回按 visit_date 升序排列 的结果表. DROP TABL ...