news 2026/7/14 19:03:19

k8s 部署 Headlamp

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
k8s 部署 Headlamp

👨‍🎓博主简介

🏅CSDN博客专家
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


文章目录

  • 一、Headlamp 是什么?
  • 二、Headlamp 的部署
    • 2.1 yaml 方式部署
      • 2.1.1 获取yaml
      • 2.1.2 安装 Headlamp
      • 2.1.3 创建访问 ServiceAccount 和 ClusterRoleBinding
      • 2.1.4 获取Token(通用)
    • 2.2 Helm 方式部署
      • 2.2.1 添加并更新 Helm 仓库
      • 2.2.2 安装 Headlamp
      • 2.2.3 创建访问 ServiceAccount 和 ClusterRoleBinding
      • 2.2.4 获取Token(通用)
  • 三、页面访问
    • 3.1 访问页面并填写Token
    • 3.2 中文页面切换
    • 3.3 功能展示
      • 3.3.1 集群
      • 3.3.2 资源全景图
      • 3.3.3 工作负载
      • 3.3.4 存储
      • 3.3.5 网络
      • 3.3.6 网关
      • 3.3.7 安全
      • 3.3.8 设置
      • 3.3.9 自定义资源
  • 四、Headlamp 的卸载
    • 4.1 YAML 方式部署卸载
      • 4.1.1 保留yaml版本
      • 4.1.2 没保留yaml版本
    • 4.2 Helm 方式部署卸载
      • 4.2.1 卸载
    • 4.3 检查是否卸载干净

一、Headlamp 是什么?

Headlamp 是一个开源的、可扩展的 Kubernetes 图形化用户界面 (Web UI),你可以把它看作是 Kubernetes Dashboard 的现代化、功能更强大的继任者;

随着官方 Dashboard 项目进入维护状态,Headlamp 由 Kubernetes SIG 持续迭代与维护,目前已成为社区中更活跃、更具前瞻性的集群管理界面方案。

简单理解:
Headlamp 就是 Kubernetes Dashboard 的下一代接班人。
与传统 Dashboard 相比,Headlamp 具备明显优势:

  • 界面更现代,交互更友好
  • 资源展示更清晰、信息组织更合理
  • 支持插件扩展机制,能力可按需增强
  • 原生支持多集群统一管理
  • 社区持续活跃,版本迭代稳定

正因如此,Headlamp 正逐步成为 Kubernetes 官方推荐的图形化管理工具之一。

官方文档:https://headlamp.dev/

二、Headlamp 的部署

部署环境:

  • kubernetes集群版本:1.20.10
  • Helm版本:3.8.0

2.1 yaml 方式部署

2.1.1 获取yaml

可以下载官方yaml:headlamp官方yaml
也可以使用下面我修改过的yaml,和官方yaml对比,修改了:1、新增了ns;2、svc字段为NodePort暴露方式;3、所有的命名空间为headlamp;4、镜像版本(适配当前k8s版本)

  • vim headlamp.yaml
apiVersion:v1kind:Namespacemetadata:name:headlamp---apiVersion:v1kind:Servicemetadata:name:headlampnamespace:headlampspec:type:NodePortselector:k8s-app:headlampports:-name:headlampport:80targetPort:4466nodePort:32019protocol:TCP---kind:DeploymentapiVersion:apps/v1metadata:name:headlampnamespace:headlampspec:replicas:1selector:matchLabels:k8s-app:headlamptemplate:metadata:labels:k8s-app:headlampspec:containers:-name:headlampimage:ghcr.io/headlamp-k8s/headlamp:v0.39.0args:-"-in-cluster"-"-plugins-dir=/headlamp/plugins"env:-name:HEADLAMP_CONFIG_TRACING_ENABLEDvalue:"true"-name:HEADLAMP_CONFIG_METRICS_ENABLEDvalue:"true"-name:HEADLAMP_CONFIG_OTLP_ENDPOINTvalue:"otel-collector:4317"-name:HEADLAMP_CONFIG_SERVICE_NAMEvalue:"headlamp"-name:HEADLAMP_CONFIG_SERVICE_VERSIONvalue:"latest"ports:-containerPort:4466name:http-containerPort:9090name:metricsreadinessProbe:httpGet:scheme:HTTPpath:/port:4466initialDelaySeconds:30timeoutSeconds:30livenessProbe:httpGet:scheme:HTTPpath:/port:4466initialDelaySeconds:30timeoutSeconds:30nodeSelector:'kubernetes.io/os':linux---kind:SecretapiVersion:v1metadata:name:headlamp-adminnamespace:headlampannotations:kubernetes.io/service-account.name:"headlamp-admin"type:kubernetes.io/service-account-token

