Kubernetes 集群中安装和配置 Kubernetes Dashboard

前言

上篇成功部署Kubernetes集群后,为了方便管理和监控集群资源,安装Kubernetes Dashboard显得尤为重要。Kubernetes Dashboard 是一个通用的、基于 Web 的 UI,旨在让用户轻松地部署容器化应用到 Kubernetes 集群,并对这些应用进行故障排查以及管理集群资源。通过 Dashboard,你可以获取集群内运行的应用概览信息,创建或修改各种 Kubernetes 资源(如 Deployment、Job、DaemonSet 等),还可以执行弹性伸缩、滚动升级等操作。

一、准备工作

1. 确认Kubernetes集群状态

确保你的Kubernetes集群已经成功部署并处于运行状态。如果尚未部署,请先参考上两篇博文进行集群部署。

2.选择 Dashboard版本

前往 Dashboard官方下载页面,选择适配的版本进行下载。由于我的 Kubernetes 版本是 1.30.8,根据官方建议选择 kubernetes-dashboard-7.7.0 版本。
在这里插入图片描述

3. 安装Helm

从Kubernetes Dashboard 7.0.0版本开始,官方已经不再支持基于Manifest文件的安装方式,转而推荐使用Helm进行安装。因此,需要先安装Helm。
在这里插入图片描述

Helm和Kubernetes版本

Helm 版本与支持的 Kubernetes 版本有对应关系,详细内容请参考 Helm 官方文档:Helm 版本对应关系。根据Kubernetes的版本我们选择安装 Helm 3.15.x 版本。
在这里插入图片描述

安装Helm

用二进制版本安装

  • 下载Helm:访问Helm官方文档,根据操作系统下载相应版本的Helm二进制文件。
  • 解压并安装:将下载的二进制文件解压并移动到系统PATH中的目录(如/usr/local/bin)。
  • 初始化Helm:执行helm help检查Helm是否安装成功,并添加稳定仓库。
tar -zxvf helm-v3.15.x-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
helm help
helm repo add bitnami https://charts.bitnami.com/bitnami

二、安装Kubernetes Dashboard

使用 Helm 安装

首先添加 Dashboard 的 Helm 仓库并更新本地库:

helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
helm repo update

然后可以使用以下命令来安装最新版的 Dashboard:

helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \--namespace kubernetes-dashboard \--create-namespace

如果需要指定版本,则可以使用 --version 参数:

helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \--namespace kubernetes-dashboard \--create-namespace \--version 7.0.0 \--timeout 600s

如果有网络问题或超时,可以选择手动下载安装文件并在本地安装。

helm install kubernetes-dashboard /root/kubernetes-dashboard-7.7.0.tgz  --namespace kubernetes-dashboard  --create-namespace

如果想要在安装时修改默认参数,可以使用--set key=value[,key=value]的参数指定方式修改参数的数值。例如,

helm install kubernetes-dashboard/kubernetes-dashboard --name kubernetes-dashboard \--set=api.containers.resources.limits.cpu=200m

或者,可以在安装图表时提供指定上述参数值的 YAML 文件。例如,

helm install kubernetes-dashboard/kubernetes-dashboard --name kubernetes-dashboard -f values.yaml

提示:您可以使用默认使用的values.yaml作为参考,查找属性和默认值。

在这里插入图片描述

在这里插入图片描述

三、访问Dashboard

使用 Port Forwarding进行命令行代理

Port Forwarding 是一种临时性的解决方案,它允许你通过本地机器上的端口直接访问集群内部的服务。这对于开发人员来说非常方便,因为他们不需要对外暴露服务即可进行调试或测试。

方法概述

Port Forwarding 是一种临时性的解决方案,它允许你通过本地机器上的端口直接访问集群内部的服务。这对于开发人员来说非常方便,因为他们不需要对外暴露服务即可进行调试或测试。

开启访问

