【k8s多集群管理平台开发实践】十二、开发总结及注意事项【完结】
该系列文章主要是介绍了多k8s集群平台开发的一个思路,以及一些重点功能的代码实现,通过切换k8s按钮实现更改cookie clusterId的值,然后平台通过读取cookie中clusterId的值来读取对应k8s的配置文件并通过调用api-server来加载该k8s的相关配置。本系列文章只要是取了整个k8s功能中的部分重要功能,网友可以根据该思路来继续扩展出更多的功能。
文章目录
简介
该系列文章主要是介绍了多k8s集群平台开发的一个思路,以及一些重点功能的代码实现,通过切换k8s按钮实现更改cookie clusterId的值,然后平台通过读取cookie中clusterId的值来读取对应k8s的配置文件并通过调用api-server来加载该k8s的相关配置。本系列文章只要是取了整个k8s功能中的部分重要功能,网友可以根据该思路来继续扩展出更多的功能。目前该系列文章所实现的功能均来自xkube【一款多k8s集群管理平台】git地址:https://gitee.com/eeenet/xkube ,而xkube中的功能更改完善更全面。
总结前面11章节所实现的功能:
- deployment—实现了读取deployment列表、创建deployment、读取yaml配置、重启deployment下的pod。
- pods—实现了读取pod列表、查看pod的日志,和登录pod的终端。
- cronjob—实现了读取cronjob的列表、创建cronjob、读取和更改cronjob的yaml配置文件。
- hpa—【Horizontal Pod Autoscalert】pod的水平扩缩容,实现了读取配置列表、创建hpa、读取和修改hpa的yaml配置文件。
- svc—实现读取service的列表、创建service服务,读取和更新service的yaml配置文件。
- ingress—实现读取ingress的列表、创建ingress,读取和更新ingress的yaml配置文件。
- configmap—实现读取configmap的列表、创建configmap,读取和更新configmap的yaml配置文件。
- pvc—实现读取pvc列表。
- pv—实现读取pv列表。
- storageclass—实现读取storageclass列表。
- event—实现根据不同的资源类型加载事件信息。
一.完善集群更多功能
1.1.可以扩展更多的功能
可以在此系列代码的基础上扩展出更多的功能,例如:增加各种资源的详情页、完善statefulset、job、daemonset、secret、这些的功能,增加一些资源在各集群间的克隆迁移功能、增加一些登录及权限控制的功能等等。可以参考下图中提到的一些功能,也可以发挥想象创造出更多的功能。
二.该系列课程代码地址
k8s集群管理平台开发实践–该系列文章中的代码地址https://gitee.com/eeenet/myk8s
三.技术栈及开发经验
3.1.开发过程中所使用到的一些技术栈
3.1 xkube中所使用到的技术栈及相关技术知识
- golang–编程语言
- beego–go语言下的web框架
- layui–前端jquery框架
- websocket–用于登录pod的ssh终端
- aliyunSDK–CICD这部分功能用于调用阿里云的流水线的api
- kubernetes–了解掌握k8s管理相关技术
- client-go–k8s管理平台开发的sdk
- echarts–在查看节点和pod的内存和cpu使用率时画曲线图
- monaco-editor—yaml配置文件的显示和更新
- redis–用于后台存取session及k8s集群管理平台的一些列表缓存。
- mysql–存放用户登录信息、权限控制、cicd信息管理等
- editor–wiki文档功能的编辑器
四.开发过程中需要注意的事项
4.1.注意事项
- 在开发过程中注意各个集群和资源所使用的的api版本,不同的集群由于版本不同,api的版本不一样,需要判断k8s的版本号再选用合适的api版本。
- 针对k8s集群规模比较大的情况,如果加载pod、deployment列表时,默认加载全部命名空间,需要考虑性能问题,可以默认加载指定命名空间,或者通过limit限制读取的数量,又或者通过informer的方式来读取。
- 可能存在文章中的代码会附有代码注释,而git源码中的代码没有注释的情况。
- 调试过程中,传递的集群ID:默认定义成ali-cluster1和ali-cluster2,名称可以自己定义,当首页设置cookie为ali-cluster1时则读取根目录下的ali-cluster1.txt【将kubeconfig配置拷贝到此文件中】,如果没有设置cookie的情况下,则读取根目录下的kubeconfig.txt中的配置。
- 有些k8s环境需要进行独立的校验才可以使用kubectl的情况,例如aws的kubeconfig就无法正常使用,需要创建独立的BearerToken,然后再将token配置放到集群名称.txt的文件中。具体代码参考:common/k8sclient.go。
- 开发环境所用到的各版本可以参考:go.mod
五.反馈与交流
对于k8s多集群管理平台开发有什么反馈可以在此提交:https://gitee.com/eeenet/myk8s/issues,有可以通过gitee的私信或微信进行交流:
更多推荐
所有评论(0)