2.1.2 安装 Headlamp

  • 安装 Headlamp
kubectl apply-fheadlamp.yaml
  • 检查是否创建成功
# 检查命名空间是否创建成功kubectl get ns-A|grepheadlamp# 检查headlamp的pod是否运行正常(READY状态为1/1正常)kubectl get pods-nheadlamp-owide# 检查svc是否创建成功kubectl get svc-nheadlamp# 检查secret是否创建成功kubectl get secret-nheadlamp

2.1.3 创建访问 ServiceAccount 和 ClusterRoleBinding

Headlamp 需要知道以谁的身份来访问集群。我们可以创建一个管理员级别的ServiceAccount来获得完整视图(仅供初始管理和学习使用,生产环境请遵循最小权限原则)。

  • 编辑 RBAC权限

vim headlamp-rbac.yaml

apiVersion: v1 kind: ServiceAccount metadata: name: headlamp namespace: headlamp --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: headlamp-admin namespace: headlamp roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: headlamp namespace: headlamp
  • 创建RBAC权限
kubectl apply-fheadlamp-rbac.yaml
  • 检查RBAC权限
# 检查ServiceAccount是否存在headlampkubectl get sa-nheadlamp|grep-iheadlamp# 检查所有ClusterRoleBinding是否存在headlampkubectl get clusterrolebinding|grepheadlamp

2.1.4 获取Token(通用)

获取好的token,请保存好,登录 Headlamp 需要 !!!
获取好的token,请保存好,登录 Headlamp 需要 !!!
获取好的token,请保存好,登录 Headlamp 需要 !!!

官方获取token文档:https://headlamp.dev/docs/latest/installation/#create-a-service-account-token

  • Kubernetes v1.24版本及以上可采用此方法来获取token
kubectl create token headlamp-nheadlamp

默认失效为1小时,可以通过添加参数来延长时间:--duration=8760h
从Secret中解码出来的Token是永不过期的;

  • Kubernetes v1.24版本以下可采用此方法来获取token
# 查看secret是否存在headlampkubectl get secret-nheadlamp|grepheadlamp# 正常情况下会有一个类似 headlamp-token-xxxxx 的 Secret。# 如果存在可使用如下命令提取tokenkubectl get secret headlamp-token-pf6nj-nheadlamp-ojsonpath='{.data.token}'|base64--decode


如果没找到关联的 Secret,就手动创建一个

cat<<EOF|kubectl apply-f-apiVersion: v1 kind: Secret metadata: name: headlamp-token namespace: headlamp annotations: kubernetes.io/service-account.name: headlamp type: kubernetes.io/service-account-token EOF

然后从新创建的 Secret 中获取 token;

kubectl get secret headlamp-token-nheadlamp-ojsonpath='{.data.token}'|base64--decode

2.2 Helm 方式部署

需提前安装好Helm,没有安装的可参考:K8s - Helm管理工具

2.2.1 添加并更新 Helm 仓库

# 添加headlamp仓库helm repoaddheadlamp https://kubernetes-sigs.github.io/headlamp/# 更新仓库helm repo update

2.2.2 安装 Headlamp

由于默认安装最新版本,我的kubernetes版本不支持,所以只能选择其他版本进行安装,大家可根据自己的kuberntes版本来进行对应的headlamp版本安装;

  • 查看所有headlamp版本
helm search repo headlamp/headlamp--versions

  • 找到适配自己版本的headlamp进行安装;
helminstallheadlamp headlamp/headlamp--version=0.39.0-nheadlamp --create-namespace

  • 安装完成进行查看是否运行正常
# 查看 headlamp 的heml是否正常helm list-nheadlamp# 查看 headlamp 命名空间下的pod、deployment、svc是否都运行正常kubectl get all-nheadlamp-owide

可以看到都运行成功了,但是svc的网络模式是ClusterIP,是无法再外网访问到的,所以我们需要修改一下headlampsvc的网络模式改为NodePort

  • 修改headlampsvc的网络模式改为NodePort
kubectl edit svc-nheadlamp# 二选一,第一种可以更直观的看到yaml内容kubectl patch svc-nheadlamp headlamp-p'{"spec":{"type":"NodePort"}}'

  • 修改完成之后,再次查看headlamp的svc,就可以看到Port80后面多了一个3开头的端口,这是随机生成的对外访问的端口,这时候就可以通过集群任意ip:32019去访问页面了;

