Kubernetes:认识 K8s开源 Web/桌面 客户端工具 Headlamp

news2024/9/23 7:33:52

写在前面


  • 分享一个 k8s 客户端开源项目 Headlamp 给小伙伴
  • 博文内容涉及:
    • Headlamp 桌面/集群 Web 端安装
    • 启动导入集群简单查看集群信息
  • 理解不足小伙伴帮忙指正

我所渴求的,無非是將心中脫穎語出的本性付諸生活,為何竟如此艱難呢 ------赫尔曼·黑塞《德米安》


Headlamp 是一个2022年开源一个 k8s 客户端项目,可以将它部署为具有 Web UI 界面的集群内服务,或者是作为 桌面端 安装到有桌面的本地。Headlamp 有很好的扩展性,可以通过插件扩展。

在使用 Headlamp 桌面端的时候,需要提供 kubeconfig 文件位于本地机器上。如果在集群内部署不需要,会通过 sa 的方式访问。

Headlamp 的特性:

  • 供应商独立/通用 Kubernetes UI
  • 在集群中工作,或在本地作为桌面应用程序工作
  • 多集群
  • 可通过插件扩展
  • 反映用户角色的 UI 控件(不允许删除/更新)
  • 干净现代的用户界面
  • 可取消的创建/更新/删除操作
  • 带有文档的日志、执行和资源编辑器
  • 读写/交互(基于权限的操作)

桌面客户端部署

Headlamp 可以作为桌面应用程序运行,适用于不想将其部署在集群中的用户,或者希望在本地管理不相关集群的用户。

目前有适用于 Linux 、 Mac 和 Windows的桌面应用程序 。我们尝试在 window 上安装

下载安装

curl -o  Headlamp-0.14.1-win-x64.exe https://github.com/kinvolk/headlamp/releases/download/v0.14.1/Headlamp-0.14.1-win-x64.exe

启动

直接打开是这个样子,这里因为我们没有配置 kubeconfig 配置文件。

配置 kubeconfig 文件,这里我们直接重集群上拷贝一下。

PS C:\Program Files\Headlamp> scp root@192.168.26.81:/root/.kube/config ./
root@192.168.26.81's password:
config                                                                                100% 5677     3.9MB/s   00:00

通过命令行启动,指定配置文件

PS C:\Program Files\Headlamp> .\Headlamp.exe --kubeconfig config
PS C:\Program Files\Headlamp>
01:07:19.550 > App starting...
Check for updates:  true
arguments passed to backend server [ '--kubeconfig', 'config' ]
01:07:22.299 > server process stderr: 2023/01/14 01:07:22 plugins-dir: C:\Users\山河已无恙\AppData\Roaming\Headlamp\Config\plugins

01:07:22.301 > server process stdout: *** Headlamp Server ***
  API Routers:
        localhost:4466/clusters/kubernetes-admin@kubernetes/{api...} -> https://192.168.26.81:6443

Plugins are loaded. Loading full menu.
01:07:22.923 > server process stderr: 2023/01/14 01:07:22 Requesting  https://192.168.26.81:6443/api/v1/events

01:07:22.924 > server process stderr: 2023/01/14 01:07:22 Requesting  https://192.168.26.81:6443/version
..........

如果不希望使用命令行启动,或者你也可以把配置文件放到默认的位置读取位置

PS C:\Users\山河已无恙\.kube> ls

    目录: C:\Users\山河已无恙\.kube

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2023/1/14      7:48                cache
-a----         2023/1/13     22:05           5579 config
PS C:\Users\山河已无恙\.kube>

从桌面直接启动,这里又可以能需要管理员权限。

查看集群节点信息

查看集群资源

集群部署 Web 客户端

下载安装

┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$mkdir kubernetes-headlamp
┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$cd kubernetes-headlamp/
┌──[root@vms81.liruilongs.github.io]-[~/ansible/kubernetes-headlamp]
└─$curl -o kubernetes-headlamp.yaml https://raw.githubusercontent.com/kinvolk/headlamp/main/kubernetes-headlamp.yaml

