您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
基于docker+kubernetes的一站式运维管理实践
 
  1297  次浏览      13
 2018-7-24
 
编辑推荐:
本文来自于csdn,讲述了搜狐自动化运维平台DomeOS,实现用户私有集群的容器化管理和资源智能分配。

项目简介

2015年下半年,搜狐北京研发中心基于docker和kubernetes开发了一套企业级的一站式运维管理系统——DomeOS。该系统是一个持续交付和自动运维平台,解决用户从代码自动编译打包,到线上运行维护的全套需求,采用私有云模式,实现了用户私有集群的容器化管理和资源智能分配。

整体架构:

DomeOS server是整个系统的控制模块,前端和所有逻辑控制均在这部分实现。

Mysql用来存储项目、部署、用户、监控等数据信息

Server可以关联到代码仓库,目前支持gitlab和svn。

Registry是docker提供的开源私有仓库,我们对它进行了改造,可以对接到搜狐云台的存储系统,保证了镜像的安全性和可靠性。

资源分配、任务调度部分交给kubernetes来完成。

监控部分融合了open-falcon和cadvisor,实现了主机和容器多个维度信息的收集展示。

另外,为了方便研发及运维同学在部署过程中快速定位问题,加入了webssh模块,能够通过网页直接进入到容器内部查看信息。domeos支持ldap登录,方便企业用户使用。

功能模块:

DomeOS提供了项目管理、持续集成、部署管理、镜像管理、集群管理、应用商店、用户和组管理以及多层级监控服务。以下是功能模块图:

其中项目管理、集群管理和部署是比较重要的功能。

项目管理中包含了持续集成,设计方案如下:

用户在代码仓库的操作,通过webhook将操作信息发送给DomeOS server,server根据项目关联配置信息确认是否满足构建任务的出发条件,如果满足,Domeos server下发构建任务给kubernetes master,master挑选符合条件的slave启动构建镜像,该镜像从代码仓库中下载代码,根据对应的dockerfile执行构建,构建生成的镜像被push到代码仓库中,然后反馈构建日志及结果给domeos server,server在仓库中确认过镜像信息后,将构建结果写入到数据库中。

集群管理部分,我们将一套kubernetes部署作为一套集群,添加集群是配置kubernetes master信息的过程,用户可以在DomeOS中添加多套集群。

当master信息配置完成后,我们提供了添加node的脚本。对于一套集群,网络部分采用flannel进行管理,每个node上启动agent上报监控信息并用于webssh登录。用户可以通过为主机添加namespace和label进行资源和环境的隔离。

部署管理部分

部署启动在一个集群上,采用kubernetes pod的概念,每个部署都从一个或多个镜像创建,可以对每个镜像配置cpu和内存限制,可以在pod中配置一个或多个日志收集模块,该部分用flume实现,日志收集到kafka中。网络部分目前支持overlay和host两种模式,overlay模式的负载均衡用kubernetes的service实现,host模式的负载均衡通过confd+nginx来实现。同一套集群的部署之间可以通过内网域名互相访问,这部分通过skyDNS和kube2sky来实现。

每套部署可以建立多个版本,升级回滚采用不同版本之间的切换完成。扩容缩容通过kubernetes的replication controller实现。

下面是DomeOS的介绍网站 http://domeos.org/ ,我们对项目代码进行了开源 https://github.com/domeos ,欢迎有兴趣的小伙伴试用,提出宝贵的意见和建议。

Q&A

Q1:“可以在pod中配置一个或多个日志收集模块,该部分用flume实现” 这块能具体说下吗?

A:我们把flume做成了一个镜像,利用kubernetes的empty dir来收集其他容器产生的日志

Q2:你们webssh是自己开发的还是参考了开源项目?感觉debug的时候会很有用

A:我们参考了其他开源项目,自己做了调整

Q3:我想问下 容器内监控是怎么实现的?每个容器安装open-falcon的agent吗

A:每个node上会启动一个agent,通过agent收集主机和容器的信息,agent集成了open-falcon的agent和cadvisor

Q4:自动化构建过程中,对应用的测试是怎么实现的?

A:单元测试可以在编译的时候完成,功能测试需要启动部署

Q5:你好,请问你们的网络支持隔离吗?

A:目前不支持隔离

Q6:你好,我想知道你们的设备是哪个厂商的?谢谢

A:我们用的是戴尔的服务器

Q7:感谢开源,试用过程中遇到的问题和反馈意见提交到哪?

A:可以直接在github上提issue,或者直接跟我联系

Q8:你们的部署环境是同时使用了overlay模式和host模式吗,对于预防潜在的冲突你们有什么好的建议?

A:我们主要对端口冲突做了严格限制,host模式下提供了自动寻找20000~21000段可用端口的插件,overlay模式会根据数据库中配置检测冲突

Q9:使用kubernetes编排容器后,你们怎么做服务发现的?如何解决容器间互相调用问题,及容器外调容器内服务问题?

A:我们用skyDNS做服务发现,容器间相互调用可以用内部域名,kubernetes集群内的主机通过修改dns服务器配置也可以通过内部域名访问容器

Q10:项目有什么瓶颈吗?

A:kubernetes的部署比较复杂,我们做的是私有云下的管理,不同系统下部署会有各种各样的问题

Q11:刚刚提到webssh在agent里封装了docker exec,当在master执行某容器的命令时,具体是如何控制node节点执行docker exec的,agent封装是自己开发的吗,还是借用一些第三方工具,kubernetes好像也有kubectl exec?

A:webssh有server端和agent端,agent在每个node节点上,server只要一个就够了。kubectl也可以exec,不过采用的是kubernetes自定义的连接协议,性能也不如我们目前采用的方案

   
1297 次浏览       13
相关文章

云计算的架构
对云计算服务模型
云计算核心技术剖析
了解云计算的漏洞
相关文档

云计算简介
云计算简介与云安全
下一代网络计算--云计算
软浅析云计算
相关课程

云计算原理与应用
云计算应用与开发
CMMI体系与实践
基于CMMI标准的软件质量保证