这个端口是随机生成的,或者是自己也可以指定NodePort的端口,但是需要在30000-32767之间;

kubectl get svc-nheadlamp

2.2.3 创建访问 ServiceAccount 和 ClusterRoleBinding

通过 Helm 部署 Headlamp 时,Chart 默认会自动创建所需的 ServiceAccount 和 RBAC 授权,我们可以通过如下命令进行查看;

kubectl get sa-nheadlamp kubectl get ClusterRoleBinding|grepheadlamp

2.2.4 获取Token(通用)

获取好的token,请保存好,登录 Headlamp 需要 !!!
获取好的token,请保存好,登录 Headlamp 需要 !!!
获取好的token,请保存好,登录 Headlamp 需要 !!!

官方获取token文档:https://headlamp.dev/docs/latest/installation/#create-a-service-account-token

  • Kubernetes v1.24版本及以上可采用此方法来获取token
kubectl create token headlamp-nheadlamp

默认失效为1小时,可以通过添加参数来延长时间:--duration=8760h
从Secret中解码出来的Token是永不过期的;

  • Kubernetes v1.24版本以下可采用此方法来获取token
# 查看secret是否存在headlampkubectl get secret-nheadlamp|grepheadlamp# 正常情况下会有一个类似 headlamp-token-xxxxx 的 Secret。# 如果存在可使用如下命令提取tokenkubectl get secret headlamp-token-pf6nj-nheadlamp-ojsonpath='{.data.token}'|base64--decode


如果没找到关联的 Secret,就手动创建一个

cat<<EOF|kubectl apply-f-apiVersion: v1 kind: Secret metadata: name: headlamp-token namespace: headlamp annotations: kubernetes.io/service-account.name: headlamp type: kubernetes.io/service-account-token EOF

然后从新创建的 Secret 中获取 token;

kubectl get secret headlamp-token-nheadlamp-ojsonpath='{.data.token}'|base64--decode

三、页面访问

3.1 访问页面并填写Token

访问页面:任意集群IP:32019,输入刚刚获取的token;

3.2 中文页面切换

简体中文是在0.35.0版本开始支持的


3.3 功能展示

3.3.1 集群

集群中包含以下主要功能模块:

  • 命名空间:显示当前集群中的所有命名空间列表。
  • 节点:展示集群中所有节点的资源使用情况(如CPU、内存)和状态。
  • 高级搜索:提供类JavaScript语法的查询功能,支持通过标签(Labels)和注解(Annotations)等条件,对集群资源进行精确、快速的筛选(Beta功能)。

3.3.2 资源全景图

  • 资源全景图:以分组视图展示集群核心资源的总览,默认按“Workloads”、“存储”、“网络”等类别对资源进行分组,每个分组下显示具体资源类型(如 Deployment、DaemonSet、Service、PVC 等)及其数量/状态。该视图帮助用户快速掌握集群资源的整体分布与健康状态。

3.3.3 工作负载

工作负载中包含以下主要功能模块:

  • Pods:显示集群中所有 Pod 的运行状态(如运行中、待处理)和数量,并可查看每个 Pod 的详细信息和日志。
  • Deployments:展示 Deployment 的副本状态、更新策略和滚动更新历史,支持扩缩容和版本回滚操作。
  • StatefulSets:管理有状态应用的副本数、持久化存储和有序启动/更新策略。
  • DaemonSets:展示在每个节点上运行的守护进程型 Pod 的状态和覆盖情况。
  • ReplicaSets:查看由 Deployment 或其他控制器管理的 Pod 副本集状态,主要用于排查历史版本问题。
  • Jobs:显示一次性任务(Job)的执行状态(完成、失败、运行中),用于批处理场景。
  • CronJobs:展示周期性定时任务的调度规则和执行历史,用于定期任务自动化。

3.3.4 存储

存储中包含以下主要功能模块:

  • 持续性卷宣告:展示集群中所有 PVC(PersistentVolumeClaim,持久化存储声明)的列表,包含其绑定的 PV、容量、访问模式和状态等信息。
  • 持续性卷:显示集群中所有 PV(PersistentVolume,持久化存储卷)的资源详情和状态。
  • 存储类别:查看和管理 StorageClass 存储类,用于定义动态存储供应的策略和参数。

3.3.5 网络

网络中包含以下主要功能模块:

  • Services:展示集群中所有 Service(服务)的列表,包含类型(如 ClusterIP、NodePort)、ClusterIP、端口映射和选择器等信息。
  • 端点:查看 Service 后端关联的实际 Pod IP 和端口列表,用于验证服务是否正常转发流量。
  • Endpoint Slices:展示 EndpointSlice 资源,用于更高效地管理大规模集群中 Service 的后端端点。
  • Ingresses:管理 Ingress 资源,定义外部访问集群服务的路由规则(如域名、路径转发)。
  • Ingress 类别:查看 IngressClass 资源,用于标识和选择不同的 Ingress 控制器实现。
  • 网络策略:管理 NetworkPolicy 资源,定义 Pod 之间的网络访问控制规则(如入站/出站流量白名单)。

3.3.6 网关

网关(Beta)中包含以下主要功能模块:

  • 网关:展示 Gateway 资源列表,定义流量入口的配置(如监听协议、端口)。
  • 网关类别:查看 GatewayClass 资源,用于定义和选择不同的 Gateway 控制器实现。
  • HTTP路由:管理 HTTPRoute 资源,定义 HTTP/HTTPS 流量的路由规则(如域名匹配、路径转发)。
  • GRPC路由:管理 GRPCRoute 资源,定义 gRPC 流量的路由规则。
  • Reference Grants:查看 ReferenceGrant 资源,用于跨命名空间引用资源时的授权管理。
  • BackendTLS Policies:管理 BackendTLSPolicy 资源,定义与后端服务建立 TLS 连接的安全策略。
  • BackendTrafficPolicies:管理 BackendTrafficPolicy 资源,定义后端流量的高级策略(如负载均衡、重试)。

3.3.7 安全

安全中包含以下主要功能模块:

  • 服务账户:展示集群中所有的 ServiceAccount(服务账户)列表,用于为 Pod 提供身份认证。
  • 角色:查看 Role 资源,用于在命名空间级别定义操作权限(如对 Pod、Service 的增删改查)。
  • 角色绑定:管理 RoleBinding 资源,用于将 Role 或 ClusterRole 的权限授予特定的用户、组或 ServiceAccount。

3.3.8 设置

设置中包含以下主要功能模块:

  • Config Maps:展示集群中所有的 ConfigMap(配置映射)列表,用于存储非敏感的配置数据(如环境变量、配置文件)。
  • Secrets:管理 Secret 资源,用于存储敏感信息(如密码、OAuth 令牌、SSH 密钥),并以 Base64 编码形式保存。
  • 水平Pod自动扩缩:查看和管理 HPA(HorizontalPodAutoscaler)资源,根据 CPU 使用率或自定义指标自动调整 Pod 副本数量。
  • 垂直Pod自动扩缩:管理 VPA(VerticalPodAutoscaler)资源,自动调整 Pod 的 CPU 和内存请求/限制值。
  • Pod中断预算:管理 PDB(PodDisruptionBudget)资源,限制在自愿性中断(如节点维护)期间同时不可用的 Pod 数量,保障应用可用性。
  • 资源配置:查看 ResourceQuota 资源,用于限制命名空间中计算资源(如 CPU、内存)和对象数量(如 Pod、PVC)的总用量。
  • 限制范围:管理 LimitRange 资源,为命名空间中的 Pod 或容器设置默认的 CPU/内存请求和限制值。
  • 优先顺序:查看 PriorityClass 资源,用于定义 Pod 的调度优先级,影响调度器的抢占和排序行为。
  • 运行时刻类:管理 RuntimeClass 资源,用于选择不同的容器运行时(如 gVisor、Kata Containers)。
  • 租约:查看 Lease 资源,用于分布式系统中的协调和领导者选举机制。
  • 变更Webhook设置:管理 MutatingWebhookConfiguration 资源,定义在资源创建/更新时进行修改操作的准入 Webhook。
  • 验证Webhook设置:管理 ValidatingWebhookConfiguration 资源,定义在资源创建/更新时进行验证操作的准入 Webhook。

3.3.9 自定义资源

自定义资源中包含以下主要功能模块:

  • 实例:按 API 组(Group)分类展示已安装的自定义资源(CRD),每个组下列出该组支持的所有资源类型(Kind)。便于按功能领域(如 cert-manager、FluxCD)进行浏览。
  • 定义:展示当前集群中安装的所有 CRD(CustomResourceDefinition,自定义资源定义)的完整列表。包含资源的名称、API 组和版本等信息。

四、Headlamp 的卸载

4.1 YAML 方式部署卸载

4.1.1 保留yaml版本

# 卸载权限kubectl delete-fheadlamp-rbac.yaml# 卸载headlamp服务及svc等kubectl delete-fheadlamp.yaml

