您的位置:首页 > 科技 > 能源 > Kuberbetes图形化界面之Kuboard

Kuberbetes图形化界面之Kuboard

2024/7/6 1:05:23 来源:https://blog.csdn.net/weixin_72583321/article/details/139242345  浏览:    关键词:Kuberbetes图形化界面之Kuboard

1.1 Kuboard

  • Kuboard 是一个 Kubernetes 可视化管理平台,它提供了一种简单易用的方式来管理和监控 Kubernetes 集群。通过 Kuboard,用户可以轻松地部署、扩展和管理容器化应用程序,同时它还提供了一些高级功能,比如集群监控、日志管理、资源管理等。

  • 官网:Kuboard_Kubernetes教程_K8S安装_管理界面

1.1.1 要求

Kubernetes 版本Kuboard 版本兼容性说明
v1.28v3.5.2.x😄已验证
v1.27v3.x😄已验证
v1.26v3.x😄已验证
v1.25v3.x😄已验证
v1.24v3.x😄已验证
v1.23v3.x😄已验证
v1.22v3.x😄已验证
v1.21v3.x😄已验证
v1.20v3.x😄已验证
v1.19v3.x😄已验证
v1.18v3.x😄已验证
v1.17v3.x😄已验证
v1.16v3.x😄已验证
v1.15v3.x😄已验证
v1.14v3.x😄已验证
v1.13v3.x😄已验证
v1.12v3.x😐Kubernetes Api v1.12 不支持 dryRun, Kuboard 不支持 Kubernetes v1.12
v1.11v3.x😐Kuboard 不支持 Kubernetes v1.11

建议以 docker run 的方式运行 Kuboard:

  • 结构更清晰(Kuboard 作为多个集群的管理界面应该独立于任何集群之外,虽然安装在 Kubernetes 集群中的 Kuboard 也可以管理多个集群);

  • 登录 Kuboard 时使用不同的认证方式;

  • 问题排查更简单;

1.1.2 内建用户库部署kuboard V3

在正式安装 kuboard v3 之前,需做好一个简单的部署计划的设计,在本例中,各组件之间的连接方式,如下图所示:

  • 假设用户通过 http://外网IP:80 访问 Kuboard v3;

  • 安装在 Kubernetes 中的 Kuboard Agent 通过 内网IP 访问 Kuboard 的 Web 服务端口 80 和 Kuboard Agent Server 端口 10081。

img

安装 Kuboard 之前,假设:

  • 您已经准备好了一个 Linux 服务器用于安装 Kuboard-V3,并且该机器上的 docker 版本不低于 19.03

  • 用于安装 Kuboard v3.x 的机器已经安装了 docker,并且版本不低于 docker 19.03

  • 您已经有自己的 Kubernetes 集群,并且版本不低于 Kubernetes v1.13

[root@k8s-master-01 ~]# mkdir kuboard-v3
[root@k8s-master-01 ~]# cd kuboard-v3/
[root@k8s-master-01 kuboard-v3]# docker run -d \
--restart=unless-stopped \
--name=kuboard \
-p 80:80/tcp \
-p 10081:10081/tcp \
-e KUBOARD_ENDPOINT="http://192.168.110.21:80" \
-e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
-v /root/kuboard-data:/data \
eipwork/kuboard:v3
​
# 也可以使用镜像 swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3 ,可以更快地完成镜像下载。
# 请不要使用 127.0.0.1 或者 localhost 作为内网 IP \
# Kuboard 不需要和 K8S 在同一个网段,Kuboard Agent 甚至可以通过代理访问 Kuboard Server \
# 这里确保80端口没有监听,或者直接修改端口

1.1.3 WARNING

  • KUBOARD_ENDPOINT 参数的作用是,让部署到 Kubernetes 中的 kuboard-agent 知道如何访问 Kuboard Server;

  • KUBOARD_ENDPOINT 中也可以使用外网 IP;

  • Kuboard 不需要和 K8S 在同一个网段,Kuboard Agent 甚至可以通过代理访问 Kuboard Server;

  • 建议在 KUBOARD_ENDPOINT 中使用域名;

  • 如果使用域名,必须能够通过 DNS 正确解析到该域名,如果直接在宿主机配置 /etc/hosts 文件,将不能正常运行;

1.1.4 参数解释

  • 建议将此命令保存为一个 shell 脚本,例如 start-kuboard.sh,后续升级 Kuboard 或恢复 Kuboard 时,需要通过此命令了解到最初安装 Kuboard 时所使用的参数;

  • 第 4 行,将 Kuboard Web 端口 80 映射到宿主机的 80 端口(您可以根据自己的情况选择宿主机的其他端口);

  • 第 5 行,将 Kuboard Agent Server 的端口 10081/tcp 映射到宿主机的 10081 端口(您可以根据自己的情况选择宿主机的其他端口);

  • 第 6 行,指定 KUBOARD_ENDPOINT 为 http://内网IP,如果后续修改此参数,需要将已导入的 Kubernetes 集群从 Kuboard 中删除,再重新导入;

  • 第 7 行,指定 KUBOARD_AGENT_SERVER 的端口为 10081,此参数与第 5 行中的宿主机端口应保持一致,修改此参数不会改变容器内监听的端口 10081,例如,如果第 5 行为 -p 30081:10081/tcp 则第 7 行应该修改为 -e KUBOARD_AGENT_SERVER_TCP_PORT="30081"

  • 第 8 行,将持久化数据 /data 目录映射到宿主机的 /root/kuboard-data 路径,请根据您自己的情况调整宿主机路径;

