We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🌼花折 - KubeDoor 是一个使用Python + Vue开发,基于K8S准入控制机制的微服务资源管控平台。专注微服务每日高峰时段的资源视角,实现了微服务的资源分析统计与强管控,确保微服务资源的资源申请率和真实使用率一致。📀项目仓库:https://github.com/CassInfra/KubeDoor
如果觉得项目不错,麻烦动动小手点个⭐️Star⭐️ 如果你还有其他想法或者需求,欢迎在 issue 中交流
(如二维码过期可加starsliao好友,备注kubedoor)
需要有cadvisor和kube-state-metrics这2个JOB,才能采集到K8S的以下指标
cadvisor
kube-state-metrics
container_cpu_usage_seconds_total
container_memory_working_set_bytes
container_spec_cpu_quota
kube_pod_container_info
kube_pod_container_resource_limits
kube_pod_container_resource_requests
用于K8S Mutating Webhook的强制https认证
kubectl apply -f https://StarsL.cn/kubedoor/00.cert-manager_v1.16.2_cn.yaml
用于存储采集的指标数据与微服务的资源信息
# 默认使用docker compose运行,部署在/opt/clickhouse目录下。 curl -s https://StarsL.cn/kubedoor/install-clickhouse.sh|sudo bash # 启动ClickHouse(启动后会自动初始化表结构) cd /opt/clickhouse && docker compose up -d
如果已有ClickHouse,请逐条执行以下SQL,完成初始化表结构
https://StarsL.cn/kubedoor/kubedoor-init.sql
wget https://StarsL.cn/kubedoor/kubedoor.tgz tar -zxvf kubedoor.tgz # 编辑values.yaml文件,请仔细阅读注释,根据描述修改配置内容。 vim kubedoor/values.yaml # 使用helm安装(注意在kubedoor目录外执行。) helm install kubedoor ./kubedoor # 安装完成后,所有资源都会部署在kubedoor命名空间。
使用K8S节点IP + kubedoor-web的NodePort访问,默认账号密码都是 kubedoor
kubedoor
点击配置中心,输入需要采集的历史数据时长,点击采集并更新,即可采集历史数据并更新高峰时段数据到管控表。
配置中心
采集并更新
默认会从Prometheus采集10天数据(建议采集1个月),并将10天内最大资源消耗日的数据写入到管控表,如果耗时较长,请等待采集完成或缩短采集时长。重复执行采集并更新不会导致重复写入数据,请放心使用,每次采集后都会自动将10天内最大资源消耗日的数据写入到管控表。
点击管控状态的开关,显示管控已启用,表示已开启。
管控状态
管控已启用
部署完成后,默认不会开启管控机制,你可以按上述操作通过WebUI 来开关管控能力。特殊情况下,你也可以使用kubectl来开关管控功能:
kubectl
# 开启管控 kubectl apply -f https://StarsL.cn/kubedoor/99.kubedoor-Mutating.yaml # 关闭管控 kubectl delete mutatingwebhookconfigurations kubedoor-webhook-configuration
开启管控机制后,目前只会拦截deployment的创建,更新,扩缩容操作;管控pod数,需求值,限制值。不会控制其它操作和属性。
开启管控机制后,通过任何方式对Deployment执行扩缩容或者更新操作都会受到管控。
开启管控机制后,扩缩容或者重启Deployment时,Pod数优先取指定Pod字段,若该字段为-1,则取当日Pod字段。
指定Pod
当日Pod
你通过Kubectl对一个Deployment执行了扩容10个Pod后,会触发拦截机制,到数据库中去查询该微服务的Pod,然后使用该值来进行实际的扩缩容。(正确的做法应该是在KubeDoor-Web来执行扩缩容操作。)
你通过某发布系统修改了Deployment的镜像版本,执行发布操作,会触发拦截机制,到数据库中去查询该微服务的Pod数,需求值,限制值,然后使用这些值值以及新的镜像来进行实际的更新操作。
你对deployment的操作不会触发deployment重启的,也没有修改Pod数的: 触发管控拦截后,只会按照你的操作来更新deployment(不会重启Deployment)
你对deployment的操作不会触发deployment重启的,并且修改Pod数的: 触发管控拦截后,Pod数会根据数据库的值以及你修改的其它信息来更新Deployment。(不会重启Deployment)
你对deployment的操作会触发deployment重启的: 触发管控拦截后,会到数据库中去查询该微服务的Pod数,需求值,限制值,然后使用这些值以及你修改的其它信息来更新Deployment。(会重启Deployment)
感谢如下优秀的项目,没有这些项目,不可能会有KubeDoor:
后端技术栈
前端技术栈
特别鸣谢
The text was updated successfully, but these errors were encountered:
No branches or pull requests
🌈概述
🌼花折 - KubeDoor 是一个使用Python + Vue开发,基于K8S准入控制机制的微服务资源管控平台。专注微服务每日高峰时段的资源视角,实现了微服务的资源分析统计与强管控,确保微服务资源的资源申请率和真实使用率一致。📀项目仓库:https://github.com/CassInfra/KubeDoor
💠架构图
💎功能描述
📊采集K8S微服务每日业务高峰时段P95的CPU内存消耗,以及需求、限制值与Pod数。基于采集的数据实现了一个Grafana看板并集成到了WEB UI。
🎡每日从采集的数据中,获取最近10天各微服务的资源信息,获取资源消耗最大日的P95资源,作为微服务的需求值写入数据库。
🌐实现了一个K8S管控与展示的WEB UI。
🚧当微服务更新部署时,基于K8S准入控制机制对资源进行管控【默认不开启】:
如果觉得项目不错,麻烦动动小手点个⭐️Star⭐️ 如果你还有其他想法或者需求,欢迎在 issue 中交流
[📀项目仓库:](https://github.com/CassInfra/KubeDoor) https://github.com/CassInfra/KubeDoor
🎯2025 KubeDoor RoadMap
🔔KubeDoor交流群与🧧赞赏
(如二维码过期可加starsliao好友,备注kubedoor)
🚀部署说明
0. 需要已有 Prometheus监控K8S
需要有
cadvisor
和kube-state-metrics
这2个JOB,才能采集到K8S的以下指标container_cpu_usage_seconds_total
container_memory_working_set_bytes
container_spec_cpu_quota
kube_pod_container_info
kube_pod_container_resource_limits
kube_pod_container_resource_requests
1. 部署 Cert-manager
用于K8S Mutating Webhook的强制https认证
2. 部署 ClickHouse 并初始化
用于存储采集的指标数据与微服务的资源信息
如果已有ClickHouse,请逐条执行以下SQL,完成初始化表结构
3. 部署KubeDoor
4. 访问WebUI 并初始化数据
使用K8S节点IP + kubedoor-web的NodePort访问,默认账号密码都是
kubedoor
点击
配置中心
,输入需要采集的历史数据时长,点击采集并更新
,即可采集历史数据并更新高峰时段数据到管控表。点击
管控状态
的开关,显示管控已启用
,表示已开启。⛔注意事项
部署完成后,默认不会开启管控机制,你可以按上述操作通过WebUI 来开关管控能力。特殊情况下,你也可以使用
kubectl
来开关管控功能:开启管控机制后,目前只会拦截deployment的创建,更新,扩缩容操作;管控pod数,需求值,限制值。不会控制其它操作和属性。
开启管控机制后,通过任何方式对Deployment执行扩缩容或者更新操作都会受到管控。
开启管控机制后,扩缩容或者重启Deployment时,Pod数优先取
指定Pod
字段,若该字段为-1,则取当日Pod
字段。🌰管控例子
你通过Kubectl对一个Deployment执行了扩容10个Pod后,会触发拦截机制,到数据库中去查询该微服务的Pod,然后使用该值来进行实际的扩缩容。(正确的做法应该是在KubeDoor-Web来执行扩缩容操作。)
你通过某发布系统修改了Deployment的镜像版本,执行发布操作,会触发拦截机制,到数据库中去查询该微服务的Pod数,需求值,限制值,然后使用这些值值以及新的镜像来进行实际的更新操作。
🚩管控原则
你对deployment的操作不会触发deployment重启的,也没有修改Pod数的: 触发管控拦截后,只会按照你的操作来更新deployment(不会重启Deployment)
你对deployment的操作不会触发deployment重启的,并且修改Pod数的: 触发管控拦截后,Pod数会根据数据库的值以及你修改的其它信息来更新Deployment。(不会重启Deployment)
你对deployment的操作会触发deployment重启的: 触发管控拦截后,会到数据库中去查询该微服务的Pod数,需求值,限制值,然后使用这些值以及你修改的其它信息来更新Deployment。(会重启Deployment)
🥰鸣谢
感谢如下优秀的项目,没有这些项目,不可能会有KubeDoor:
后端技术栈
前端技术栈
特别鸣谢
The text was updated successfully, but these errors were encountered: