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

文章目录

  • 前言
  • 一、Kuboard部署准备
    • [1.1 前提条件](#1.1 前提条件)
    • [1.2 Kuboard官网参考](#1.2 Kuboard官网参考)
  • 二、Kuboard部署步骤(Master节点执行)
    • [2.1 执行部署命令](#2.1 执行部署命令)
    • [2.2 检查Kuboard相关Pod状态](#2.2 检查Kuboard相关Pod状态)
    • [2.3 检查Kuboard服务暴露情况](#2.3 检查Kuboard服务暴露情况)
  • 三、Kuboard界面访问与集群导入
    • [3.1 访问Kuboard Web界面](#3.1 访问Kuboard Web界面)
    • [3.2 导入 Kubernetes 集群](#3.2 导入 Kubernetes 集群)
  • [四、通过YAML文件创建Nginx Pod](#四、通过YAML文件创建Nginx Pod)
    • [4.1 编写Nginx Pod的YAML文件](#4.1 编写Nginx Pod的YAML文件)
    • [4.2 执行YAML文件创建Pod](#4.2 执行YAML文件创建Pod)
    • [4.3 验证Pod创建结果](#4.3 验证Pod创建结果)
  • 五、在Kuboard界面查看容器组(Pod)
  • 六、通过Kuboard界面创建容器组与网络服务
    • [6.1 创建命名空间(Namespace)](#6.1 创建命名空间(Namespace))
    • [6.2 部署Deployment(管理Pod副本)](#6.2 部署Deployment(管理Pod副本))
    • [6.3 创建NodePort服务(对外暴露访问)](#6.3 创建NodePort服务(对外暴露访问))
    • [6.4 验证服务访问](#6.4 验证服务访问)
  • 总结

前言

在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所需的命名空间、配置文件、服务账户、控制器等资源:

bash 复制代码
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"状态,确保组件正常启动:

bash 复制代码
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界面访问):

bash 复制代码
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文件,内容如下(字段已添加注释,便于理解):

yaml 复制代码
vim nginx.yaml
apiVersion: v1  # API版本,Pod属于v1版本资源
kind: Pod       # 资源类型,此处为Pod
metadata:
  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.14
    imagePullPolicy: IfNotPresent
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 80

4.2 执行YAML文件创建Pod

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

bash 复制代码
kubectl apply -f nginx.yaml

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

4.3 验证Pod创建结果

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

  • 命令行验证:kubectl get pod nginx,若STATUSRunning,则创建成功;
  • 界面验证:参考第五章步骤,在Kuboard界面查看Pod状态。

五、在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集群的可视化管理。

相关推荐
深蓝电商API5 小时前
爬虫+Docker:让你的爬虫项目一键部署、可移植
爬虫·docker·容器
二宝1525 小时前
黑马商城day3-微服务01
微服务·云原生·架构
ZHE|张恒6 小时前
使用 Docker 容器测试端口开放性
运维·docker·容器
切糕师学AI6 小时前
云原生技术栈解析:宿主机、容器、Docker、Kubernetes 之间的区别于联系
docker·云原生·容器·kubernetes
云雾J视界8 小时前
Linux企业级解决方案架构:字节跳动短视频推荐系统全链路实践
linux·云原生·架构·kubernetes·音视频·glusterfs·elk stack
java_logo8 小时前
Docker 部署 MinIO 全指南
运维·windows·mongodb·docker·容器
李憨憨--9 小时前
掌握 Kubernetes 的可观测性 (Tracestore)、安全性 (OPA)、自动化 (Flagger) 和自定义指标
kubernetes
三坛海会大神55511 小时前
k8s(九)安全机制
安全·容器·kubernetes
三坛海会大神55511 小时前
k8s(十二)Rancher详解
容器·kubernetes·rancher