当前位置: 首页 > news >正文

(二十一)、Docker 部署 Minikube 使用可视化管理工具 Kuboard

文章目录

    • 1、介绍
      • docker 运行 minikube 集群节点(kube-apiserver )无法被直接访问的问题
      • Kuboard 需要访问到 k8s 集群的kube-apiserver
    • 2、安装 Kuboard
      • 2.1、k8s 集群节点可以被外部直接访问的情况
        • 2.1.1、下载镜像
        • 2.1.2、运行 deployment.yml
        • 2.1.3、访问 Kuboard
      • 2.2、k8s 集群节点无法被外部直接访问的情况
        • 2.2.1.、细节
        • 2.2.2、 修改完后的文档
        • 2.2.3、 执行 yaml,部署 Kuboard 的Pod和NodePort
        • 2.2.4、确定Pod运行状态
        • 2.2.5、访问 Kuboard
    • 3、Kuboard 添加集群
    • 4、Kuboard 查看k8s 集群内容
    • 5、体验自动/手动伸缩功能

1、介绍

访问 Kuboard 官网

docker 运行 minikube 集群节点(kube-apiserver )无法被直接访问的问题

对于本系列,系统环境是 mac(OS 14.3.1) ,此版本的OS 系统暂不支持以 Virtual Box 方式运行 minikube 。
使用 docker 部署 minikube 会有一个问题,就是minikube 的内部地址没有办法直接被宿主机访问。
对于docker 运行 minikube ,在k8s 中部署的服务,可以通过 NodePort 方式暴露服务,然后通过隧道端口被宿主机直接访问。
但是对于集群节点,这种方式行不通,即无法为表示集群节点的 kube-apiserver 提供一个可以直接被宿主机访问的端口映射。

Kuboard 需要访问到 k8s 集群的kube-apiserver

Kuboard 通过代理地址和 k8s 集群进行交互,如果 k8s 服务不可访达,那么交互就无从谈起。

2、安装 Kuboard

2.1、k8s 集群节点可以被外部直接访问的情况

比如使用 Virtual Box 安装minikube 的模式,或者 docket dasktop 自带 k8s 的模式。
直接使用 docker 安装 Kuboard 即可。
这里使用 本机 Docker 安装独立的 Kuboard V3 版本
在这里插入图片描述

2.1.1、下载镜像
docker pull swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3
2.1.2、运行 deployment.yml

这里具体采取的配置为 8081 为宿主机访问Kuboard的端口,30081 为Kuboard访问 k8s 集群的代理端口
192.168.58.2 为

docker volume create kuboard-data
docker run -d \--restart=unless-stopped \--name=kuboard \-p 80:80/tcp \-p 10081:10081/tcp \-e KUBOARD_ENDPOINT="https://192.168.58.2:8443" \-e KUBOARD_AGENT_SERVER_TCP_PORT=30081 \-v kuboard-data:/data/kuboard \swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3
2.1.3、访问 Kuboard

http://127.0.0.1:8081/
默认登陆名和密码是

admin/Kuboard123

2.2、k8s 集群节点无法被外部直接访问的情况

比如本系列中,使用 docker 部署 minikube ,此时k8s 集群节点无法被外部直接访问,我们直接在 K8s 内部署 Kuboard,利用k8s 集群内可以自由通信的特性,再把 Kuboard 以NodePort 的形式暴露出来。

2.2.1.、细节
  • 确认 node 节点ip

192.168.49.2

➜  ~ kubectl get nodes -o wide
NAME       STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
minikube   Ready    control-plane   25m   v1.31.0   192.168.49.2   <none>        Ubuntu 22.04.4 LTS   5.15.49-linuxkit   docker://27.2.0
  • 确认 storageclass,比如下面查询到叫 standard

standard

➜  ~ kubectl get storageclass
NAME                 PROVISIONER                RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
standard (default)   k8s.io/minikube-hostpath   Delete          Immediate           false                  21m
  • 下载 kuboard-v3.yaml,对其中的内容进行修改

官方链接

第一把 KUBOARD_ENDPOINT: ‘http://your-node-ip-address:30080’ 中 your-node-ip-address 修改为 kubectl get nodes -o wide 查询获得的ip (我这里是 192.168.49.2 )
第二是把 storageClassName: please-provide-a-valid-StorageClass-name-here 中please-provide-a-valid-StorageClass-name-here修改为 kubectl get storageclass 查询得到的name (我这里是 standard)
第三,对 PVC 部分修改为下面内容-增加了一行 storageClassName: standard
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kuboard-data-pvc
namespace: kuboard
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi # 根据需要调整大小
storageClassName: standard # 确保与您的 PV 的存储类匹配
在这里插入图片描述

