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 << EOF
 apiVersion: v1
 kind: ServiceAccount
 metadata:
   name: admin-user
   namespace: kube-system
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRoleBinding
 metadata:
   name: admin-user
 roleRef:
   apiGroup: rbac.authorization.k8s.io
   kind: ClusterRole
   name: cluster-admin
 subjects:
 - kind: ServiceAccount
   name: admin-user
   namespace: kube-system
 EOF
 # 创建用户
 kubectl  apply -f dashboard-user.yaml
 # 生成临时token
 kubectl -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-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: 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中,而是需要显式地请求。由于官方不推荐这种方式,所以本文也不再进行介绍。
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C ++ 也可以搭建Web?高性能的 C++ Web 开发框架 CPPCMS + MySQL 实现快速入门案例

什么是CPPCMS&#xff1f; CppCMS 是一个高性能的 C Web 开发框架&#xff0c;专为构建快速、动态的网页应用而设计&#xff0c;特别适合高并发和低延迟的场景。其设计理念类似于 Python 的 Django 或 Ruby on Rails&#xff0c;但针对 C 提供了更细粒度的控制和更高效的性能。…

【K8S系列】K8s 领域深度剖析:年度技术、工具与实战总结

引言 Kubernetes作为容器编排领域的行业标准&#xff0c;在过去一年里持续进化&#xff0c;深刻推动着云原生应用开发与部署模式的革新。本文我将深入总结在使用K8s特定技术领域的进展&#xff0c;分享在过去一年中相关技术工具及平台的使用体会&#xff0c;并展示基于K8s的技术…

mysql查看binlog日志

mysql 配置、查看binlog日志&#xff1a; 示例为MySQL8.0 1、 检查binlog开启状态 SHOW VARIABLES LIKE ‘log_bin’; 如果未开启&#xff0c;修改配置my.ini 开启日志 安装目录配置my.ini(mysql8在data目录) log-binmysql-bin&#xff08;开启日志并指定日志前缀&#xff…

基于华为云车牌识别服务设计的停车场计费系统【华为开发者空间-鸿蒙】

文章目录 手把手的技术干货教程&#xff0c;记录从0到1的开发过程。一、前言1.1 内容简介1.2 云主机1.3 开发环境1.4 功能说明 二、华为云开发者空间2.1 进入开发者空间2.2 配置云主机2.3 安装系统2.4 启动云主机2.5 全屏切换2.6 共享桌面2.5 测试Python开发环境2.6 安装reques…

ConvBERT:通过基于跨度的动态卷积改进BERT

摘要 像BERT及其变体这样的预训练语言模型最近在各种自然语言理解任务中取得了令人印象深刻的性能。然而&#xff0c;BERT严重依赖于全局自注意力机制&#xff0c;因此存在较大的内存占用和计算成本。尽管所有的注意力头都从全局角度查询整个输入序列以生成注意力图&#xff0…

【机器学习实战入门】使用Pandas和OpenCV进行颜色检测

Python 颜色检测项目 今天的项目将非常有趣和令人兴奋。我们将与颜色打交道&#xff0c;并在项目过程中学习许多概念。颜色检测对于识别物体来说是必要的&#xff0c;它也被用作各种图像编辑和绘图应用的工具。 什么是颜色检测&#xff1f; 颜色检测是检测任何颜色名称的过程…

【2024年华为OD机试】(A卷,100分)- 完美走位 (Java JS PythonC/C++)

一、问题描述 题目解析 题目描述 在第一人称射击游戏中,玩家通过键盘的 A、S、D、W 四个按键控制游戏人物分别向左、向后、向右、向前进行移动。假设玩家每按动一次键盘,游戏人物会向某个方向移动一步。如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏人…

流行的开源高性能数据同步工具 - Apache SeaTunnel 整体架构运行原理

概述 背景 数据集成在现代企业的数据治理和决策支持中扮演着至关重要的角色。随着数据源的多样化和数据量的迅速增长&#xff0c;企业需要具备强大的数据集成能力来高效地处理和分析数据。SeaTunnel通过其高度可扩展和灵活的架构&#xff0c;帮助企业快速实现多源数据的采集、…

2025.1.17——三、SQLi regexp正则表达式|

题目来源&#xff1a;buuctf [NCTF2019]SQLi1 目录 一、打开靶机&#xff0c;整理信息 二、解题思路 step 1&#xff1a;正常注入 step 2&#xff1a;弄清关键字黑名单 1.目录扫描 2.bp爆破 step 3&#xff1a;根据过滤名单构造payload step 4&#xff1a;regexp正则注…

