kuboard作为k8s的dashboard使用

news/2025/1/31 12:07:11/文章来源:https://www.cnblogs.com/LiuChang-blog/p/18695703

kuboard作为k8s的dashboard使用

1 资源信息

主机名 OS IP CPU/MEMERY/DISK 备注
k8s-master Rocky-8.10 172.16.1.30 2core/4GiB/100GiB k8s-v1.28.0
k8s-node01 Rocky-8.10 172.16.1.31 4core/8GiB/100GiB k8s-v1.28.0
k8s-node02 Rocky-8.10 172.16.1.32 4core/8GiB/100GiB k8s-v1.28.0
k8s-dashboard Rocky-8.10 172.16.1.23 2core/4GiB/100GiB docker-v26.1.4、kuboard-v3.5.2.x

注: k8s 使用 cri-dockerd 插件, k8s 使用 docker 作为容器运行时。

2 安装 Kuboard v3 - kubernetes

官方URL: https://kuboard.cn/install/v3/install-in-k8s.html

2.1 说明

在 K8S 中安装 Kuboard,主要考虑的问题是,如何提供 etcd 的持久化数据卷。 推荐使用 hostPath 提供持久化存储,将 kuboard 所依赖的 Etcd 部署到 Master 节点,并将 etcd 的数据目录映射到 Master 节点的本地目录。

2.2 在线安装

在 k8s-master 节点上进行操作。

1 查看 master 节点角色标签

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES           AGE   VERSION
k8s-master   Ready   control-plane   35h   v1.28.0
k8s-node01   Ready   <none>         35h   v1.28.0
k8s-node02   Ready   <none>         35h   v1.28.0

可以看到 k8s-master 节点的角色标签是 control-plane,需要再添加一个 master 标签。

2 添加 master 节点角色标签

[root@k8s-master ~]# kubectl label nodes k8s-master node-role.kubernetes.io/master=
node/k8s-master labeled

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES                 AGE   VERSION
k8s-master   Ready   control-plane,master   35h   v1.28.0
k8s-node01   Ready   <none>                 35h   v1.28.0
k8s-node02   Ready   <none>                 35h   v1.28.0

# 也可以通过下面的命令查看指定节点的标签
kubectl get nodes k8s-master --show-labels

注: 当在阿里云、腾讯云(以及其他云)托管的 K8S 集群中以此方式安装 Kuboard 时,执行 kubectl get nodes 将看 不到 master 节点,或者当你删除了 master 节点的 node-role.kubernetes.io/master= 标签时,可以为一个 或者三个 worker 节点添加 k8s.kuboard.cn/role=etcd 的标签,来增加 kuboard-etcd 的实例数量。

etcd (1) Kuboard V3 依赖于 etcd 提供数据的持久化服务,在当前的安装方式下,kuboard-etcd 的存储卷被映射到宿主机节点的 hostPath(/usr/share/kuboard/etcd)目录); (2) 为了确保每次重启,etcd 能够加载到原来的数据,以 DaemonSet 的形式部署 kuboard-etcd,并且其容器组将始终被调度 到 master 节点,因此,您有多少个 master 节点,就会调度多少个 kuboard-etcd 的实例。 (3) 某些情况下,您的 master 节点只有一个或者两个,却仍然想要保证 kubuoard-etcd 的高可用,此时,您可以通过为一到 两个 worker 节点添加 k8s.kuboard.cn/role=etcd 的标签,来增加 kuboard-etcd 的实例数量。 (4) 如果您已经安装了 Kuboard V3,通过此方式调整 etcd 数量时,需要按照如下步骤执行,否则 etcd 将不能正常启动 1)执行 kubectl delete daemonset kuboard-etcd -n kuboard 2)为节点添加标签 3)执行 kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml 4)建议 etcd 部署的数量为 奇数

总结: kuboard 采用 DaemonSet 的形式部署 kuboard-etcd,并且其容器组将始终被调度到存在 node-role.kubernetes.io/master= 标签的 master 节点或存在 k8s.kuboard.cn/role=etcd 标签的 worker 节点,kuboard-etcd 的存储卷被映射到宿主机节点的 hostPath(/usr/share/kuboard/etcd) 目录,确保了每次重启 etcd 能够加载到原来的数据。

3 使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像

[root@k8s-master ~]# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