2.2.2、 修改完后的文档
---
apiVersion: v1
kind: Namespace
metadata:name: kuboard---
apiVersion: v1
kind: ConfigMap
metadata:name: kuboard-v3-confignamespace: kuboard
data:# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-built-in.html# [common]KUBOARD_ENDPOINT: 'http://192.168.49.2:30080'KUBOARD_AGENT_SERVER_UDP_PORT: '30081'KUBOARD_AGENT_SERVER_TCP_PORT: '30081'KUBOARD_SERVER_LOGRUS_LEVEL: info  # error / debug / trace# KUBOARD_AGENT_KEY 是 Agent 与 Kuboard 通信时的密钥,请修改为一个任意的包含字母、数字的32位字符串,此密钥变更后,需要删除 Kuboard Agent 重新导入。KUBOARD_AGENT_KEY: 32b7d6572c6255211b4eec9009e4a816  # 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-gitlab.html# [gitlab login]# KUBOARD_LOGIN_TYPE: "gitlab"# KUBOARD_ROOT_USER: "your-user-name-in-gitlab"# GITLAB_BASE_URL: "http://gitlab.mycompany.com"# GITLAB_APPLICATION_ID: "7c10882aa46810a0402d17c66103894ac5e43d6130b81c17f7f2d8ae182040b5"# GITLAB_CLIENT_SECRET: "77c149bd3a4b6870bffa1a1afaf37cba28a1817f4cf518699065f5a8fe958889"# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-github.html# [github login]# KUBOARD_LOGIN_TYPE: "github"# KUBOARD_ROOT_USER: "your-user-name-in-github"# GITHUB_CLIENT_ID: "17577d45e4de7dad88e0"# GITHUB_CLIENT_SECRET: "ff738553a8c7e9ad39569c8d02c1d85ec19115a7"# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-ldap.html# [ldap login]# KUBOARD_LOGIN_TYPE: "ldap"# KUBOARD_ROOT_USER: "your-user-name-in-ldap"# LDAP_HOST: "ldap-ip-address:389"# LDAP_BIND_DN: "cn=admin,dc=example,dc=org"# LDAP_BIND_PASSWORD: "admin"# LDAP_BASE_DN: "dc=example,dc=org"# LDAP_FILTER: "(objectClass=posixAccount)"# LDAP_ID_ATTRIBUTE: "uid"# LDAP_USER_NAME_ATTRIBUTE: "uid"# LDAP_EMAIL_ATTRIBUTE: "mail"# LDAP_DISPLAY_NAME_ATTRIBUTE: "cn"# LDAP_GROUP_SEARCH_BASE_DN: "dc=example,dc=org"# LDAP_GROUP_SEARCH_FILTER: "(objectClass=posixGroup)"# LDAP_USER_MACHER_USER_ATTRIBUTE: "gidNumber"# LDAP_USER_MACHER_GROUP_ATTRIBUTE: "gidNumber"# LDAP_GROUP_NAME_ATTRIBUTE: "cn"---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: kuboard-etcdnamespace: kuboardlabels:app: kuboard-etcd
spec:serviceName: kuboard-etcdreplicas: 3selector:matchLabels:app: kuboard-etcdtemplate:metadata:name: kuboard-etcdlabels:app: kuboard-etcdspec:containers:- name: kuboard-etcdimage: swr.cn-east-2.myhuaweicloud.com/kuboard/etcd:v3.4.14ports:- containerPort: 2379name: client- containerPort: 2380name: peerenv:- name: KUBOARD_ETCD_ENDPOINTSvalue: >-kuboard-etcd-0.kuboard-etcd:2379,kuboard-etcd-1.kuboard-etcd:2379,kuboard-etcd-2.kuboard-etcd:2379volumeMounts:- name: datamountPath: /datacommand:- /bin/sh- -c- |PEERS="kuboard-etcd-0=http://kuboard-etcd-0.kuboard-etcd:2380,kuboard-etcd-1=http://kuboard-etcd-1.kuboard-etcd:2380,kuboard-etcd-2=http://kuboard-etcd-2.kuboard-etcd:2380"exec etcd --name ${HOSTNAME} \--listen-peer-urls http://0.0.0.0:2380 \--listen-client-urls http://0.0.0.0:2379 \--advertise-client-urls http://${HOSTNAME}.kuboard-etcd:2379 \--initial-advertise-peer-urls http://${HOSTNAME}:2380 \--initial-cluster-token kuboard-etcd-cluster-1 \--initial-cluster ${PEERS} \--initial-cluster-state new \--data-dir /data/kuboard.etcdvolumeClaimTemplates:- metadata:name: dataspec:# 请填写一个有效的 StorageClass namestorageClassName: standardaccessModes: [ "ReadWriteMany" ]resources:requests:storage: 5Gi---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: kuboard-data-pvcnamespace: kuboard
spec:accessModes:- ReadWriteOnceresources:requests:storage: 10Gi  # 根据需要调整大小storageClassName: standard  # 确保与您的 PV 的存储类匹配---
apiVersion: v1
kind: Service
metadata:name: kuboard-etcdnamespace: kuboard
spec:type: ClusterIPports:- port: 2379name: client- port: 2380name: peerselector:app: kuboard-etcd---
apiVersion: apps/v1
kind: Deployment
metadata:annotations:deployment.kubernetes.io/revision: '9'k8s.kuboard.cn/ingress: 'false'k8s.kuboard.cn/service: NodePortk8s.kuboard.cn/workload: kuboard-v3labels:k8s.kuboard.cn/name: kuboard-v3name: kuboard-v3namespace: kuboard
spec:replicas: 1selector:matchLabels:k8s.kuboard.cn/name: kuboard-v3template:metadata:labels:k8s.kuboard.cn/name: kuboard-v3spec:containers:- env:- name: KUBOARD_ETCD_ENDPOINTSvalue: >-kuboard-etcd-0.kuboard-etcd:2379,kuboard-etcd-1.kuboard-etcd:2379,kuboard-etcd-2.kuboard-etcd:2379envFrom:- configMapRef:name: kuboard-v3-configimage: 'swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3'imagePullPolicy: Alwaysname: kuboardvolumeMounts:- mountPath: "/data"name: kuboard-datavolumes:- name: kuboard-datapersistentVolumeClaim:claimName: kuboard-data-pvc---
apiVersion: v1
kind: Service
metadata:annotations:k8s.kuboard.cn/workload: kuboard-v3labels:k8s.kuboard.cn/name: kuboard-v3name: kuboard-v3namespace: kuboard
spec:ports:- name: webuinodePort: 30080port: 80protocol: TCPtargetPort: 80- name: agentservertcpnodePort: 30081port: 10081protocol: TCPtargetPort: 10081- name: agentserverudpnodePort: 30081port: 10081protocol: UDPtargetPort: 10081selector:k8s.kuboard.cn/name: kuboard-v3sessionAffinity: Nonetype: NodePort
2.2.3、 执行 yaml,部署 Kuboard 的Pod和NodePort

