资讯专栏INFORMATION COLUMN

基于Python+Django的Kubernetes集群管理平台

animabear / 870人阅读

摘要:浅述集群日常管理维护中的一些痛点较为庞大的集群规模及容器数量维护管理。同时为了便于分类管理,避免端口冲突和资源合理利用。测试环境维护管理问题。测试版是基于与的运维管理系统。

原文出自【听云技术博客】:http://blog.tingyun.com/web/a...
时至今日,接触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...

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接口,让服务部署与更新,更简单透明化。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38229.html

相关文章

  • Kubernetes和OpenStack多云端网络

    摘要:上周,在举行的上,发布,整合和。多亏存储应用程序会话到数据库通常来说是下载安装或者是,我们不需要特定的负载均衡器,运行完全没有问题。用负载均衡器描述的展示了浮动和私有集群。特别感谢来自的的支持和在测试过程中作出的贡献。 上周,在Austin举行的OpenStack Summit上,CoreOS发布Stackanetes,整合Kubernetes和OpenStack。 一个月前,Core...

    Hwg 评论0 收藏0
  • Docker相关项目

    摘要:相关基于项目和项目,并遵循应用的十二因素风格。相关在设计上,项目尽量保持驱动和模块化,以便模块支持不同的实现方案。相关不仅可以管理众多虚拟机,其计算服务还支持对的驱动,管理引擎的子项目还可用于通过模板管理容器。现已整合公司所支持的项目。 整理自《Docker技术入门与实践》 PaaS(Platform as a Service) PaaS 是希望提供一个统一的可供所有软件直接运行而无需...

    littlelightss 评论0 收藏0
  • MongoDB 资源、库、工具、应用程序精选列表中文版

    摘要:推荐阅读资源库工具应用程序精选列表中文版有哪些鲜为人知,但是很有意思的网站一份攻城狮笔记每天搜集上优秀的项目一些有趣的民间故事超好用的谷歌浏览器油猴插件合集目录资源文档文章图书会谈教程更多库工具管理数据部署桌面发展监控应用资源文档介绍文档教 推荐阅读 MongoDB 资源、库、工具、应用程序精选列表中文版 有哪些鲜为人知,但是很有意思的网站? 一份攻城狮笔记 每天搜集 Github ...

    e10101 评论0 收藏0
  • Google发布Anthos:宣告多集群多云Kubernetes时代已来

    摘要:今天,大会召开,在这场规模三万人的盛会上,宣布推出作为多云服务新方案,提供跨云目前仅支持和管理集群。是业界第一个多集群多云管理平台。正如发布而极大地帮助普及了技术一样,我们也相信将促进将多集群多云管理带入更主流的阶段。 今天, Google Cloud NEXT 2019大会召开,在这场规模三万人的盛会上,G...

    mindwind 评论0 收藏0
  • UCloud 基于Kubernetes Operator服务化实践

    摘要:宋体是面向内部基于打造的容器服务平台,旨在提升内部研发效率,帮助改善规范研发流程。宋体作为容器编排框架,可以减轻配置部署管理和监控大规模容器应用的负担。宋体核心原理宋体解释不得不提中两个最具价值的理念声明式和控制器模式。KUN(Keep UCloud Nimble)是面向 UCloud 内部、基于 Kubernetes 打造的容器服务平台,旨在提升内部研发效率,帮助改善、规范研发流程。在 K...

    zorpan 评论0 收藏0

发表评论

0条评论

animabear

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<