4 查看 kuboard 命名空间中的 pod 已就绪

[root@k8s-master ~]# kubectl get pod -n kuboard -o wide
NAME                               READY   STATUS   RESTARTS   AGE     IP             NODE        
kuboard-agent-2-6c8965cd97-rqrdq   1/1     Running   0         8m56s   10.244.85.197   k8s-node01
kuboard-agent-66d5699bf9-5xprk     1/1     Running   0         8m56s   10.244.85.196   k8s-node01
kuboard-etcd-k8dn9                 1/1     Running   0         10m     172.16.1.30     k8s-master
kuboard-v3-7979bc788f-fggsf       1/1     Running   0         10m     10.244.85.195   k8s-node01
[root@k8s-master ~]#

2.3 访问 Kuboard

在浏览器中打开链接 http://your-node-ip-address:30080 输入初始用户名和密码,并登录,用户名: admin 密码: Kuboard123

1 浏览器兼容性 (1) 请使用 Chrome / FireFox / Safari / Edge 等浏览器 (2) 不兼容 IE 以及以 IE 为内核的浏览器

2 添加新的集群 (1) Kuboard v3 是支持 Kubernetes 多集群管理的,在 Kuboard v3 的首页里,点击 添加集群 按钮,在向导的引导下可以完成集群的添加。 (2) 向 Kuboard v3 添加新的 Kubernetes 集群时,请确保您新添加集群可以访问到当前集群 Master 节点 内网IP30080 TCP 30081 TCP30081 UDP 端口,这些端口是使用 NodePort 方式暴露的。

image-20250124114810831

注意: k8s service 使用 nodeport 暴露,在节点上使用 netstat -tunlp | grep <port> 效验,发现端口找不到,telnet 发现又可以访问,这是因为在 k8s 新版本中已经删除了 kube-proxy 打开端口套接字部分,但是会在 iptables 中进行转发,故不影响访问。在 k8s master、worker 任意一 个节点上都可以查看到 iptables nat 转发规则。 image-20250124115341302

2.4 升级 kuboard

直接修改 kuboard 名称空间下名称为 kuboard-v3 的 Deployment 的镜像版本号为最新的版本号,然后等待片刻即可。

2.5 卸载 Kuboard

在 k8s-master 节点上操作

1 执行 Kuboard v3 的卸载

[root@k8s-master ~]# kubectl delete -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

2 清理遗留数据 在 master 节点以及带有 k8s.kuboard.cn/role=etcd 标签的节点上执行

[root@k8s-master ~]# rm -rf /usr/share/kuboard/

3 安装 Kuboard v3 - 内建用户库

官方URL: https://kuboard.cn/install/v3/install-built-in.html

3.1 说明

1 基于如下原因,建议您以 docker run 的方式运行 Kuboard (1) 结构更清晰(Kuboard 作为多个集群的管理界面应该独立于任何集群之外,虽然安装在 Kubernetes 集群中的 Kuboard 也可以管理多 个集群)。 (2) 登录 Kuboard 时使用不同的认证方式。 (3) 问题排查更简单。

3.2 架构说明

1 用户通过 http://外网IP:80 访问 Kuboard v3 。 2 安装在 Kubernetes 中的 Kuboard Agent 通过 内网IP 访问 Kuboard 的 Web 服务端口 80 和 Kuboard Agent Server 端口 10081。

3.3 安装

在 k8s-dashboard 节点进行操作。

[root@k8s-dashboard ~]# docker run -d \
  --restart=unless-stopped \
  --name=kuboard \
  -p 30080:80/tcp \
  -p 30081:10081/udp \
  -p 30081:10081/tcp \
  -e KUBOARD_ENDPOINT="http://172.16.1.23:30080" \
  -e KUBOARD_AGENT_SERVER_UDP_PORT="30081" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="30081" \
  -v /root/kuboard-data:/data \
swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3

参数说明:

