大数跨境
0
0

CloudFoundry与K8s在PaaS中的应用(续)@MoPaaS原创

CloudFoundry与K8s在PaaS中的应用(续)@MoPaaS原创 MoPaaS魔泊云
2016-03-29
0
导读:上期为大家讲述的“CloudFoundry与Kubernetes的那些技术”对于这些知识是否了解了呢?这次跟着这个话题,为大家讲述“CloudFoundry与K8s在PaaS中的应用”。


上期为大家讲述的“CloudFoundry与Kubernetes的那些技术”对于这些知识是否了解了呢?这次跟着这个话题,为大家讲述“CloudFoundry与K8s在PaaS中的应用”。
撰稿人介绍

沈阅斌   MoPaaS研发总监  
目前在Anchora负责云计算平台产品研发和管理工作。先后在多家软件公司担任项目研发、项目管理及技术培训等工作。对企业应用开发、大型网站架构、云计算、大数据等领域有相关实践经验。对CloudFoundry、OpenStack、CloudStack、Hadoop等开源云技术进行研究和使用。目前担任Anchora产品研发总监,主要负责PaaS产品的研发。
PaaS的概念
PaaS可以提供各种标准化或非标准的环境以及各种运维管理功能,用户可以在秒级按需获取各类资源和环境。所以PaaS最大的价值在于解放开发、测试、运维人员,降低了用户对应用软件的交付成本及时间。通常我们所说的PaaS,包括MoPaaS,主要提供应用部署和托管服务。平台服务涵盖的范围包括,应用开发部署运行环境(如应用开发测试管理/工具等),服务组件池和管理(数据库、消息队列、缓存等),运维管理(日志、监控、弹性伸缩等)。
为什么要采用Cloudfoundry和K8s?
CloudFoundry已经发展 5,6年,相对比较成熟,而且我们从CloudFoundry推出至今一直采用它构建我们的PaaS平台。打个不怎么恰当的比喻,如果大家了解JAVA的话,应该知道JAVA中有一个开源的框架叫spring,我们的一个J2EE应用通常基于Spring框架然后集成其他各种框架来构建。CloudFoundry在我们PaaS平台中的角色有点类似像spring在整个J2EE应用中的角色,只做自己擅长这部分,不擅长的部分通过集成其他框架来解决。所以我们把CloudFoundry作为整个PaaS平台的核心框架,CloudFoundry不能满足或者不擅长的部分通过集成其他框架来解决。
CloudFoundry在PaaS层提供的功能还是相对比较完整,提供了大部分的标准运行环境如JAVA、PHP、.NET、Ruby、Python、NodeJS、Go等,所以如果对运行环境没有个性化需求的用户,CloudFoundry可以很好的满足这些用户的需求。CloudFoundry提供的平台管理功能是比较完善的,并且有一整套完整的API可以用来对其进行扩展。
由于我们之前已经采用Docker运行一些中间件服务了,采用K8s管理容器及容器化服务,主要的原因是解决原生Docker运行中间件服务,难于调度、管理、跨网通讯、服务发现等问题,K8s提供了负载均衡以及网络解决方案,可以很方便的将中间件集群纳入K8s管理
我们有计划提供容器服务来满足非标准化的运行环境的需求,用户可以自己构建镜像运行到我们平台上,并可以充分利用PaaS级的服务。
出于以上几个原因,我们在原来CloudFoundry的基础之上,利用K8s管理PaaS平台的Docker容器。CloudFoundry主要管理整个平台并提供软件路由、认证授权、服务接入、标准化运行环境等功能,K8s主要管理容器化服务以及非标准化的运行环境,CloudFoundry通过ServiceBroker管理K8s提供的中间件服务。K8s上部署的应用也可以注册到CloudFoundry的路由器的路由表中,从而可以通过域名访问到K8s中管理的容器。
CF和K8s比较
1
软件负载均衡
    CF默认采用Haproxy作为软件负载均衡器,K8s采用Kube-proxy来实现软件负载均衡。
2
访问协议
    CF默认支持HTTP(s)协议,通过扩展TCP_Route可实现支持TCP协议。K8s支持TCP、UDP、HTTP(s)等协议
3
软路由
    CF支持软件路由,对域名和IP:Port进行请求转发,所以访问部署在CF上的应用需要通过域名才能访问;K8s只能通过IP:Port来访问。
4
认证和授权
    CF提供专门的组件UAA来进行认证授权。K8s对API调用使用CA、Token和HTTP Base方式实现用户认证,授权会依据访问策略去核查请求。
5
应用副本管理
    CF采用hm9000对应用健康状态进行监控,部署在CF上面的所有应用都通过这个独立的组件进行监控,K8s会为Pod分配一个RC进行副本管理,如果发现与预期不符时,则进行重启或重建容器。
6
应用日志管理
    CF和K8s一样对于容器日志与容器的生命周期是一致的,所以在容器被销毁之后,容器内的文件也会被丢弃,包括日志等。如果需要保留容器内应用程序生成的日志,可以通过专门的工具采集,比如ELK。
7
资源调度
    CF是通过Cloud_controller来完成资源调度,K8s是通过Scheduler来进行资源调度的。
8
服务访问
    CF中部署的应用可以通过环境变量获取服务信息,K8s可以通过DNS和环境变量获取服务信息。
9
运行环境构建
    CF可以通过Buildpack来构建运行环境,K8s通过Dockerfile构建运行环境。