1.1.5 访问 Kuboard v3.x

在浏览器输入 http://your-host-ip:80 即可访问 Kuboard v3.x 的界面,登录方式:

  • 用户名: admin

  • 密 码: Kuboard123

  • 在启动命令行中增加环境变量 KUBOARD_ADMIN_DERAULT_PASSWORD,可以设置 admin 用户的初始默认密码。

image-20240524110332424

image-20240524110532567

1.1.6 添加集群

image-20240524110715382

  • 粘贴这些内容获取Token

[root@k8s-master-01 kuboard-v3]# cat << EOF > kuboard-create-token.yaml
---
apiVersion: v1
kind: Namespace
metadata:name: kuboard
​
---
apiVersion: v1
kind: ServiceAccount
metadata:name: kuboard-adminnamespace: kuboard
​
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: kuboard-admin-crb
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: kuboard-adminnamespace: kuboard
​
---
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:annotations:kubernetes.io/service-account.name: kuboard-adminname: kuboard-admin-tokennamespace: kuboard
EOF
[root@k8s-master-01 kuboard-v3]# 
[root@k8s-master-01 kuboard-v3]# kubectl apply -f kuboard-create-token.yaml 
[root@k8s-master-01 kuboard-v3]# echo -e "\033[1;34m将下面这一行红色输出结果填入到 kuboard 界面的 Token 字段:\033[0m"
将下面这一行红色输出结果填入到 kuboard 界面的 Token 字段:
[root@k8s-master-01 kuboard-v3]# echo -e "\033[31m$(kubectl -n kuboard get secret $(kubectl -n kuboard get secret kuboard-admin-token | grep kuboard-admin-token | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)\033[0m"
eyJhbGciOiJSUzI1NiIsImtpZCI6IlpmcEhiNTFfcDBka3pYM2VCeUVwR1hIMFNBZHNnX25TY0FwMDhjazhRdUkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJvYXJkIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Imt1Ym9hcmQtYWRtaW4tdG9rZW4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3Vib2FyZC1hZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImZhZTg1Y2ExLTU0ZmItNGZlZS05OTAzLTU0OTVhN2RkMWIxYiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJvYXJkOmt1Ym9hcmQtYWRtaW4ifQ.lQgXCznEGbNKVi8j7f5ZGbJreDHTAveIv-YftX-0P1LsmGKmpICnwmKAgv558GPxlOrtABdEvyUmGCHP_IkIwpAbBjiZubPaVDM-nFsUvpTsmXNJ-brkbFFhYY5LxE5d74XrDdc0z8WBXzzt-Ipb0Jy30GdGea33CH0qMvS_xBaGd6ObjJnUomlX8ZC6EeYMfquaOMoVBEv-R-88fxxj7-oWHQtYMYmHYrO-1vD2R7CFjbN6Dtx0wE-4hDsw8SelL1YS4k-fA2UG-MoUL-xXmBVFWzVTDDI96ctZK7LIfANmABo1I6O_rVR5Bc0z5BssIXflRn4InK6ryOmvoezZNQ

image-20240524110922705

image-20240524110951219

image-20240524111107880

image-20240524111158005

1.1.7 测试

  • 创建NameSpace

image-20240524111258282

image-20240524111341062

[root@k8s-master-01 kuboard-v3]# kubectl get ns dev
NAME   STATUS   AGE
dev    Active   27s
  • 部署工作负载

image-20240524111724049

image-20240524112524976

image-20240524112056455

image-20240524113824920

image-20240524112559662

[root@k8s-master-01 kuboard-v3]# kubectl get pod -n dev -o wide
NAME                        READY   STATUS    RESTARTS   AGE   IP               NODE          NOMINATED NODE   READINESS GATES
nginx-pod-8959999b6-46ksq   1/1     Running   0          71s   10.244.154.198   k8s-node-01   <none>           <none>
nginx-pod-8959999b6-lzgfh   1/1     Running   0          71s   10.244.44.195    k8s-node-02   <none>           <none>
nginx-pod-8959999b6-qxlhk   1/1     Running   0          71s   10.244.44.196    k8s-node-02   <none>           <none>

image-20240524112815921

[root@k8s-master-01 ~]# kubectl get svc -n dev
NAME        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
nginx-pod   NodePort   10.109.210.215   <none>        81/3008   20s

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com