部署Kubernetes Dashboard
Dashboard简介
Dashboard 是基于网页的 Kubernetes 用户界面。 可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。
Dashboard创建
#创建pods
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
Dashboard pod状态查看
执行命令kubectl get pods -n kubernetes-dashboard查看运行的dashboard pod
[root@k8s-master01 ~]# kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-5657497c4c-dq5zc 1/1 Running 0 8h
kubernetes-dashboard-78f87ddfc-t9mkl 1/1 Running 0 8h
如果要删除运行的dashboard pod,执行命令kubectl delete pods -n kubernetes-dashboard <pod-name>
Dashboard Service查看
执行命令kubectl get services -n kubernetes-dashboard查看正在运行的dashboard services,可以看到dashboard的name和类型,如果要对外提供访问,可以设置为NodePort,即对外提供端口进行访问,如:kubernetes-dashboard NodePort 10.107.169.51 <none> 443:30368/TCP 8 就是一个对外的服务,而30368则是对外端口。
[root@k8s-master01 ~]# kubectl get services -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.108.113.165 <none> 8000/TCP 8h
kubernetes-dashboard NodePort 10.107.169.51 <none> 443:30368/TCP 8
修改NodePort类型
上述执行命令已经看到了Service类型,如果你的Service类型是ClusterIP,尝试更改为NodePort类型。这将使得Dashboard可以通过节点的IP地址和指定的端口进行访问。通过命令kubectl edit service kubernetes-dashboard -n kubernetes-dashboard,将type: ClusterIP 改为 type: NodePort
[root@k8s-master01 kubernetes_file]# kubectl edit service kubernetes-dashboard -n kubernetes-dashboard
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |creationTimestamp: "2023-11-21T00:44:43Z"labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboardresourceVersion: "374070"uid: acb66186-6e42-4b80-8087-ed84bf01211e
spec:clusterIP: 10.107.169.51clusterIPs:- 10.107.169.51internalTrafficPolicy: ClusteripFamilies:- IPv4ipFamilyPolicy: SingleStackports:- port: 443protocol: TCPtargetPort: 8443selector:k8s-app: kubernetes-dashboardsessionAffinity: Nonetype: NodePort
status:
再检查 dashboard 服务状态:
运行以下命令检查 `dashboard 服务的状态:
[root@k8s-master01 kubernetes_file]# kubectl get services -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.108.113.165 <none> 8000/TCP 6m49s
kubernetes-dashboard NodePort 10.107.169.51 <none> 443:30368/TCP 7m2s
Dashboard后台访问
查询dashboard服务,查询到对应的服务与端口,就可通过https://ip+端口,进行访问,如:https://192.168.31.150:30368/

打开了Kubernetes Dashboard页面
Dashboard token获取
创建服务账户
使用 Kubernetes 的服务帐户机制创建新用户,授予该用户管理员权限并使用与该用户绑定的不记名令牌登录仪表板,重要提示:向仪表板的服务帐户授予管理员权限可能会存在安全风险。
admin-user我们首先使用命名空间中的名称创建服务帐户kubernetes-dashboard,通过命令vim dashboard-adminuser.yaml创建yaml文件,内容如下:
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
再通过命令kubectl apply -f dashboard-adminuser.yaml创建它
创建 ClusterRoleBinding
kops在大多数情况下,使用kubeadm或任何其他流行工具配置集群后,ClusterRole cluster-admin集群中已经存在。我们可以使用它并为ClusterRoleBinding我们的ServiceAccount. 如果不存在,那么您需要先创建该角色并手动授予所需的权限。
通过命令vim admin-user-role-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard
通过命令创建kubectl apply -f admin-user-role-binding.yaml
获取 ServiceAccount 的不记名令牌
现在我们需要找到可用于登录的令牌。执行以下命令:kubectl -n kubernetes-dashboard create token admin-user
[root@k8s-master01 kubernetes_file]# kubectl -n kubernetes-dashboard create token admin-user
将生成的token复制到web即可登录
eyJhbGciOiJSUzI1NiIsImtpZCI6IlgtbmMwN1hQY01SVmU4bUpFS19rVmZSN2ZmQW1sQ05ibzJmc2ZhS0NtTEkifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzAwNTMzOTY4LCJpYXQiOjE3MDA1MzAzNjgsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiZjY1YWYyMDktY2NhYy00OWY2LWFlNzMtMTI1Mzk1OTNlYTZhIn19LCJuYmYiOjE3MDA1MzAzNjgsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.cv2oqAxqPvHKt_QwW_9igHsGeW_WOfnucZiNSdPow_2IqCcboNgIqoThxzllEROBd-9-WohZszignVAPpHtyA03geX5tlKYFdRI5S6HG7g1K3eE8Li_2QvUAi3tlCuIXYnZOGClcHKQFSyEGU3KoTctD0uLiAuwmoLnszGVfJZB2NmVJPxw0C95TWwp2cPNVyVOOJxBWJG5UImDjzAqrthJNERP-3RjySGYgDsklWrar-saWrUrrVGXkm_viX-OCXzjkrPS2mEhHvAP2AUg8Dwp2nUHKlAU7zLgGP9D4nIs0DUyXOTPCj5BUmrcQKrGqqK6F57GRFMH6GHIXyvtazQ
为 ServiceAccount 获取长期持有者令牌
我们还可以使用绑定服务帐户的 Secret 创建一个令牌,该令牌将保存在 Secret 中:
apiVersion: v1
kind: Secret
metadata:name: admin-usernamespace: kubernetes-dashboardannotations:kubernetes.io/service-account.name: "admin-user"
type: kubernetes.io/service-account-token
创建Secret后,我们可以执行以下命令来获取Secret中保存的token:
kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d
复制token登录
eyJhbGciOiJSUzI1NiIsImtpZCI6IlgtbmMwN1hQY01SVmU4bUpFS19rVmZSN2ZmQW1sQ05ibzJmc2ZhS0NtTEkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJmNjVhZjIwOS1jY2FjLTQ5ZjYtYWU3My0xMjUzOTU5M2VhNmEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.WyrSX__DpMdd8PLxhe4Cf0Uwa9fK9i-6hhGC2qyOYxmqv8zJ0qN0JDOE_4WXO1Vr6MC7CJdJVBaRepA9YmR9E88IX2eAoS7O7B14BuNUqsrgG7STCIv4AgIgI29HDTtHvXh2VHcoGO1GWPsItdkgzn19V9U5jswKxXlftJ-mwZyd4_LiRwdurKfzcJLV39oWWezxLM3AjQlwdgkxty7EaOicMtZ6ttYUsPvQl9iHDDcDH8C0wMXnyGhgxjUHVX8kIysMwwdXlMgKtiQ1GhYzC785UtI4S9_nXyaA1QCS-UgPeoMbCmWAhziIugVjimndIVfD-XjCsok1BGfE1FfJhQ
Dashboard登录
输入token

登录成功

单击Sign in按钮即可。您现在已以管理员身份登录。

Doshbrond删除管理员
删除管理员ServiceAccount和ClusterRoleBinding.
kubectl -n kubernetes-dashboard delete serviceaccount admin-user
kubectl -n kubernetes-dashboard delete clusterrolebinding admin-user
相关文章:
部署Kubernetes Dashboard
Dashboard简介 Dashboard 是基于网页的 Kubernetes 用户界面。 可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 Dashboard创建 #创建pods kubectl apply -f https://raw.githubusercontent.com/kub…...
Java对List的操作
List<Person>转成map,并自定义key 假设有一List中有如下数据 Person{id100, name张三0100} Person{id101, name张三1100} Person{id102, name张三2100} Person{id103, name张三3100} Person{id104, name张三4100} Person{id105, name张三5100} Person{id106…...
git 将本地已有的一个项目上传到新建的git仓库的方法
将本地已有的一个非git项目上传到新建的git仓库的方法一共有两种 一、 克隆拷贝 第一种方法比较简单,直接用把远程仓库拉到本地,然后再把自己本地的项目拷贝到仓库中去。然后push到远程仓库上去即可。此方法适用于本地项目不是一个git仓库的情况。 具…...
基于Docker的安装和配置Canal
基本介绍 Canal介绍:Canal 是用 Java 开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件(数据库同步需要阿里的 Otter 中间件,基于 Canal)。 Canal背景:阿里巴巴 B2B 公司,因为…...
去除IDEA中代码的波浪线(黄色警示线)
去除IDEA中代码的波浪线 首先是点击File—>Settings 操作如下图所示: 然后点击Editor—>Inspections—>General—>Duplicated code fragment(去掉勾选)—>Apply—>OK 即可,详情请看下图所示:...
【Qt之QSplashScreen】开场动画使用:进度条加载及设置鼠标指针不转圈
效果 开场动画效果如下: 开场动画 介绍 QSplashScreen小部件提供了一个启动屏幕,可以在应用程序启动期间显示。 启动屏幕是一个小部件,通常在应用程序启动时显示。启动屏幕通常用于启动时间较长的应用程序(例如需要花费时间建立连接的数据…...
WPF Button点击鼠标左键弹出菜单
目录 ContextMenu介绍WPF实现点击鼠标左键弹出菜单如何禁用右键菜单如何修改菜单样式菜单位置设置 本篇博客介绍WPF点击按钮弹出菜单,效果如下: 菜单的位置、央视可以自定义。 实现技巧:不在xaml里菜单,在按钮左键按下的点击事件里…...
http库requests
http库requests requets简介第一个requestsrequests发送基本的HTTP请求requests处理请求参数requests处理响应requests处理Cookiesrequests处理sessionrequests使用代理requests设置请求头requests处理SSL证书验证requests错误处理和异常处理requests连接池requests请求重试...
package.json 依赖版本中的符号含义
依赖包的版本问题 实例说明~1.2.3主版本次要版本补丁版本;1.2.3 < version < 1.3.0;~1.2主版本次要版本;1.2.0 < version < 1.3.0~1主版本;1.0.0 < version < 2.0.0 符号实例版本范围说明1.0.01.0.0锁定1.0.0版本,必须这个版本。^会匹配最新的大…...
Python try except 用法
关键字解释trytry 就是执行代码的部分,但是对这部分代码没有信心就试一试嘛,这就是tryexcept很不幸,试的时候有错误,没事儿,except 帮你来兜底,它会输出错误,并继续执行下去else程序没有错误&am…...
代码随想录二刷 | 链表 | 翻转链表
代码随想录二刷 | 链表 | 翻转链表 题目描述解题思路 & 代码实现双指针法递归法 206.翻转链表 题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4…...
每日一题(LeetCode)----链表--两两交换链表中的节点
每日一题(LeetCode)----链表–两两交换链表中的节点 1.题目([24. 两两交换链表中的节点](https://leetcode.cn/problems/spiral-matrix/)) 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内…...
竞赛选题 身份证识别系统 - 图像识别 深度学习
文章目录 0 前言1 实现方法1.1 原理1.1.1 字符定位1.1.2 字符识别1.1.3 深度学习算法介绍1.1.4 模型选择 2 算法流程3 部分关键代码 4 效果展示5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 图像识别 深度学习 身份证识别…...
什么时候用@MapperScan 注解?
hello,我是小索奇,给大家讲解一下MapperScan注解的用法。 MapperScan 注解是 MyBatis 框架中的一个注解,它的主要作用是扫描指定包路径下的 Mapper 接口,将其注册为 Spring 的 Bean。这样,在使用 MyBatis 进行数据库操作时&#…...
MQTT.js
MQTT.js mqtt.js简介MQTT测试工具mqttboxMQTTX mqtt使用mqtt引入(方式一)mqtt引入(方式二)创建mqtt客户端连接到mqtt代理订阅topic处理接收到的消息重新连接取消订阅发布消息断开连接关闭客户端MQTT APIMQTT在VUE中使用MQTT在Reac…...
html滑动文章标题置顶
position: sticky; 基于用户的滚动位置来定位 首先封装一个组件 例如:AAA组件(注意,只能有一层盒子,不能在外面继续包一层div) <template><div class"box">{{title}}</div> </templa…...
Android11 桌面默认横屏导致任务键近期任务布局UI显示错误!
/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java 定义变量:private boolean stch false; keyCode KeyEvent.KEYCODE_APP_SWITCH 取消原来逻辑,采用广播打开近期任务后台 /*/ if (!keyguardOn…...
「Verilog学习笔记」根据状态转移图实现时序电路
专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 这是一个典型的米利型状态机。三段式即可解决。 米利型状态机:即输出不仅和当前状态有关,也和输入有关。 其中ST0,ST1,ST3的…...
使用DHorse发布SpringBoot项目到K8S
前言 在介绍DHorse的操作之前,先来介绍一下使用k8s发布应用的步骤,以SpringBoot应用为例进行说明。 1.首先从代码仓库下载代码,比如GitLab; 2.接着进行构建,比如使用Maven; 3.如果要使用k8s作为编排&am…...
Java修仙记之记录一次与前端女修士论道的经历
文章开始之前,想跟我念一句:福生无量天尊,无量寿佛,阿弥陀佛 第一场论道:id更新之争 一个天气明朗的下午,前端的小美女长发姐告诉我:嘿,小后端,你的代码报错了 我答道&am…...
CANN/asc-devkit算子属性设置API
AddAttr 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/ca…...
Agent Input Compiler:本地AI编程助手上下文优化工具详解
1. 项目概述:一个为AI编码工具“编译”上下文的本地优先工具如果你用过Cursor、Claude Code这类AI编程助手,肯定遇到过这样的场景:你想让它帮你修改一个函数,结果它一股脑地把整个项目,甚至node_modules里的package.js…...
通用人工智能系统(GPAIS)的技术挑战与可信AI治理框架
1. GPAIS:从概念到现实,我们离“通用”还有多远?如果你关注AI领域,最近几年一定被各种“全能”模型刷过屏。从能写代码、画图、聊天的ChatGPT,到能处理多模态信息的GPT-4V,再到各种宣称能“理解世界”的智能…...
AI伦理框架实战:IEEE与WEF双轨制如何指导负责任的AI系统开发
1. 项目概述:为什么我们需要在AI项目中嵌入伦理框架?最近几年,AI项目从实验室走向了千家万户和各行各业。作为一名从业者,我亲眼见证了从“能用就行”到“必须好用且安全”的观念转变。早期我们更关注模型的准确率、响应速度&…...
孤骑day25
...
除了ChatGPT,SSE还能这么用?用Nginx代理构建一个实时日志仪表盘
实时日志监控新思路:基于Nginx与SSE的高效实践 日志监控一直是开发运维工作中的关键环节。传统的轮询方式不仅效率低下,还增加了服务器负担。今天我要分享的是一种基于Server-Sent Events(SSE)技术的实时日志监控方案,结合Nginx反向代理实现…...
PL/SQL Developer从安装到效率翻倍:一份超全的界面美化、代码提示与快捷键配置指南
PL/SQL Developer从安装到效率翻倍:一份超全的界面美化、代码提示与快捷键配置指南 当你每天面对数据库开发工作时,一个得心应手的工具能让你事半功倍。PL/SQL Developer作为Oracle数据库开发的利器,其强大功能远不止于基础连接和执行SQL。本…...
深度学习在人工耳蜗中的应用:从语音增强到医学影像分析
1. 项目概述:当深度学习“听见”声音作为一名长期在医疗科技与信号处理交叉领域摸爬滚打的从业者,我见证过太多技术从实验室走向临床的艰难旅程。其中,“深度学习在人工耳蜗应用中的进展”这个话题,尤其让我感到兴奋。它远不止是一…...
字节Agent岗三面:你们线上跑了 RAG,那你怎么衡量它的效果好不好?
👔面试官:你们线上跑了 RAG,那你怎么衡量它的效果好不好? 🙋♂️我:我主要看用户反馈,有人投诉就说明效果不好,没人投诉就还行。 👔面试官:靠用户投诉来评…...
通过审计日志功能回溯与分析团队的API调用情况
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过审计日志功能回溯与分析团队的API调用情况 作为团队的技术负责人,在引入大模型能力支持业务创新的同时,…...