深度学习 DAY2:Transformer(一部分)

前言 Transformer是一种用于自然语言处理&#xff08;NLP&#xff09;和其他序列到序列&#xff08;sequence-to-sequence&#xff09;任务的深度学习模型架构&#xff0c;它在2017年由Vaswani等人首次提出。Transformer架构引入了自注意力机制&#xff08;self-attention mech…

Linux内核编程(二十一)USB驱动开发

一、驱动类型 USB 驱动开发主要分为两种&#xff1a;主机侧的驱动程序和设备侧的驱动程序。一般我们编写的都是主机侧的USB驱动程序。 主机侧驱动程序用于控制插入到主机中的 USB 设备&#xff0c;而设备侧驱动程序则负责控制 USB 设备如何与主机通信。由于设备侧驱动程序通常与…

Linux容器(初学了解)

目录 一、容器 1.1、容器技术 1.2、容器和虚拟机之间的差异 1.3、Rootless 和 Rootful 容器 1.4、设计基于容器的架构 1.5、容器管理工具 1.6、容器镜像和注册表 1.7、配置容器注册表 1.8、使用容器文件构建容器镜像 二、部署容器 2.1、Podman 实用程序 2.2、安装容…

Nginx location 和 proxy_pass 配置详解

概述 Nginx 配置中 location 和 proxy_pass 指令的不同组合方式及其对请求转发路径的影响。 配置效果 1. location 和 proxy_pass 都带斜杠 / location /api/ {proxy_pass http://127.0.0.1:8080/; }访问地址&#xff1a;www.hw.com/api/upload转发地址&#xff1a;http://…

Linux探秘坊-------3.开发工具详解(1)

1 初识vim编辑器 创建第一个vim编辑的代码 1.新建文件 2.使用vim打开 3.打开默认是命令模式&#xff0c;写代码需要在屏幕上输出“i”字符 1.写完代码后要按Esc键退出到指令模式2.再按shift:wq即可保存并退出vim &#xff08;因为不支持鼠标&#xff0c;通常 使用键盘上的箭…

深度学习 | 基于 LSTM 模型的多电池健康状态对比及预测

Hi&#xff0c;大家好&#xff0c;我是半亩花海。在电池管理系统&#xff08;BMS&#xff09;中&#xff0c;电池的健康状态&#xff08;State of Health, SOH&#xff09;是评估电池剩余寿命的重要指标&#xff0c;而准确预测电池的健康状态可以帮助实现电池的高效管理&#x…

人工智能-机器学习之多分类分析(项目实战二-鸢尾花的多分类分析)

Softmax回归听名字&#xff0c;依然好像是做回归任务的算法&#xff0c;但其实它是去做多分类任务的算法。 篮球比赛胜负是二分类&#xff0c;足球比赛胜平负就是多分类 识别手写数字0和1是二分类&#xff0c;识别手写数字0-9就是多分类 Softmax回归算法是一种用于多分类问题…

JavaScript正则表达式解析:模式、方法与实战案例

目录 一、什么是正则表达式 1.创建正则表达式 2.标志&#xff08;Flags&#xff09; 3.基本模式 &#xff08;1&#xff09;字符匹配 &#xff08;2&#xff09;位置匹配 &#xff08;3&#xff09;数量匹配 二、常用的正则表达式方法和属性 1.test()‌ 2.match()‌ …

日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件

日历热力图&#xff0c;月度数据可视化图表&#xff0c;vue组件 先看效果&#x1f447; 在线体验https://www.guetzjb.cn/calanderViewGraph/ 日历图简单划分为近一年时间&#xff0c;开始时间是 上一年的今天&#xff0c;例如2024/01/01 —— 2025/01/01&#xff0c;跨度刚…

【Linux】常见指令(三)

Linux常见指令 01.nano02.cat03.cp04.mv 我的Linux专栏&#xff1a;【Linux】 本节Linux指令讲解的基本框架如下&#xff1a; 大家可以根据自己的需求&#xff0c;自行进行跳转和学习&#xff01; 01.nano nano Linux 系统中一款简单易用的命令行文本编辑器&#xff0c;适合…

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证6)

重新创建WebApi项目&#xff0c;安装Microsoft.AspNetCore.Authentication.JwtBearer包&#xff0c;将之前JwtBearer测试项目中的初始化函数&#xff0c;jwt配置类、token生成类全部挪到项目中。   重新编写login函数&#xff0c;之前测试Cookie和Session认证时用的函数适合m…