要通过 Port Forwarding 访问 Dashboard,请执行以下命令:

kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard 8443:443

这将Dashboard在 https://localhost:8443 上可用。

提示:测试完成可以通过按下Ctrl+C来终止端口转发

在这里插入图片描述

优点与缺点

这种方式的优点在于方法简单易用,无需更改任何集群配置,适合小规模测试或个人使用。但仅限于执行命令的本地机器,它是临时的,关闭终端后连接即断开,无法在其他机器上访问,并且每次使用时都需要手动开启端口转发。

修改服务类型为 NodePort

方法概述

NodePort 允许 Kubernetes 服务在各个集群节点的特定端口上对外暴露。这使得用户能够通过任意节点的 IP 地址和指定 NodePort 进行访问 Dashboard。(范围通常是 30000-32767),从而允许外部流量通过该端口进入集群并访问指定的服务。

开启访问

编辑 Dashboard 的服务配置,将其类型更改为 NodePort

kubectl patch svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'

若需要指定端口,可以指定一个固定的 nodePort

kubectl patch svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard --type='json' -p '[{"op":"add","path":"/spec/ports/0/nodePort","value":30000}]'

在这里插入图片描述

在这里插入图片描述

也可以直接使用编辑器编辑,然后保存退出即可
在这里插入图片描述

优点与缺点

这种方法一旦配置完成,只要集群存在就可以持续访问,提供了长期稳定的访问途径;同时可以直接通过任意节点 IP 加上指定端口号来访问服务,易于访问。但是,它也带来了较高的安全风险,如果未正确配置防火墙规则,可能会导致服务被未经授权的人访问;此外,还需要选择一个未被占用的端口,因此有一定的端口限制。

如果显示您的连接不是私密连接,在当前页面用键盘输入thisisunsafe,不是在地址栏输入,就直接输入,页面即会自动刷新进入网页。不行就多输入几次,但是要确保输入是正确的。具体请查看这篇博客

在这里插入图片描述

三、创建用户和token

创建ServiceAccount和ClusterRoleBinding

为了快速访问Dashboard,可以创建一个具有管理员权限的ServiceAccount,并生成一个临时Token:

cat > dashboard-user.yaml << EOFapiVersion: v1kind: ServiceAccountmetadata:name: admin-usernamespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:name: admin-userroleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-adminsubjects:- kind: ServiceAccountname: admin-usernamespace: kube-systemEOF# 创建用户kubectl  apply -f dashboard-user.yaml# 生成临时tokenkubectl -n kube-system create token admin-user

在这里插入图片描述
在这里插入图片描述

7.0以前的版本安装

下载配置文件

进入到master节点,下载dashboard对应版本的 recommended.yaml 文件

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml

设置访问端口

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

将type: ClusterIP 改为 type: NodePort,保存退出,会生成一个范围是 30000-32767的端口。
查看启动的端口

kubectl get svc -A |grep kubernetes-dashboard

在这里插入图片描述

在这里插入图片描述

创建访问账号

#创建访问账号,准备一个yaml文件; vi dash.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
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 dash.yaml

获取令牌访问

#获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

使用令牌登录

在这里插入图片描述

版本差异

对于最新的Kubernetes版本,官方确实更加强调安全性和最佳实践。因此,不推荐使用不过期的令牌。相反,官方建议使用短期有效的令牌,并且这些令牌应该定期轮换以减少潜在的安全风险。
新版的Kubernetes使用kubectl -n kubernetes-dashboard get secret会报错,secret不再默认自动挂载到Pod中,而是需要显式地请求。由于官方不推荐这种方式,所以本文也不再进行介绍。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/893425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入内核讲明白Android Binder【三】

深入内核讲明白Android Binder【三】 前言一、服务的获取过程内核源码解析1. 客户端获取服务的用户态源码回顾2. 客户端获取服务的内核源码分析2.1 客户端向service_manager发送数据1. binder_ioctl2. binder_ioctl_write_read3. binder_thread_write4. binder_transaction4.1 …