10
平台管理及API
    CF和K8s都提供了友好的Rest API来管理平台功能。
11
组件通讯机制
    CloudFoundry采用Nats消息队列机制进行组件之间通讯,K8s默认采用Etcd进行通讯。
扩展PaaS功能
虽然CloudFoundry和K8s提供了类似的功能,但是我们将CF作为整个PaaS平台的框架,K8s对CF进行功能上的补充,CF提供一些标准化的运行环境,K8s主要用来提供轻量级中间件服务以及以后会提供容器化服务。
基于CF和K8s构建一个PaaS平台,我们可能还需要作如下扩展:
1
应用运行环境扩展
通过修改和增加Buildpack实现,我们可以对Buildpack进行相关定制,包括修改中间件的版本、配置信息以及buildpack代码来实现更多的功能,比如安装APM的探针。然后将Buildpack打成离线包上传到CloudFoundry。
如果需要扩展.NET运行环境,可以使用一个开源的.NET插件IronFoundry,因为.NET跟其他运行环境不一样,需要运行在 Windows操作系统上面,所以要单独安装一个Windows的Dea(IronFoundry提供),并且将.NETBuildpack添加至 CloudFoundry之后完成扩展。
2
中间件服务扩展
CloudFoundry对服务中间件集成提供一种标准的接入方式Broker,而对中间件部署、运维、监控,CloudFoundry并没有提供很好的解决方案,需要我们自己实现。一些轻量级的中间件服务,如缓存,可以采用K8s+Docker进行部署和管理,数据库服务可以采用VM方式部署,然后通过 Broker将服务注册到CloudFoundry。
https://github.com/cloudfoundry-community/spring-service-broker.git
那么,在企业丧失竞争之前,我们应该如何摆脱这个死亡漩涡,可以快速进行颠覆性创新,同时也腾出时间做一些别的事情。
如今,我们看到的一个整体趋势是,如果机构不断地在 DevOps 自动化上寻找空间,就必须打破这种恶性循环,重新开辟一个新的良性循环。
3
可视化操作界面

CloudFoundry提供了一套标准的RestAPI,包括认证授权、组织空间管理、应用服务管理等功能。我们可以通过CloudFoundry提供的SDK可以非常方便的完成对CF的调用。

https://github.com/cloudfoundry/cf-java-client.git

4
应用/服务监控
CloudFoundry对应用的监控还是做了一些工作的,包括像health_manager,会实时采集应用的监控信息。通过Dea的Varz接 口也可以采集到应用的监控信息。如果应用出现不健康的状态,CF会对其进行自动重启。对应用访问日志数据,CloudFoundry在Gorouter节 点上有进行记录,但是如果我们需要采集分析这些日志数据,那么我们需要修改Gorouter,将日志打到日志服务器上。对服务的监控,完全需要我们自己来 做,如果只是一般的监控需求,可以采用对容器或者VM监控,如果需要获取服务中间件更加详细的监控数据,可以通过集成APM来实现。
5
弹性伸缩
CloudFoundry提供了对托管的应用进行弹性伸缩,包括纵向和横向的伸缩,但是只能通过手动的方式,如果需要根据规则和阈值进行自动伸缩,需要我们进行定制开发,通过对应用采集的访问数据、监控数据进行分析,满足阈值条件则进行伸缩。
6
持续集成
CloudFoundry对开发测试这块并没有提供太多的功能,不过我们可以采用目前比较通用的方案来实现持续集成。
采用Git/SVN托管代码;采用Nexus/Artifactory作为制品仓库;采用Jenkins作为持续集成工具,通过Jenkins提供的插件,可以将代码托管、制品仓库以及PaaS平台进行集成,实现从代码提交到部署上线一整套自动化流程。
7
TCP协议的支持
CloudFoundry默认只支持Http(s)协议,如果需要部署一个TCP协议的应用,那么我们需要定制一个TCP_Router。
https://github.com/cloudfoundry-incubator/cf-tcp-router.git

以上就是本期“CloudFoundry与K8s在PaaS中的应用”。如果您有想要知晓的技术信息,请在我们微信号中留言,有可能下期我们所讲的主题就是您所关心的哦!

今天就到这里,我们下期见!


MoPaaS
MoPaaS作为企业持续创新的平台,在国内外有众多的PaaS云平台技术项目落地实例,可更有效的满足中国企业级用户对不同需求的计算资源优化调配,实现应用敏捷交付的智能化管理,包括应用软件开发管理,连续集成,部署运维,监控管理,弹性扩容等需求;MoPaaS提供企业私有云解决方案、软硬件融合一体机系统以及企业级公有云 PaaS 服务等。
MoPaaS 获得多项行业奖项和认可,2015年被全球三大市场调研公司之一的 Forrester 关于中国企业级云平台市场获得“强劲表现者 (Strong Performer)“的评估。


【声明】内容源于网络
0
0
MoPaaS魔泊云
获取并知晓最新的MoPaaS 功能,收取 MoPaaS 反馈,回答用户问题;让您抢先知晓 MoPaaS 新闻和公告,及部分PaaS应用问题
内容 393
粉丝 0
MoPaaS魔泊云 获取并知晓最新的MoPaaS 功能,收取 MoPaaS 反馈,回答用户问题;让您抢先知晓 MoPaaS 新闻和公告,及部分PaaS应用问题
总阅读134
粉丝0
内容393