kubectl apply -f kuboard-v3.yaml

➜  kubectl apply -f kuboard-v3.yaml      

正常会打印


namespace/kuboard created
configmap/kuboard-v3-config created
statefulset.apps/kuboard-etcd created
persistentvolumeclaim/kuboard-data-pvc created
service/kuboard-etcd created
deployment.apps/kuboard-v3 created
service/kuboard-v3 created
2.2.4、确定Pod运行状态
➜  ~ kubectl get pods -n kuboard

可能会遇到报错

NAME
kuboard-etcd-0                0/1     ImagePullBackOff   0          2m49s
kuboard-v3-69bd874899-pjj2m   0/1     ErrImagePull       0          2m35s

此时,把对应的Pod删除.会有自动充实机制

kubectl delete pod kuboard-etcd-0 -n kuboard
kubectl delete pod kuboard-v3-69bd874899-pjj2m -n kuboard

启动成功会展示

➜  ~ kubectl get pods -n kuboard
NAME                          READY   STATUS    RESTARTS      AGE
kuboard-etcd-0                1/1     Running   2 (24s ago)   91s
kuboard-etcd-1                1/1     Running   2 (21s ago)   85s
kuboard-etcd-2                1/1     Running   2 (19s ago)   82s
kuboard-v3-69bd874899-zx5cj   1/1     Running   0             30s
2.2.5、访问 Kuboard

因为是在 docker 运行 minikube,访问 Kuboard 的NodePort 服务,需要构造一个隧道端口
参考 从宿主机访问 k8s(minikube) 发布的 redis 服务

特殊之处在于,Kuboard 需要在特定的命名空间中

  • 查看命名空间
# 查看命名空间
➜  ~ kubectl get svc -n kuboard
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                        AGE
kuboard-etcd   ClusterIP   10.97.148.215   <none>        2379/TCP,2380/TCP                              30m
kuboard-v3     NodePort    10.104.126.78   <none>        80:30080/TCP,10081:30081/TCP,10081:30081/UDP   30m
  • 为 kuboard-v3 提供隧道服务