4.1.2 没保留yaml版本

# 卸载headlamp的deploymentkubectl delete deploy-nheadlamp headlamp# 卸载headlamp的servicekubectl delete svc-nheadlamp headlamp# 卸载headlamp的ServiceAccountkubectl delete sa-nheadlamp headlamp# 卸载headlamp的ClusterRoleBindingkubectl delete clusterrolebinding headlamp-admin# 卸载headlamp的命名空间(正常会自动清理sa、configmap、secret)kubectl delete ns headlamp

4.2 Helm 方式部署卸载

4.2.1 卸载

# helm卸载headlamphelm uninstall-nheadlamp headlamp# 删除headlamp命名空间kubectl delete ns headlamp

4.3 检查是否卸载干净

  • helm 多一步
# 查看helm是否还存在headlamphelm list-Aa|grep-iheadlam
  • helm、yaml方式部署通用
# 查看所有pod是否还存在headlampkubectl get pods-A|grep-iheadlamp# 查看所有deployment是否还存在headlampkubectl get deploy-A|grep-iheadlamp# 查看所有service是否还存在headlampkubectl get svc-A|grep-iheadlamp# 查看所有endpoints是否还存在headlampkubectl get endpoints-A|grep-iheadlamp# 查看所有configmap是否还存在headlampkubectl get cm-A|grep-iheadlamp# 查看所有secrets是否还存在headlampkubectl get secrets-A|grep-iheadlamp# 查看所有ServiceAccount 是否还存在headlampkubectl get sa-A|grep-iheadlamp# 查看所有ClusterRoleBinding是否还存在headlampkubectl get ClusterRoleBinding|grep-iheadlamp# 查看所有ClusterRole是否还存在headlampkubectl get clusterrole|grep-iheadlamp

或者一条命令查看上面所有

kubectl get pods,deploy,svc,endpoints,cm,secrets,sa,ClusterRoleBinding,clusterrole-A|grep-iheadlamp
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 19:02:57

AD74412R与PIC18F85J50在工业控制中的高效应用

1. AD74412R与PIC18F85J50的黄金组合&#xff1a;工业控制系统的性能跃迁 在工业自动化领域&#xff0c;数据采集精度和系统响应速度就像人的神经系统——既要敏锐感知环境变化&#xff0c;又要快速做出反应。ADI的AD74412R四通道可配置I/O芯片与Microchip的PIC18F85J50微控制器…

作者头像 李华
网站建设 2026/7/14 19:02:07

MySQL锁(深度解析)

1、锁的类型 InnoDB实现了如下两种标准的行级锁&#xff1a;共享锁&#xff08;S Lock&#xff09;&#xff1a;允许事务对一条行数据进行读取排他锁&#xff08;X Lock&#xff09;&#xff1a;允许事务对一条行数据进行删除或更新如果一个事务T1已经获得了行r的共享锁&#x…

作者头像 李华
网站建设 2026/7/14 19:00:49

鸿蒙 ArkTS 实战:Poetry Cards 从状态建模到交互闭环完整解析

鸿蒙 ArkTS 实战&#xff1a;Poetry Cards 从状态建模到交互闭环完整解析 前言 Poetry Cards 是一个面向 学习成长工具 的鸿蒙 ArkTS 小应用。管理诗词卡片、收藏状态和背诵模式。 本文围绕项目中的 entry/src/main/ets/pages/Index.ets 展开&#xff0c;拆解它的 数据模型、…

作者头像 李华
网站建设 2026/7/14 18:58:56

Tmux 教程(一): 终端复用器的核心概念与高效工作流构建

1. 为什么我们需要终端复用器&#xff1f; 如果你经常在命令行下工作&#xff0c;肯定遇到过这样的烦恼&#xff1a;开了十几个终端标签页来回切换找代码、SSH远程连接突然断开导致任务中断、调试程序时需要反复切换日志和命令行窗口...这些场景下&#xff0c;传统终端就像一张…

作者头像 李华
网站建设 2026/7/14 18:58:51

AI辅助学术写作:高效生成问卷类论文的工具组合方案

1. 项目背景与需求解析 最近在学术圈和高校学生群体中&#xff0c;一个现象级工具组合正在快速传播——能够20分钟内自动生成2.5万字问卷类论文的AI写作方案。这个数字背后反映的是当代学术写作中普遍存在的痛点&#xff1a;研究生开题报告、课程结业论文、职称评审材料等场景下…

作者头像 李华