数据结构(四) B树/跳表

目录 1. LRU 2. B树 3. 跳表 1. LRU: 1.1 概念: 最近最少使用算法, 就是cache缓存的算法. 因为cache(位于内存和cpu之间的存储设备)是一种容量有限的缓存, 有新的数据进入就需要将原本的数据进行排出. 1.2 LRU cache实现: #include <iostream> #include <list>…

WPS不登录无法使用基本功能的解决方案

前言 WPS不登录无法使用基本功能的原因通常是为了同步数据、提供更多高级功能或满足软件授权要求。‌然而&#xff0c;一些用户可能出于隐私或便捷性的考虑&#xff0c;不愿意登录账号。在这种情况下&#xff0c;WPS可能会限制未登录用户的使用权限&#xff0c;导致工具栏变灰…

初步搭建并使用Scrapy框架

目录 目标 版本 实战 搭建框架 获取图片链接、书名、价格 通过管道下载数据 通过多条管道下载数据 下载多页数据 目标 掌握Scrapy框架的搭建及使用&#xff0c;本文以爬取当当网魔幻小说为案例做演示。 版本 Scrapy 2.12.0 实战 搭建框架 第一步&#xff1a;在D:\pyt…

Python网络自动化运维---用户交互模块

文章目录 目录 文章目录 前言 实验环境准备 一.input函数 代码分段解析 二.getpass模块 前言 在前面的SSH模块章节中&#xff0c;我们都是将提供SSH服务的设备的账户/密码直接写入到python代码中&#xff0c;这样很容易导致账户/密码泄露&#xff0c;而使用Python中的用户交…

通过frm和ibd文件恢复mysql数据

1.提取所有的文件名并查找出以frm结尾的 dir /t /b >1.txt 2.要准备的软件 1.mysql-utilities-1.6.5-winx64.msi 2.vcredist_x64.exe(c 2013) 3.利用frm生成sql文件 mysqlfrm --serverroot:123456localhost:3306 --port3308 D:\phpstudy_pro\Extensions\MySQL5.7.26\da…

notepad++下载安装及使用笔记

文章目录 可以打开多大的文件可以打开多大的文件和内存设置有关吗&#xff0c;如何设置? TODO 如果打不开太大的文件 拆分为200M的肯定可以打开Find All in CurrentDocument(在当前文档中找到所有) 下载从百度网盘下载从官网下载 主要为了本地看大日志方便&#xff0c;例如几百…

【面试题】java基础概念

以下是关于这道面试题的回答&#xff0c;包括JDK中一些相关概念的区别以及JIT的原理&#xff1a; JDK中相关概念区别 JDK、JRE和JVM JDK&#xff08;Java Development Kit&#xff09;&#xff1a;是Java开发工具包&#xff0c;它包含了JRE和一系列开发工具。JDK提供了编译、…

Linux内核中的InfiniBand核心驱动:verbs.c分析

InfiniBand(IB)是一种高性能、低延迟的网络互连技术,广泛应用于高性能计算(HPC)、数据中心和云计算等领域。Linux内核中的InfiniBand子系统通过提供一组核心API(称为Verbs API)来支持InfiniBand设备的操作。drivers/infiniband/core/verbs.c是InfiniBand核心驱动的重要组…

《CPython Internals》阅读笔记:p329-p335

《CPython Internals》学习第 16天&#xff0c;p329-p335 总结&#xff0c;总计 7 页。 一、技术总结 1.debugging p331, There are two types of debugger, console and visual——作者将 debugger分为两类&#xff1a;(1)console&#xff1a;lldb(MAC系统使用), GDB(Linux…

【2024年 CSDN博客之星】我的2024年创作之旅:从C语言到人工智能,个人成长与突破的全景回顾