(1) 建议将此命令保存为一个 shell 脚本,例如 start-kuboard.sh,后续升级 Kuboard 或恢复 Kuboard 时,需要通过此命令了解到最初
安装 Kuboard 时所使用的参数。
(2) 第 4 行,将 Kuboard Web 端口 80 映射到宿主机的 30080 端口。
(3) 第 5、6 行,将 Kuboard Agent Server 的端口 10081/tcp 10081/udp 映射到宿主机的 30081 端口。
(4) 第 7 行,指定 KUBOARD_ENDPOINT 为 http://内网IP:30080,如果后续修改此参数,需要将已导入的 Kubernetes 集群从 Kuboard
中删除,再重新导入。
1) KUBOARD_ENDPOINT 参数的作用是让部署到 Kubernetes 中的 kuboard-agent 知道如何访问 Kuboard Server;
2) KUBOARD_ENDPOINT 中也可以使用外网 IP;
3) Kuboard 不需要和 K8S 在同一个网段,Kuboard Agent 甚至可以通过代理访问 Kuboard Server;
4) 建议在 KUBOARD_ENDPOINT 中使用域名,如果使用域名,必须能够通过 DNS 正确解析到该域名,如果直接在宿主机配置 /etc/hosts 文件,
将不能正常运行。

(5) 第 8、9 行,指定 KUBOARD_AGENT_SERVER 的端口为 30081,此参数与第 5、6 行中的宿主机端口应保持一致,修改此参数不会改变容器内监听
的端口 10081
(6) 第 10 行,将持久化数据 /data 目录映射到宿主机的 /root/kuboard-data 路径。

3.4 访问 Kuboard v3.x

在浏览器输入 http://172.16.1.23:30080 即可访问 Kuboard v3.x 的界面。登录方式为: 用户名: admin 密 码: Kuboard123 浏览器兼容性: 请使用 Chrome / FireFox / Safari 等浏览器,不兼容 IE 以及以 IE 为内核的浏览器。

3.5 导入 k8s 集群

1 添加集群

2 配置添加集群参数

3 在被需要导入的 k8s 集群上执行导入命令

4 选择访问集群所需要的身份

5 安装 metrics-scraper

6 同理再导入一个 k8s 集群

我这里将同一个 k8s 集群再次导入到 kuboard 中,在 kuboard 中名称不同,需要特别注意的是Agent 部署名称要修改 一下。

可以看到 kuboard 中导入了 2 个 k8s 集群。

到 k8s-master 节点去查看部署的 agent 情况。

3.6 从 kuboard 中删除 k8s 集群

3.7 升级 kuboard

因为是通过 docker run 运行的 Kuboard,升级步骤如下: 1 停止已有的 kuboard 容器

[root@k8s-dashboard ~]# docker stop kuboard

2 使用新版本的镜像启动 kuboard

docker run 命令使用的还是 "3.3 安装" 章节中的。
请注意:
(1) 除了镜像标签之外,请确保命令行中所有其他参数与最初安装 Kuboard 时的参数一致。
(2) 如果您修改此处宿主机端口号,则需要您在 Kuboard 中删除已经导入了的 Kubernetes 集群,并重新导入。
(3) 请留意第 7、8、9 三行,是 v3.0.0.alpha.4 版本开始必须设置的新增参数。

4 简单使用

在 k8s-master 节点使用 kubectl 命令查看 kuboard 命名空间下 deployment/metrics-scraper 控制器的相关信息。

根据以上内容对比 kuboard 控制台。

pod 相关信息

元数据信息

service 相关信息

借助 Kuboard Proxy,登录 Kuboard 的用户可以直接访问 Service/Pod,而无需为 Service 做额外的 NodePort、Ingress 等配置。Kuboard Proxy 是 kubectl proxy 命令一种替代选项,与 kubectl proxy 相比,用户可以直接在 Kuboard 界面进行操作,而无需使用命令行。

5 用户管理

目标: 实现 liuchang 用户只能访问 k8s-1.28.0-002 集群且只有只读权限。 kuboard 内置角色如下:

5.1 创建用户

5.2 赋予权限

1 三个选项只选择其中一项,我这里选择 角色绑定(集群级别)

2 角色、k8s集群选择

3 补充:另一种实现方式

创建一个用户组,在用户组中实现角色绑定(集群级别),将 liuchang 用户加入到该用户组即可。

5.3 验证

使用 liuchang 账号登录 kuboard 成功后发现 Kubernetes 集群列表下只有k8s-1.28.0-002集群。

左侧选项中选择访问集群时所使用的身份第一项已经不能选择,集群概要、集群导入信息也无法点击。

进入 kuboard 命名空间下的 Deployment/metrics-scraper 控制器下,扩充副本失败,报 403 无权限。


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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python GIL(全局解释器锁)机制对多线程性能影响的深度分析