如果你没有科学上网,可以尝试浏览器访问然后下载

在应用之前,你需要做一些准备工作,这个镜像需要科学上网,所以你只能 在 hub.docker 找类似的,或者找可以科学上网的机器下载。这里我们替换了镜像

Pulling image "ghcr.io/kinvolk/headlamp:latest"

替换为

docker pull epamedp/headlamp:0.14.0.6

同时为了能在集群外访问,这里设置 svc 类型为 NodePort

┌──[root@vms81.liruilongs.github.io]-[~/ansible/kubernetes-headlamp]
└─$cat kubernetes-headlamp.yaml
kind: Service
apiVersion: v1
metadata:
  name: headlamp
  namespace: kube-system
spec:
  ports:
    - port: 30025
      targetPort: 4466
  type: NodePort
  selector:
    k8s-app: headlamp
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: headlamp
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: headlamp
  template:
    metadata:
      labels:
        k8s-app: headlamp
    spec:
      containers:
      - name: headlamp
        image: epamedp/headlamp:0.14.0.6
        args:
          - "-in-cluster"
          - "-plugins-dir=/headlamp/plugins"
        ports:
        - containerPort: 4466
        livenessProbe:
          httpGet:
            scheme: HTTP
            path: /
            port: 4466
          initialDelaySeconds: 30
          timeoutSeconds: 30
      nodeSelector:
        'kubernetes.io/os': linux
---
kind: Secret
apiVersion: v1
metadata:
  name: headlamp-admin
  namespace: kube-system
  annotations:
    kubernetes.io/service-account.name: "headlamp-admin"
type: kubernetes.io/service-account-token

应用 yaml 文件

┌──[root@vms81.liruilongs.github.io]-[~/ansible/kubernetes-headlamp]
└─$kubectl apply  -f kubernetes-headlamp.yaml
service/headlamp created
deployment.apps/headlamp created
secret/headlamp-admin created

嗯,这里会发现创建不了 Secret ,这是因为没有 sa 的原因,所以需要创建一个 sa。创建之后会默认生成一个 token 的 Secret。

┌──[root@vms81.liruilongs.github.io]-[~/ansible/kubernetes-headlamp]
└─$kubectl -n kube-system create serviceaccount headlamp-admin

创建好 sa 之后需要给它赋权,这里是管理工具,所以给它内置的 cluster-admin 角色

┌──[root@vms81.liruilongs.github.io]-[~/ansible/kubernetes-headlamp]
└─$kubectl create clusterrolebinding headlamp-admin --serviceaccount=kube-system:headlamp-admin --clusterrole=cluster-admin
clusterrolebinding.rbac.authorization.k8s.io/headlamp-admin created

查看 sa 对应的 tocker

┌──[root@vms81.liruilongs.github.io]-[~/ansible/kubernetes-headlamp]
└─$kubectl get secrets | grep headlamp-admin-
headlamp-admin-token-8d5pr                       kubernetes.io/service-account-token   3      19m

获取 toker 登录 Web 端

┌──[root@vms81.liruilongs.github.io]-[~/ansible/kubernetes-headlamp]
└─$kubectl get secrets   headlamp-admin-token-8d5pr  -o  jsonpath='{.data.token}' | base64 -d
eyJhbGciOiJSUzI1NiIsImtpZCI6ImF2MmJVZ3d6M21JRC1BZUwwaHlDdzZHSGNyaVJON1BkUHF6MlhPV2NfX00ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJoZWFkbGFtcC1hZG1pbi10b2tlbi04ZDVwciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJoZWFkbGFtcC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjI0NDMxNTA4LWU4ZjEtNGYxOC1hMWIxLTlmMmUzZmFhNDU3ZSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpoZWFkbGFtcC1hZG1pbiJ9.oSA_i8gZOXYNRQMyoUKCK_wivtSiEjJ78EDUzZ1R7_HFxiLBKWLtxYN81wyf19bp9y9BFc2YYAW9lBy9QfVxg6LzBhW1sb4tcJJ0SOldxQX8z9kWK9m1MPMMs3aqtt1S9n8ShMBeobyY5AXSkBMDvVh6_E1P22dnPyOH7r_m0DEM0pgOP7B347sDKHiKx60hHBTfayvF7WDgfVlqsItBrc-MupC7NieRe8pztCllQ8awPksZXPRAJdcKwlSPvskoYxaqOBGbfZvFAFeLJaiGHdwkb6jUKyVfcB_hX_Pm5aEHGU8LZq7twrup859zxLxwn3nAgQpM6-NySZt8ax24kg

访问 http://192.168.26.81:30023/c/main/token ,输入 token

进去可以看到资源信息

节点信息,查看 集群相关信息

关于 Headlamp k8s 客户端就可小伙伴们分享到这里,如果条件允许,建议使用 通过桌面端,通过命名行的方式启动,只需要拷贝一个 kubeconfig 文件,Web 端需要在集群部署服务,需要暴露端口,考虑侵入性的问题,建议优先使用 桌面端。

博文参考


https://github.com/headlamp-k8s/headlamp

https://headlamp.dev/

https://headlamp.dev/docs/latest/installation/

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

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

相关文章

第八层:模板

文章目录前情回顾模板模板的概念模板的特点模板分类函数模板作用语法函数模板的使用注意事项普通函数和函数模板的区别普通函数和函数模板的调用规则优先调用普通函数空模板强调函数模板函数模板可以发生重载函数模板产生更好的匹配时模板的局限性类模板作用语法类模板实例化对…

Redis在秒杀场景的作用

秒杀业务特点:限时限量,业务系统要处理瞬时高并发请求,Redis是必需品。 秒杀可分成秒杀前、秒杀中和秒杀后三阶段,每个阶段的请求处理需求不同,Redis具体在秒杀场景的哪个环节起到作用呢? 1 秒杀负载特征…

Java-数据结构-二叉树<三>

承接上文: Java-数据结构-二叉树<一> Java-数据结构-二叉树<二> 一. 二叉树的简单介绍 见Java-数据结构-二叉树<一> 二. 二叉树的典型代码实现 见Java-数据结构-二叉树<一&#x…

4. RNN网络架构解读|词向量模型|模型整体框架|训练数据构建|CBOW和Skip-gram模型|负采样方案

文章目录RNN网络架构解读词向量模型模型整体框架训练数据构建CBOW和Skip-gram模型负采样方案RNN网络架构解读 递归神经网络实际上就是普通的神经网络的部分进行修改更新:实际上常用于时间序列的更新。或者就是自然处理中 X序列代表着时间序列,x0是一个时…

linux入门---云服务器购买和登陆

目录标题云服务器选择云服务器购买xshell下载如何登陆云服务器Linux的新建与删除新建删除云服务器选择 学习linux的时候云服务器是一个非常重要的工具,那么我们在购买云服务器的时候有很多选择比如说:华为云,腾讯云,阿里云等等&a…

【实操案例十二】类和对象 实例代码及运行效果图!

任务一:定义一个圆的类,计算面积和周长 # 任务一:定义一个圆的类,计算面积和周长 import math class Circle():def __init__(self,r):self.rrdef get_area(self):return math.pi*r*rdef get_perimeter(self):return 2*math.pi*r …

初识 ThreeJS (ThreeJS 相关环境搭建)

初识 ThreeJS (初识 ThreeJS (ThreeJS 相关环境搭建)参考描述ThreeJS在本地搭建 NodeJS 的官方网站获取使用安装依赖项运行官方文档案例场景编辑器搭建 ThreeJS 运行环境webpack项目结构package.jsonwebpack.config.js深入获取检测参考 项目…

袋式除尘器—分类和命名

按除尘器的结构形式分类(1)按滤袋开头分类按滤袋形状分类,可分为圆袋式除尘器和扁袋式除尘器两类。①圆袋式除尘器。滤袋形状为圆筒形,直径一般为120~300mm,最大不超过600mm;高度为2~3m,也有10m…

redis 数据库简介

一 概述 redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合],hash(hash表))。相关…

