Kubernetes:认识 K8s开源 Web/桌面 客户端工具 Headlamp
source link: https://liruilongs.github.io/2023/01/23/%E5%BE%85%E5%8F%91%E5%B8%83/%E4%BA%8C%E6%9C%9F/%E5%85%B3%E4%BA%8EKubernetes-%E5%BC%80%E6%BA%90IDE-Headlamp-%E7%9A%84%E4%B8%80%E4%BA%9B%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%86/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Kubernetes:认识 K8s开源 Web/桌面 客户端工具 Headlamp
我所渴求的,無非是將心中脫穎語出的本性付諸生活,為何竟如此艱難呢 ——赫尔曼·黑塞《德米安》
- 分享一个 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 [email protected]:/root/.kube/config ./
[email protected]'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 客户端
┌──[[email protected]]-[~/ansible]
└─$mkdir kubernetes-headlamp
┌──[[email protected]]-[~/ansible]
└─$cd kubernetes-headlamp/
┌──[[email protected]]-[~/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
┌──[[email protected]]-[~/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 文件
┌──[[email protected]]-[~/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。
┌──[[email protected]]-[~/ansible/kubernetes-headlamp]
└─$kubectl -n kube-system create serviceaccount headlamp-admin
创建好 sa 之后需要给它赋权,这里是管理工具,所以给它内置的 cluster-admin
角色
┌──[[email protected]]-[~/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
┌──[[email protected]]-[~/ansible/kubernetes-headlamp]
└─$kubectl get secrets | grep headlamp-admin-
headlamp-admin-token-8d5pr kubernetes.io/service-account-token 3 19m
获取 toker 登录 Web 端
┌──[[email protected]]-[~/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 端需要在集群部署服务,需要暴露端口,。考虑侵入性的问题,建议优先使用 桌面端。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK