原文出自【听云技术博客】:http://blog.tingyun.com/web/article/detail/1345
时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署、迭代,还是从资源调度管理等方面都有其难以言喻的优势,但是随着业务的不断增长,以及服务的多元化,容器的体量与管理的难度也随之增长。
浅述Kubernetes集群日常管理维护中的一些痛点:
1.较为庞大的集群规模及容器数量维护管理。
我们公司的业务场景属于典型的多业务线并行。同时为了便于分类管理,避免端口冲突和资源合理利用。我们也采取了一些策略,如:
标签 label:通过标签,一方面可以标识哪个产品线的哪个应用坐落于哪些node之上,也许有人会想为什么要这样做,假设你有一个数据落盘的应用而该应用总是每次随着启动变来变去就不好玩了。一方面通过标签可以均衡设备负载,比如将比较耗cpu和比较耗内存的搭配在一起,不但资源充分利用而且还有效的防止同类型(比如高耗cpu)偶然间跑一个node上导致资源争抢及端口冲突。
那么问题来了,如何让一个运维人员面对茫茫多的标签并对其维护管理(kubectl get node –show-labels ?),又如何让一个运维人员,故障发生时,面对茫茫多的nodes/pods,即时快速地定位两者的对应关系,从而解决问题。
2. 测试环境维护管理问题。
一般的应用部署与上线流程较为繁琐
这种模式下,让每个研发人员在每次调试beta环境时,无论是更改配置还是代码更新都需要沟通运维人员予以操作,让每个运维人员都要用更多的精力额外的维护一套甚至更多系统环境,每天游走于beta,线上之间。不免有点让人头痛。
更希望有这样的一种模式
这样大大减少了部门之间的沟通成本。但是问题来了,如何让一个研发人员能够独立的开发维护属于自己的beta环境,且不需要过多的关心除代码调试外的一些东西呢?(如怎样去写一个基于kubernetes服务的yaml或json)
借此,于是萌生出了一个尝试写一个管理服务的想法,目的在于让运维人员更加方便的管理自己的kubernetes线下线上集群,让研发人员也能够独立自主的编写与维护属于自己的测试环境应用,初期阶段,仅供参考,若有不足之处,欢迎大家随时予以宝贵意见。
Python Admin(测试版)是基于Python+Django与kubernetes Api的运维管理系统。前端采用开源SB(start bootstrap) Admin-2模板(清新,简约)。
1.版本信息:
Python2.7.5+Django1.8.13+Kubernetes1.2.4+docker1.10.3
2.Kubernetes Api相关:
创建与更新label
curl -X PATCH -i -H \
"Content-Type:application/merge-patch+json" \
http://k8smaster:8080/api/v1/nodes/{ nodename } \
-d '{"metadata":{"labels":{"标签":"应用"}}}'
创建configmap
curl -X POST -i -H \
"Content-Type:application/json" \
http://k8smaster:8080/api/v1/namespaces/default/configmaps/ \
-d "$(cat configmaptest.json)"
更新configmap
curl -X PATCH -i -H \
"Content-Type:application/merge-patch+json" \
http://k8smaster:8080/api/v1/namespaces/default/configmaps/{ configmapname } \
-d "$(cat configmapupdate.json)"
删除configmap
curl -X DELETE \
http://k8smaster:8080/api/v1/namespaces/default/configmaps/{ configmapname }
Configmap的基本Json模板
创建daemonset
curl -X POST -i –H \
"Content-Type:application/json" \
http://k8smaster:8080 /apis/extensions/v1beta1/namespaces/default/daemonsets \
-d "$(cat daemonset.json)"
更新daemonset
curl -X PATCH -i -H \
"Content-Type:application/merge-patch+json" \
http://k8smaster:8080/apis/extensions/v1beta1/namespaces/default/daemonsets/{daemonsetname} -d "$(cat daemonsetupdate.json)"
删除daemonset
curl -X DELETE \
http://k8smaster:8080/apis/extensions/v1beta1/namespaces/default/daemonsets/{daemonsetname}
daemonset 基本json模板
以上列举为部分api操作,其他相关操作请参考kubernetes官方文档
http://kubernetes.io/docs/api-reference/v1/operations/
3.平台操作界面概览
1..Kubernets集群资源管理界面(清晰展示集群资源信息及所属项目组,便于分类管理)
2.项目应用配置管理界面(配置文件单独管理,采用数据库存储配置文件内容。创建和更新configmap时重新reload,并实时同步配置文件使用状态。)
3.服务部署与管理界面(应用模板创建,同时增加系统日志功能,服务启动后记录每个阶段的执行情况,方便错误追踪,具有一定的操作审计功能)
4.Kubernetes容器资源管理界面(每个集群所有node,以及每个node所有pods信息,并采用websocket方式exec进入容器内部避免权限控制不当问题)
如果不确认服务是否能正常启动,Container建立完毕后,可以通过debug模式(command: ["sleep", "足够长时间"])进去容器内部执行./run.sh调节服务,待没问题后,再已正常模式启动。
未来优化的一些小想法:
1.kubernets集群一键部署,节点资源即时加入。
2.监控方面,在系统级别监控的基础上,增加容器服务级别监控及相应告警策略。
3.整合融入jenkins接口,让服务部署与更新,更简单透明化。
相关推荐
《基于Python+Django开发的视频管理系统》 Python与Django框架的结合,为开发者提供了一个高效、便捷的Web应用开发平台。在这个毕业设计或课程设计项目中,我们看到一个视频点播系统的实现,它利用Python的强大力量...
基于 python 3.7.9 + django 2.2.16 + channels 2.4.0 + celery 4.4.7 + ansible 2.9.14 + AdminLTE-3.0.0 实现的运维 devops 管理系统。具体见 screenshots 文件夹中的效果预览图。 本人为运维工程师,非专业开发,...
Django Kubernetes管理器0.4.7 Django Kubernetes Manager是一个开源项目,旨在通过Django Rest Framework的简单性包装Kubernetes管理的复杂性。介绍我们的工程团队开发了多个数据处理应用程序,发现芹菜还不足以...
在这个背景下,"Python-Mxonline3"项目应运而生,它是一个基于Python3.x和Django2.0.1的Kubernetes(k8s)运维管理平台网站。 【Kubernetes(k8s)运维管理】 Kubernetes,简称k8s,是Google开源的一款容器编排...
可能涉及到的技术有Apache Kafka进行数据流处理,Docker和Kubernetes进行容器化和集群管理。 在实际项目中,我们还需要考虑如何处理稀疏数据、冷启动问题(新用户或新电影的推荐)、动态更新推荐列表以及如何结合...
本主题“基于Python微服务器集群性能优化技术”旨在探讨如何通过一系列策略和技术提升Python微服务在集群环境下的运行效率。以下是相关知识点的详细说明: 1. **微服务架构**:微服务是一种将大型应用程序分解为一...
【标题】"django云平台,体温数据收集,门禁管理,历史查看"揭示了这个项目是基于Django框架构建的一个云应用,它...同时,对于云平台的部署,还需要了解如Docker容器化、Kubernetes集群管理或者服务器配置等相关知识。
Python资产管理系统是一款基于Python编程语言开发的软件工具,主要用于企业或个人对硬件设备、软件资源等进行有效的管理和跟踪。在Python中,这类系统通常利用其强大的数据处理能力和丰富的库资源来实现高效的数据...
Python的工具如gunicorn、uWSGI可以用来部署应用,而Docker和Kubernetes则有助于实现容器化和集群管理。 这个基于Python的商城项目源码,为学习者提供了一个实践和研究Web开发的绝佳平台,不仅可以深入理解Python ...
该项目利用了基于springboot + vue + mysql的开发...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
运维方面,监控工具如Prometheus和Grafana可以帮助追踪系统状态,而Docker和Kubernetes则可以实现容器化部署和集群管理。 【版本控制与协作】 Git作为版本控制系统,是项目开发中的重要工具,它帮助团队成员协同...
基于Kubernetes的机器学习任务管理平台,该平台通过Breakfast实现了机器学习任务生命周期的管理。 特征 查看集群状态,任务。 管理机器学习任务。 使用名称空间进行任务隔离。 概述 仪表盘 任务管理 添加任务 ...
总的来说,"vckube-29.tar.gz"很可能是一个专注于Kubernetes和容器管理的Python库,它可能包含了一系列方便开发者与Kubernetes集群交互的工具和API。这个库的存在,是为了帮助开发者更高效地构建、部署和维护容器化...
它演示了如何使用 (本地)或在Kubernetes集群上全部运行 ,Postgres和Redis。 如果您是按照本教程的第1部分或第2部分进行操作,请在Minikube更改之前,查看part1 git分支(可见),这是一个较旧的分支。 由于该...
考虑到高可用性和负载均衡,可能还会利用Docker容器化技术及Kubernetes集群管理。 总的来说,"Python178互联网+志愿服务求职招聘系统"不仅展示了Python在Web开发中的应用,还涵盖了数据库管理、用户认证、算法设计...
总结来说,"kubernetes_wsgi"是一个面向Kubernetes环境的Python WSGI实现,它简化了在Kubernetes集群中部署和管理Python Web应用的过程。通过这个库,开发者可以充分利用Kubernetes的高级特性,实现高效且可靠的Web...
【标题】"kubernetes-django-demo" 是一个项目示例,它展示了如何在 Kubernetes 集群中部署基于 Django 的应用程序。Django 是一个用 Python 编写的高级 Web 框架,它鼓励快速开发和实用主义设计。Kubernetes(简称 ...
带有Kubernetes的可扩展且具有弹性的Django 该存储库包含代码和注释,以获取在Kubernetes集群上运行的示例Django应用程序。 它旨在与一起使用,该提供了更多背景信息并解释了后续步骤背后的一些理论。初步步骤获取此...
- **后端**:使用Python及其生态系统(如Django或Flask)开发,支持微服务架构。 - **作业调度系统**:如Slurm或Torque等开源解决方案,用于管理复杂的计算任务。 ##### 5.2 AI业务模块 - **数据集管理**:支持数据...
- **部署环境**:Docker + Kubernetes,实现应用容器化部署和集群管理。 #### 总结 基于Web的实验室预约管理系统通过对Web技术的应用,极大地提升了实验室资源的管理效率和服务水平。通过合理的设计和实现,不仅...