2023年哪款手机浏览器比较好用,最后一个吹爆它

很多人不满足于手机自带的浏览器,为了更好地满足看视频、浏览网页、看小说等需求,不少人下载第三方手机浏览器来使用。我们都知道,手机浏览器是手机不可缺少的APP之一。那么,2023年哪款手机浏览器比较好用?下面分享今年…

Java File类及案例

File概述和构造方法 File对象就表示一个路径,可以是文件路径、也可以是文件夹的路径这个路径可以是存在的,也允许是不存在的 方法名称说明public File (String pathname)把字符串表示的路径变成File对象public File (Srting parent, String child)把父…

【My Electronic Notes系列——三极管】

目录 序言: 🏮🏮新年的钟声响,新年的脚步迈,祝新年的钟声,敲响你心中快乐的音符,幸运与平安,如春天的脚步紧紧相随,春节快乐!春华秋实,我永远与你…

C语言入门(八)——数组

数组的基本概念 数组应用实例:统计随机数 数组应用实例:直方图 字符串 多维数组 数组的基本概念 数组(Array)也是一种复合数据类型,它由一系列相同类型的元素(Element)组成。例如定义一个由4个int型元素组成的数组count: int count[4]; 和结构体成员类似&…

安卓S开机动画流程

安卓S开机动画流程 开机动画是在SurfaceFlinger实例通过调用startBootAnim()启动的,BootAnim是如何启动和结束的,总体框架图如下: 1.SurfaceFlinger进程启动 # /frameworks/native/services/surfaceflinger/surfaceflinger.rc service surf…

linux inode详解

1.inode 和 block 概述. 操作系统的文件数据除了实际内容之外,通常含有非常多的属性,例如Linux操作系统的文件权限与文件属性。文件系统通常会将这两部分内容分别存放在inode和block中。 文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sec…

行为型模式

1.模版方法 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤 结构 抽象类:负责给出一个轮廓与骨架,由一个模版方法和若干个基本方法构成 模版方法:按某种顺序调用其包含的基本方法基本方法&#xf…

计算机视觉OpenCv学习系列:第八部分、图像操作-4

第八部分、图像操作-4第一节、图像卷积操作1.图像卷积定义2.卷积函数3.代码练习与测试第二节、高斯模糊1.高斯模糊2.函数解释3.代码练习与测试第三节、像素重映射1.像素重映射定义2.重映射函数3.代码练习与测试学习参考第一节、图像卷积操作 1.图像卷积定义 卷积的基本原理&am…

java spring IOC xml 方式 内部Bean注入

上次说了外部 Bean注入 这次来演示一个内部的 Bean注入 我们先创建一个spring 项目 导入最基本的 spring 包 在项目src目录下创建一个包 cascade cascade包下创建两个类 Dept 部门类 参考代码如下 package cascade;//部门类 public class Dept {private String dname;publi…

windows ssdt

前言 我们 ring 3 跳转 ring0 另一种方式使用sysenter命令。 sysenter 相比起jmp,int xx方式相比速度更快,因为sysenter指令大量的使用了MSR寄存器 存储跳转地址等。 MSR寄存器相关读/写命令 //读取msr寄存器 rdmsr xxxx //写入msr寄存器 wrmsr xxxx其中xxx是ms…

轻量实时操作系统学习(一)

306xH系列产品基于高性能RISC-V CPU核,工作频率最高到200MHz,集成了FPU浮点处理单元,支持浮点乘法,支持浮点乘法,除法和开方等复杂数学运算指令,支持16KB的SRAM和最高160KB的flash存储单元。 该MCU集成最多…