minikube service kuboard-v3 -n kuboard

# 为 提供隧道服务
➜  ~ minikube service kuboard-v3 -n kuboard
W1024 01:11:56.611451   15452 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open /Users/wujie/.docker/contexts/meta/37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f/meta.json: no such file or directory
|-----------|------------|----------------------|---------------------------|
| NAMESPACE |    NAME    |     TARGET PORT      |            URL            |
|-----------|------------|----------------------|---------------------------|
| kuboard   | kuboard-v3 | webui/80             | http://192.168.49.2:30080 |
|           |            | agentservertcp/10081 | http://192.168.49.2:30081 |
|           |            | agentserverudp/10081 | http://192.168.49.2:30081 |
|-----------|------------|----------------------|---------------------------|
🏃  为服务 kuboard-v3 启动隧道。
|-----------|------------|-------------|------------------------|
| NAMESPACE |    NAME    | TARGET PORT |          URL           |
|-----------|------------|-------------|------------------------|
| kuboard   | kuboard-v3 |             | http://127.0.0.1:57428 |
|           |            |             | http://127.0.0.1:57429 |
|           |            |             | http://127.0.0.1:57430 |
|-----------|------------|-------------|------------------------|
[kuboard kuboard-v3  http://127.0.0.1:57428
http://127.0.0.1:57429
http://127.0.0.1:57430]
❗  因为你正在使用 darwin 上的 Docker 驱动程序,所以需要打开终端才能运行它。

访问 http://127.0.0.1:57428
http://127.0.0.1:57429
http://127.0.0.1:57430 任意一个
在这里插入图片描述
默认用户名和密码是

admin/Kuboard123

在这里插入图片描述

3、Kuboard 添加集群

这里就以 Docker 运行 minikube,然后在 k8s 中部署 Kuboard 为例了

选择第一种方式,获取 token

在这里插入图片描述
ApiServer 地址 写 kubectl get nodes -o wide 获取的地址(我这里是 192.168.49.2),端口固定为 8443,需要以 https:// 开头
即 https://192.168.49.2:8443

在这里插入图片描述

4、Kuboard 查看k8s 集群内容

需要先选择访问集群的身份
在这里插入图片描述

5、体验自动/手动伸缩功能

在这里插入图片描述

http://www.lryc.cn/news/470624.html

相关文章:

  • 代码编辑组件
  • 裴蜀定理与欧几里得算法——蓝桥杯真题中的应用
  • 冯诺依曼架构及CPU相关概念
  • 智能管线巡检系统:强化巡检质量,确保安全高效运维
  • React写关键字高亮的三个方案
  • 重塑在线软件开发新纪元:集成高效安全特性,深度解析与评估会员与促销管理系统的系统架构设计
  • 多层感知机的从零实现与softmax的从零实现(真·0000零基础)
  • 【Rust练习】18.特征 Trait
  • 【自动化测试之oracle数据库】MacOs如何安装oracle- client
  • Spring MVC的MultipartFile
  • ●Leetcode| 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和
  • 关于算法的时间复杂度和空间复杂度的分析
  • 深入浅出 C++ STL:解锁高效编程的秘密武器
  • 2024年1024程序人生总结
  • 【p2p、分布式,区块链笔记 分布式容错算法】: 拜占庭将军问题+实用拜占庭容错算法PBFT
  • 鸿蒙NEXT开发-应用数据持久化之用户首选项(基于最新api12稳定版)
  • 人工智能_神经网络103_感知机_感知机工作原理_感知机具备学习能力_在学习过程中自我调整权重_优化效果_多元线性回归_逻辑回归---人工智能工作笔记0228
  • WISE:重新思考大语言模型的终身模型编辑与知识记忆机制
  • 网络安全证书介绍
  • 【已解决】【hadoop】【hive】启动不成功 报错 无法与MySQL服务器建立连接 Hive连接到MetaStore失败 无法进入交互式执行环境
  • 基于架设一台NFS服务器实操作业
  • eachers中的树形图在点击其中某个子节点时关闭其他同级子节点
  • Maven 介绍与核心概念解析
  • 计算机网络-MSTP概述
  • Redisson(三)应用场景及demo
  • 考研要求掌握的C语言程度(堆排序)1
  • chronyd配置了local的NTP server之后, NTP报文中出现public IP的问题
  • docker常用命令整理
  • 将CSDN博客转换为PDF的Python Web应用开发--Flask实战
  • AIGC学习笔记(3)——AI大模型开发工程师