把這些技術(OpenStack, Neutron, Deis, flynn, coatine, Solum, Kolla, Kubernets, Rudder, CoreOS, OVs等)比較來比較去,最后還是感覺OpenStack + OpenStack Solum是離我心目中的Cloud長得最像的項目。路漫漫其修遠兮啊。
心目中的Cloud:
1, 提供IaaS功能,支持同時提供Container, VM, BareMetal, OSv
2, 提供PaaS功能,既支持對單個應用全生命周期的管理,也支持對Bundle全生命周期的管理。
3, 良好的網絡支持, 目前開源NaaS里Neutron應該算是對網絡支持最好的。
4, 一個好的框架,如很容易的擴展對應用負載感知的調度實現,如其他監控等必要的組件。所以OpenStack在這方面也還是蠻有優勢的,不管它有些組件成不成熟,起碼它有,起碼提供了一個好的框架讓你去擴展。
OpenStack相比其他云的優勢:
1, 框架好,基本架子都搭好了。像ceilometer, keystone等很多完整云必備的因素先不管它實現的好不好,起碼它有,不必重新發明輪子,如果使用別的如什么Kubernets等,要開發的feature實在太多了。
2, 我個人認為Neutron是開源產品里對網絡做得是最好的,尤其是DVR,L2pop, VRRP三個特性進社區之后Neutron的可用性是非常好的,其他的工程像Kubernets等在網絡方面和Neutron根本就不是一個數量級的。
3, 使用OpenStack除了框架和網絡的優點,還具備同時支持IaaS, PaaS的潛力, 更具備同時支持容器,虛機,裸機,OSv的潛力(前三項已實現,后一項可以擴展)。
不使用OpenStack的Only PaaS方案:
1, Deis是一個PaaS, 可以從git庫中獲取版本化的單個應用程序并做成docker鏡像部署在CoreOS中的容器里。
2, 可以考慮Deis做二次開發,以支持部署Bundle應用集合。問題來了,如何不使用OpenStack,DBaaS, MQaaS如何提供? HAproxy+Tomcat Cluster + DB Cluster究竟如何Bundle ? 需不需要研究使用VxLAN+P2V工具將局域網整體系統移入云環境之中。
3, 如果覺得在CoreOS上使用容器不安全,可以考慮在CoreOS使用OSv操作系統,性能和安全性同時兼顧。
4, 如果說Docker(使用容器)類似于KVM(運行虛機)之上有了更好的應用分發機制,但它畢竟沒有調度之類的工具,所以需要引入類似于OpenStack的Google kubernets容器集群管理工具。
5, 但Kubernets的網絡很爛,可以結合使用類似于Neutron DVR特性的Rudder工具來提供對網絡的支持.
6, 使用SoftLayer的API提供主機,并加入Kubernets集群,并采用CoreOS鏡像部署之。
使用OpenStack同時提供IaaS+PaaS能力的方案:
1, 使用OpenStack可以通過擴展提供對容器、虛機、裸機、OSv四種的支持
2, OpenStack目前的Docker-Driver + Neutron可以提供容器,但不具備Docker中的應用分發機制
3, OpenStack Solum項目在做PaaS功能,可將git庫,eclipse工具,SDK, CLI四個來源的應用通過Heat自動部署到OpenStack管理的容器中,并使用HEAT提供的LB功能為應用提供LB功能,仍然使用Neutron 提供對網絡的支持(這是目前最好的方式,比Kuddler, Kubernets這些提供的網絡都強的多),可以使用裸機Ironic服務部署CoreOS系統。見:https://wiki.openstack.org/wiki/Solum
4, OpenStack Kolla項目使用Kubernetes+Docker來管理OpenStack, 但這個工程還沒有影了, https://wiki.openstack.org/wiki/Meetings/Kolla
5, HEAT只能部署一組部署分布式web應用的虛機,但不能直接部署應用,solum在其上繼續提供部署應用的能力,但solum肯定不成熟,還有一個在 HEAT之上部署應用的開源程序,那就是redhat的openshift, 見:http://www.ibm.com/developerworks/cn/cloud/library/cl-open- architecture/
6, juju確實是一個好工具,底層可以由容器,虛機,或公有云提供IaaS層,也提供了在IaaS層上直接部署應用的能力,這點等價于HEAT, juju的思想看來非常好,唯一可惜的是限定在ubuntu平臺上。
目前基于docker的PaaS(PaaS的本質是構建,發布,運行應用)有:
1, Deis, 基于CoreOS, 支持直接從git服務獲取應用程序并做成docker的鏡像部署在容器中。可支持不同的編程語言, 見:http://dockerone.com/article/124?utm_source=weibolife
2, flynn, 基于CoreOS
3, cocaine, 俄羅斯yadex的基于docker的paas,見:https://github.com/cocaine/cocaine-docs/blob/v0.11/doc/contents.md
CoreOS是什么?
1,精簡化的Linux, 沒有GUI。但不像OSv根本不使用Linux內核不區分用戶態內核態。可以考慮在CoreOS同時運行Container和OSv。
2, 提供了etcd作為key-value,顯然,它也能提供類似于zookeeper的分布式鎖的能力
3, 提供fleet進行容器的生命周期的管理, 見:https://coreos.com/docs/launching-containers/launching/launching-containers-fleet/
4, 提供容器的自動遷移和LB功能
5, 提供了兩個根文件系統,專門有一個根文件系統用于更新
6, 沒有提供python解釋器,但可以通過systemd-nspawn部署一個toolbox的fedora容器來使用
7, 通過ssh key認證, 沒有LDAP之類的認證
8, 沒有像Ubuntu Core一樣提供了SELinux/Apparmor之類限制進程對資源的訪問控制提供更強的容器安全性
9, CoreOS有Rudder來提供對docker的網絡支持,Rudder類似于neutron中的dvr特性,它假設一個host的subnet是唯一的從而不會出現多個host具有相同網關的情況從而簡化了問題。