在Python开发领域,GIL(Global Interpreter Lock)一直是一个广受关注的技术话题。在3.13已经默认将GIL去除,在详细介绍3.13的更亲前,我们先要留了解GIL的技术本质、其对Python程序性能的影响。本文将主要基于CPython(用C语言实现的Python解释器,也是目前应用最广泛的Pyth…

java中的ArrayBlockingQueue

ArrayBlockingQueue ArrayBlockingQueue 是 Java 并发包 (java.util.concurrent) 中的一个线程安全的阻塞队列实现。 它基于数组实现,容量固定,支持先进先出的顺序。 Array Blocking Queue 数组阻塞队列 读音: [əˈreɪ] [ˈblɒkɪŋ] [kjuː] concurrent 同时发生的 /…

五. Redis 配置内容(详细配置说明)

五. Redis 配置内容(详细配置说明) @目录五. Redis 配置内容(详细配置说明)1. Units 单位配置2. INCLUDES (包含)配置3. NETWORK (网络)配置3.1 bind(配置访问内容)3.2 protected-mode (保护模式)3.3 port(端口)配置3.4 timeout(客户端超时时间)配置3.5 tcp-keepalive()配置4…

一文搞懂编程在开源软件运动中的应用

一文搞懂编程在开源软件运动中的应用一文搞懂编程在开源软件运动中的应用一理解开源软件运动文本内容开源软…………```HTML一文搞懂编程在开源软件运动中的应用一、理解开源软件运动:<!DOCTYPE html><html><head><meta charset="UTF-8"> &…

makefile在编译后输出STM32的Flash RAM占用情况的方法

本文介绍了在用makefile组织的STM32工程中,怎么在编译完成后计算并显示Flash和RAM占用情况的方法。知乎 - STM32 GCC工程编译后输出FLASH RAM使用占比的方法 里面这个方法看得我血压飙升,本身代码很不直观,写起来要反斜杠,还留了两行没用的代码,还有各种依赖命令,subst和…

您的干净代码可能是别人的技术债务

您的干净代码可能是别人的技术债务 为什么软件模式必须适应团队规模,以及如何正确操作。 大卫罗德纳斯 博士由作者生成 在软件开发中,我们面临着一个奇怪的悖论:对于一个团队来说,使代码更干净、更易维护、更优雅的架构决策,可能会让另一个团队觉得更复杂、更僵化、更麻烦…

读算法简史:从美索不达米亚到人工智能时代02古老的算法

苏美尔文字起源于湿黏土陶筹,楔形文字记录了苏美尔语,促进社会发展。阿卡德、巴比伦帝国相继统治,文字变迁。19世纪欧洲考古学家破译文字。美索不达米亚算法复杂,包括六十进制和毕达哥拉斯定理。埃及数学留存少,欧几里得算法著名。1. 苏美尔 1.1. 位于苏美尔地区的乌鲁克,…

计量经济学——空间计量概述(十八)

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } 空间计量经济学(Spatial Econometrics)创新性地解决了经典计量方法在空间数据分析中的局限性,研究地理观测值之间的相互关系。近年来,在人文社会科学的“…

经济经济学——空间计量概述(十八)

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } 空间计量经济学(Spatial Econometrics)创新性地解决了经典计量方法在空间数据分析中的局限性,研究地理观测值之间的相互关系。近年来,在人文社会科学的“…

Cisco NX-OS System Software - ACI 16.1(2g)F - 适用于 ACI 模式下的 Nexus 9000 系列交换机系统软件

Cisco NX-OS System Software - ACI 16.1(2g)F - 适用于 ACI 模式下的 Nexus 9000 系列交换机系统软件Cisco NX-OS System Software - ACI 16.1(2g)F 适用于 ACI 模式下的 Cisco Nexus 9000 系列交换机系统软件 请访问原文链接:https://sysin.org/blog/cisco-aci-16/ 查看最新…

Cisco APIC 6.1(2g)F - 应用策略基础设施控制器

Cisco APIC 6.1(2g)F - 应用策略基础设施控制器Cisco APIC 6.1(2g)F - 应用策略基础设施控制器 Application Policy Infrastructure Controller (APIC) 请访问原文链接:https://sysin.org/blog/cisco-apic-6/ 查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org思科…