我的2024年创作之旅&#xff1a;从C语言到人工智能&#xff0c;个人成长与突破的全景回顾 引言 回望2024年&#xff0c;我不仅收获了技术上的成长&#xff0c;更收获了来自CSDN平台上无数粉丝、朋友以及网友们的支持与鼓励。在这条创作之路上&#xff0c;CSDN不仅是我展示技术成…

【程序化广告】相关技术(RTB竞价原理、Cookie映射流程、数据统计原理、程序化创意、防作弊方法)

上一篇介绍了【程序化广告】广告投放流程/漏斗/要素/策略/指标&#xff0c;本篇介绍一下程序化广告所使用到的相关技术&#xff0c;包括RTB竞价原理、Cookie映射流程、数据统计原理、程序化创意、防作弊方法等。 1. RTB竞价原理 1&#xff09;竞价逻辑 用户开启电脑&#xf…

软件测试入门—用例设计中的场景图和状态迁移图

在软件测试领域&#xff0c;用例设计是一项至关重要的工作&#xff0c;它直接关系到软件质量的高低。而场景图和状态迁移图作为用例设计中的两种有效工具&#xff0c;能够帮助测试人员更全面、系统地设计测试用例。下面我们就来深入了解一下这两种图。 一、场景图 场景图主要…

数据表中的数据查询

文章目录 一、概述二、简单查询1.列出表中所有字段2.“*”符号表示所有字段3.查询指定字段数据4.DISTINCT查询 三、IN查询四、BETWEEN ADN查询1.符合范围的数据记录查询2.不符合范围的数据记录查询 五、LIKE模糊查询六、对查询结果排序七、简单分组查询1.统计数量2.统计计算平均…

第11章:Python TDD实现货币类加法运算初步

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…

前端Vue2项目使用md编辑器

项目中有一个需求&#xff0c;要在前端给用户展示内容&#xff0c;内容有 AI 生成的&#xff0c;返回来的是 md 格式&#xff0c;所以需要给用户展示 md 格式&#xff0c;并且管理端也可以编辑这个 md 格式的文档。 使用组件库 v-md-editor。 https://code-farmer-i.github.i…

Windows系统提示RunDLL PcaWallpaperAppDetect错误修复方法

最近&#xff0c;Win11 24H2预览版和Win10 LTSC 2025功能更新偶尔会触发RunDLL错误弹窗 具体表现为 //英文提示 Error in C:\WINDOWS\system32\PcaSvc.dll Missing entry: PcaWallpaperAppDetect//中文提示 C:\WINDOWS\system32\PcaSvc.dll出错 丢失条目:PcaWallpaperAppDe…

【计算机视觉】人脸识别

一、简介 人脸识别是将图像或者视频帧中的人脸与数据库中的人脸进行对比&#xff0c;判断输入人脸是否与数据库中的某一张人脸匹配&#xff0c;即判断输入人脸是谁或者判断输入人脸是否是数据库中的某个人。 人脸识别属于1&#xff1a;N的比对&#xff0c;输入人脸身份是1&…

光谱相机在智能冰箱的应用原理与优势

食品新鲜度检测 详细可点击查看汇能感知团队实验报告&#xff1a;高光谱成像技术检测食物新鲜度 检测原理&#xff1a;不同新鲜程度的食品&#xff0c;其化学成分和结构会有所不同&#xff0c;在光谱下的反射、吸收等特性也存在差异。例如新鲜肉类和蔬菜中的水分、蛋白质、叶…

Dangerzone:免费的危险的文件转换安全程序

我们知道很多杀毒软件会将很多文件视作恶意程序&#xff0c;尤其是带宏病毒的DOC文件&#xff0c;直接删除难免会带来不必要的麻烦&#xff0c;那么推荐一款免费的危险的文件转换安全程序&#xff1a;Dangerzone 。它可以检查各种可能有危险的文件并将其转换为安全版本&#xf…