K8S(十七)—— Kubernetes集群可视化工具Kuboard部署与实践指南

文章目录

前言

在Kubernetes(简称K8s)集群管理中,命令行工具(kubectl)虽灵活,但面对复杂的集群资源(如Pod、Deployment、Service)时,可视化工具能大幅降低操作门槛、提升管理效率。Kuboard作为一款轻量且功能全面的K8s可视化工具,支持集群导入、资源创建、状态监控等核心操作,且部署流程简单。

本文基于已搭建完成的K8s集群,详细讲解Kuboard的部署步骤、界面访问与集群导入,并通过“YAML文件”和“界面操作”两种方式实践容器组(Pod)与网络服务(Service)的创建,适合K8s初学者快速上手可视化管理。

一、Kuboard部署准备

1.1 前提条件

已成功搭建K8s集群,且操作节点(本文为master节点,主机名master01)具备kubectl命令执行权限(即已配置K8s集群管理员证书)。

K8s集群搭建可以参考:K8S(三)—— 基于kubeadm 1.20版本部署Kubernetes集群与Harbor私有仓库实战

1.2 Kuboard官网参考

Kuboard官方提供了详细的部署文档与Demo环境,可提前了解功能:
官网地址:https://demo.kuboard.cn/

二、Kuboard部署步骤(Master节点执行)

2.1 执行部署命令

通过kubectl apply命令直接拉取Kuboard官方部署清单,一键创建Kuboard所需的命名空间、配置文件、服务账户、控制器等资源:

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml 

执行后会输出以下资源创建成功的信息(无需修改,直接执行即可):

namespace/kuboard created configmap/kuboard-v3-config created serviceaccount/kuboard-boostrap created clusterrolebinding.rbac.authorization.k8s.io/kuboard-boostrap-crb created daemonset.apps/kuboard-etcd created deployment.apps/kuboard-v3 created service/kuboard-v3 created 

2.2 检查Kuboard相关Pod状态

部署完成后,需确认Kuboard所属命名空间(kuboard)下的Pod均处于“Running”状态,确保组件正常启动:

kubectl get pod -n kuboard 

正常输出如下(READY列均为1/1STATUS列为Running):

NAME READY STATUS RESTARTS AGE kuboard-agent-2-786b4667d-8d2ns 1/1 Running 0 35s kuboard-agent-57d4fbd758-kr462 1/1 Running 0 35s kuboard-etcd-v6prh 1/1 Running 0 88s kuboard-v3-59ccddb94c-cblq9 1/1 Running 0 88s 
若Pod处于“Pending”或“Error”状态,可通过kubectl describe pod <Pod名称> -n kuboard查看错误原因(常见问题:镜像拉取失败、资源不足)。

2.3 检查Kuboard服务暴露情况

Kuboard通过NodePort类型的Service暴露外部访问端口,需确认服务端口映射关系(重点关注30080端口,用于Web界面访问):

kubectl get svc -n kuboard 

正常输出如下(TYPENodePortPORT(S)80:30080/TCP表示集群内80端口映射到节点30080端口):

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kuboard-v3 NodePort 10.96.134.33 <none> 80:30080/TCP,10081:30081/TCP,10081:30081/UDP 108s 

三、Kuboard界面访问与集群导入

3.1 访问Kuboard Web界面

1、打开浏览器,输入访问地址:http://<Master节点IP>:30080/
(本文Master节点IP为192.168.10.14,实际地址需替换为你的Master节点IP)
2、输入默认管理员账号和密码:

  • 账号:admin
  • 密码:Kuboard123
在这里插入图片描述

3.2 导入 Kubernetes 集群

首次登录 Kuboard 后,需要将已有的 Kubernetes 集群导入到 Kuboard 进行统一管理。操作步骤如下:

1、点击左侧菜单栏 【Kubernetes 集群】
2、在右侧页面选择 【Kubernetes 集群列表】,然后点击右侧的 【添加集群】

在这里插入图片描述


3、在弹出的导入界面中,选择导入方式为 Token(默认选项),集群名称为k8s-cluster
4、根据页面提示,复制 Kuboard 提供的命令脚本(kuboard-create-token.yaml)到 Kubernetes 集群的 master 节点执行,用于自动创建 ServiceAccount(kuboard-admin)及访问凭证。

在这里插入图片描述

5、执行完脚本后,复制红色输出字段以获得Token:

在这里插入图片描述

复制输出中的 token 值。
6、回到 Kuboard 导入界面,在表单中填写:

  • 名称:自定义集群名称;
  • ApiServer 地址:集群 API Server 地址(例如 https://<master节点IP>:6443);

Token:粘贴上一步复制的 Token。

在这里插入图片描述

7、点击 【确定】 按钮,等待 Kuboard 自动连接集群。
8、选择访问集群时所使用的身份,选择使用ServiceAccount kuboard-admin,拥有对集群的完全管理权限。

在这里插入图片描述

导入完成后,即可在集群列表中查看该集群的整体状态及资源信息。

在这里插入图片描述

四、通过YAML文件创建Nginx Pod

Pod是K8s最小的部署单元,此处通过编写YAML文件创建一个Nginx Pod,并配置资源限制与端口暴露。

4.1 编写Nginx Pod的YAML文件

使用vim编辑器创建nginx.yaml文件,内容如下(字段已添加注释,便于理解):

vim nginx.yaml apiVersion: v1 # API版本,Pod属于v1版本资源kind: Pod # 资源类型,此处为Podmetadata:name: nginx # Pod名称,需唯一labels:name: nginx # Pod标签,用于后续筛选或关联服务spec:containers:# 容器列表(一个Pod可包含多个容器)-name: nginx # 容器名称image: nginx:1.14# 容器镜像(指定版本为1.14,避免拉取最新版导致兼容性问题)imagePullPolicy: IfNotPresent # 镜像拉取策略:本地有则不用拉取,本地没有再从仓库拉取resources:# 资源限制配置limits:# 资源上限memory:"128Mi"# 最大内存限制为128兆cpu:"500m"# 最大CPU限制为0.5核(1核=1000m)ports:# 容器端口暴露(仅声明,不对外提供访问)-containerPort:80# 容器内Nginx服务的默认端口 ====================================================================================== apiVersion: v1 kind: Pod metadata:name: nginx labels:name: nginx spec:containers:-name: nginx image: nginx:1.14imagePullPolicy: IfNotPresent resources:limits:memory:"128Mi"cpu:"500m"ports:-containerPort:80

4.2 执行YAML文件创建Pod

通过kubectl apply命令应用YAML文件,创建Nginx Pod:

kubectl apply -f nginx.yaml 

执行成功后,会输出pod/nginx created

4.3 验证Pod创建结果

可通过命令行或Kuboard界面验证Pod状态:

  • 界面验证:参考第五章步骤,在Kuboard界面查看Pod状态。

命令行验证:kubectl get pod nginx,若STATUSRunning,则创建成功;

在这里插入图片描述

五、在Kuboard界面查看容器组(Pod)

Kuboard界面可直观查看Pod的运行状态、资源使用情况、日志等信息,步骤如下:
1、登录Kuboard界面,点击【名称空间-选择】,选择default(即namespace);

在这里插入图片描述

2、点击左侧菜单栏【应用程序】;
2、在下拉菜单中选择【容器组】(容器组即Pod的可视化称呼);
3、在容器组列表中,可找到名为nginx的Pod,查看其状态、运行节点、资源使用率等信息;

4、点击Pod名称,可进入详情页,查看容器日志、执行命令(如exec进入容器内部)等操作。

在这里插入图片描述


在这里插入图片描述

六、通过Kuboard界面创建容器组与网络服务

除了YAML文件,Kuboard支持纯界面操作创建资源,此处实践命名空间创建→Deployment部署→NodePort服务创建的完整流程。

6.1 创建命名空间(Namespace)

命名空间用于隔离集群资源(如不同环境的资源分属不同命名空间),步骤如下:
1、点击左侧菜单栏【命名空间】,在命名空间列表页面点击【选择】;

在这里插入图片描述

2、点击【创建】,在弹出的表单中设置命名空间名称为yjs

在这里插入图片描述


在这里插入图片描述

3、点击【保存】,返回命名空间列表,可看到yjs命名空间已创建成功。

在这里插入图片描述

6.2 部署Deployment(管理Pod副本)

Deployment是K8s用于管理Pod的控制器,支持Pod副本数控制、滚动更新等功能,此处创建一个名为myapp-test的Deployment,步骤如下:
1、进入yjs命名空间(点击命名空间列表中的yjs);
2、点击【常用操作】,在下拉菜单中选择【创建工作负载】;
3、在Deployment配置页面,填写以下信息:

  • 【工作负载类型】:部署(Deployment)
  • 【工作负载名称】:myapp-test(Deployment名称);
  • 【标签】:点击【添加标签】,设置“键”为app,“值”为myapp-test(标签需与后续服务关联);
  • 【副本数】:3(创建3个Pod副本,提高服务可用性);
在这里插入图片描述

4、配置容器信息:点击添加工作容器

  • 【容器名称】:myapp-test
  • 【容器镜像】:soscscs/myapp:v1(该镜像是一个简单的测试应用,包含Web页面);
  • 【镜像拉取策略】:IfNotPresent
  • 【容器端口】:点击【+添加端口】,设置“协议”为TCP,“端口名称”为http,“容器端口”为80
在这里插入图片描述


在这里插入图片描述

5、点击页面上方【保存】,等待Deployment创建完成,此时会自动创建3个myapp-test的Pod副本。

在这里插入图片描述


在这里插入图片描述

6.3 创建NodePort服务(对外暴露访问)

Deployment创建的Pod仅能在集群内部访问,需通过Service暴露外部访问端口,此处选择NodePort类型(通过节点IP+端口访问),步骤如下:
1、点击左侧菜单栏【服务】,进入服务列表页面;

在这里插入图片描述

2、点击右侧【创建】,在服务配置页面填写以下信息:

  • 【服务名称】:myapp-test(与Deployment名称保持一致,便于识别);
  • 【选择器】:点击【添加标签选择器】,设置“键”为app,“值”为myapp-test(需与Deployment的标签完全一致,否则无法关联Pod);
  • 【服务类型】:选择NodePort
  • 【端口】:点击【添加端口】,设置“名称”为http,“协议”为TCP,“port”为80,“NodePort”为32000(外部访问端口,需在30000-32767范围内),“targetPort”为80(Pod内应用的端口);
在这里插入图片描述

3、点击页面上方【保存】,服务创建完成。

在这里插入图片描述

6.4 验证服务访问

服务创建成功后,可通过http://<任意节点IP>:32000访问myapp-test应用(节点IP可使用Master或Worker节点IP),若能看到测试页面,则服务暴露成功。

在这里插入图片描述

总结

本文从Kuboard部署入手,逐步讲解了界面访问、集群导入,并通过YAML文件界面操作两种方式实践了Pod与Service的创建,核心收获如下:
1、Kuboard部署简单,通过官方YAML文件可一键完成,且界面友好,适合初学者快速掌握K8s资源管理;
2、YAML文件创建资源更灵活,便于版本控制与批量部署;界面操作更直观,适合快速验证或临时创建资源;
3、Service的NodePort类型是对外暴露服务的常用方式,需注意端口范围(30000-32767)与标签选择器的正确性。

后续可进一步探索Kuboard的其他功能,如资源监控、日志收集、滚动更新等,逐步深入K8s集群的可视化管理。

Read more

【Golang】Go语言中如何创建Cron定时任务

【Golang】Go语言中如何创建Cron定时任务

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,ZEEKLOG全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,Golang开发,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K8S,linux,shell脚本等实操经验,网站搭建,数据库等分享。 所属的专栏:Go语言开发零基础到高阶实战 景天的主页:景天科技苑 文章目录 * Go语言中定时任务Cron * 一、Cron库的安装 * 二、Cron库的基本用法 * 三、Cron表达式的详解 * 四、Cron库的高级用法 * 1. 使用自定义的Job类型 * 2. 动态调整任务配置 * 3. 预定义时间格式

By Ne0inhk

Windows/Linux双平台保姆教程:用DDNS-GO v6.7.6实现免费内网穿透(替代花生壳)

从零构建你的专属动态域名服务:告别付费内网穿透,拥抱开源DDNS-GO 最近和几个独立开发者朋友聊天,大家普遍吐槽的一个点就是内网穿透服务。无论是为了远程调试家里的NAS,还是想临时给客户演示一个部署在本地开发机的Web应用,传统的方案要么像花生壳这类工具需要付费且流量受限,要么配置复杂得让人望而却步。更别提一些云服务商提供的穿透服务,按流量计费的模式对于高频测试来说,成本完全不可控。其实,如果你手头有一个公网IP(哪怕是动态变化的),或者你的IPv6环境是通畅的,完全没必要依赖第三方付费服务。今天,我们就来深入聊聊如何利用一个名为 DDNS-GO 的开源神器,亲手搭建一套稳定、免费且完全自控的动态域名解析系统,彻底摆脱对商业内网穿透工具的依赖。 DDNS-GO 的核心价值在于它的“桥梁”作用。它持续监测你本地网络的公网IP地址(包括IPv4和IPv6),一旦发现IP发生变化,就立刻调用云解析服务商(如阿里云、腾讯云DNSPod、Cloudflare等)的API,自动将你指定的域名更新解析到新的IP上。这样一来,无论你的网络环境如何变动,通过一个固定的域名,你总能从外网访问到家里的

By Ne0inhk

Python 爬虫实战:爬取今日头条文章与阅读量数据

前言 今日头条作为国内头部的资讯内容平台,其海量的文章、阅读量、评论等数据是分析内容传播趋势、用户兴趣偏好、舆情走向的核心素材。与传统网页不同,今日头条采用前后端分离架构,核心数据通过 API 接口动态加载,且具备严格的反爬机制(如参数加密、Token 验证、IP 封禁等),爬取难度更高。本文以 Python 为工具,系统化讲解今日头条文章与阅读量数据的爬取逻辑、接口分析方法、反爬规避策略及数据结构化处理,为从事内容数据分析的开发者提供可落地的实战方案。 摘要 本文聚焦今日头条文章与阅读量数据爬取场景,以今日头条首页及文章详情页为实战对象(合规前提下),详细阐述基于 Requests + 正则表达式的 API 接口爬取方案。核心内容包括:今日头条接口加密参数分析、请求头构造、文章列表 / 详情数据提取、阅读量 / 点赞数等互动数据爬取、数据结构化存储及基础传播分析。通过表格对比不同爬取方案的优劣,结合完整代码案例与输出结果分析,帮助开发者掌握今日头条数据爬取的核心技术要点。 一、技术选型与原理剖析 1.1

By Ne0inhk