首页 > 其他分享 >Kubernetes 集群中安装和配置 Kubernetes Dashboard

Kubernetes 集群中安装和配置 Kubernetes Dashboard

时间:2025-01-20 17:28:57浏览次数:3  
标签:Kubernetes kubernetes -- 集群 Dashboard Helm 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中,而是需要显式地请求。由于官方不推荐这种方式,所以本文也不再进行介绍。
在这里插入图片描述
在这里插入图片描述

标签:Kubernetes,kubernetes,--,集群,Dashboard,Helm,dashboard
From: https://blog.csdn.net/qq719779232/article/details/145212142

相关文章

  • Kubernetes 中 JVM 监控实战:Prometheus + JMX Exporter 全解析
    背景skywalking采集的jvm要自己在页面选择endpoint来查看,不合符开发者使用习惯前置知识prometheus-operator的四个CRD作用Prometheus:由Operator依据一个自定义资源kind:Prometheus类型中,所描述的内容而部署的PrometheusServer集群,可以将这个自定义资源看作是一......
  • InfluxDB:单节点与集群部署实操及 java.lang.RuntimeException 报错的高效解决方案
    前言:在当今数据驱动的时代,时序数据的管理和分析变得愈发重要。InfluxDB作为一款高性能、开源的时序数据库,凭借其强大的写入性能、灵活的查询功能以及对大规模数据的高效处理能力,成为了众多开发者的首选工具。无论是用于监控系统、物联网设备数据存储,还是日志分析,InfluxDB......
  • Kubernetes 指令 操作 笔记
    目录kubectl文档资源类型格式化输出语法kubectl常用命令(K8S)查看k8s下所有资源(pod、service、deploy、副本):kubectlgetall查看k8s下所有资源:查看集群内所有节点:查看名称空间:service操作查看所有service:查看所有service详细信息:删除service:查看kubelet日志:容器操作pod操......
  • Kubernetes (K8s) 权限管理指南
    1.引言Kubernetes(K8s)作为当今最流行的容器编排平台,其安全性至关重要。本指南旨在全面介绍K8s的权限管理机制,帮助具有一定基础的读者深入理解并掌握这一关键领域。©ivwdcwso(ID:u012172506)2.Kubernetes安全模型概述K8s的安全模型主要包括三个阶段:认证(......
  • 彻底讲清楚 单体架构、集群架构、分布式架构及扩展架构
    目录什么是系统架构单体架构介绍示例图优点缺点集群架构介绍示意图优点缺点分布式架构示意图优点缺点生态扩展介绍示意图优点缺点扩展:分布式服务解析纵切拆服务全链路追踪能力循环依赖全链路日志(End-to-EndLogs)阅前提醒:前后端分离架构是前后端之......
  • Kubernetes(k8s)和Docker Compose本质区别
    Kubernetes(简称k8s)和DockerCompose是容器编排领域的两大重要工具,虽然它们都用于管理和编排容器化应用,但在设计目标、功能特性、使用场景和复杂度上存在显著差异。以下将从多个方面详细探讨Kubernetes和DockerCompose的本质区别。一、设计目标与应用场景1.KubernetesK......
  • 基于 KubeSphere v4 的 Kubernetes 生产环境部署架构设计及成本分析
    本文作者:运维有术。今天分享的主题是:如何规划设计一个高可用、可扩展的中小规模生产级K8s集群?通过本文的指导,您将掌握以下设计生产级K8s集群的必备技能:集群规划能力合理规划节点规模和资源配置设计高可用的控制平面、计算平面、存储平面架构规划网络拓扑和安全策略制......
  • 【linux合集】redis集群部署
    集群式部署redis介绍:三台机器001、002、003然后再三台机器上面都部署redis_6379、redis_6380做主从,然后三台机器上面做集群1、安装/解压redismkdir-p/data/applications/wgethttps://download.redis.io/releases/redis-5.0.14.tar.gztar-xzf./redis-5.0.14.tar.gzcd......
  • OpenAI 宕机思考丨Kubernetes 复杂度带来的服务发现系统的风险和应对措施
    作者:王建伟(正己)12月11日,OpenAI旗下AI聊天机器人平台ChatGPT、视频生成工具Sora及其面向开发人员的API自太平洋时间下午3点左右起发生严重中断,耗费约三个小时才顺利恢复所有服务。OpenAI在事后报告中写道,“该问题源自新部署的遥测服务,此项服务无意间压垮了Kuberne......
  • 基于阿里云容器服务Kubernetes版(ACK)| 容器化管理云上应用
    基于阿里云容器服务Kubernetes版(ACK)|容器化管理云上应用ACKACK的优势ACK的应用场景部署方案介绍部署操作资源准备一键部署释放资源测评体验在现行的大环境下,企业上云容器化应用托管已经逐渐成为主流,其中以能够自动部署、扩展、管理容器化应用以及能实现应用的快速......