目前主要的公有云厂商都已经布局了混合云战略,混合云战略是一种是实实在在的客户需求,是在Gartner发布了关于双态IT之后的一个比较热的话题。混合云即:私有云+公有云的布局。私有云跑稳态的Type1的传统应用,公有云跑敏态的Type2的互联网应用。
大多数企业,并不是所有企业都需要一个混合云的布局,当然某些特定的需求下,一种云也就足够了,而且混合云的布局也并不是必然的结果。只是目前阶段大多数传统企业要面临的问题。这里不在重复描述敏态应用为何需要使用公有云。
我们先分享一下其它厂商的混合云战略是什么,现在来说谷歌的混合云布局。
AWS+VMWAre的混合云
AWS的混合云并不高调,由于它是市场的老大,它的目标是所有人都All in的上它的公有云,这个往往是不现实而艰巨的,因此混合云是一种从公有云向私有云侵蚀的做法。这里合作的最主要的私有云厂商对象是VMWare,这两个厂商最近一两年来的各种大会上都已经频繁的发布了这种合作关系。在技术实现上主要是以把VMWare的虚拟机迁移的AWS公有云里去的做法。详细讲AWS发布了一些虚拟机转换的服务和工具,方便目前大量的VMWare虚拟机和模板迁移到AWS的公有云里。具体做法见:
Azure + Azure Stack的混合云
这种方式是纯粹微软的方案,微软开发并推出了Azure Stack私有云平台是他们向私有云数据中心IaaS发展的一个工具。当然如果一个企业已经使用的是微软的虚拟化技术的话,所有hyper-v的虚拟机迁移到Azure应该是很平滑的,由于和公有云Azure里的虚拟机格式都一样的,连类似于VMWare到AWS EC2的虚拟机的格式转换都不需要做。除了Hyper-v虚拟机的平滑上Azure的公有云之外。Azure Stack可以说是类似于OpenStack, CloudStack的一种在私有云里扩张的技术,它是提高微软在私有云里的控制力和影响力的一种方式。Azure Stack和Azure公有云的互动也是基于虚拟机的,用Docker方式的混合云另说。
Red Hat的混合云
由于我曾经在红帽工作过,所以这个方案更了解。对于红帽来说,他更多的生意和关注力还是在私有云上,这是他从操作系统,到IaaS,到PaaS,到XPaaS等等技术堆栈的主要战场。由于客户的workload的分布已经到达了云端,在云端不光大家会使用Red Hat Enterprise Linux的镜像开启虚拟机,而且对所有虚拟机的统一管理也是一个实实在在的管理需求。也就是说红帽的混合云更多的是混合云管理的概念。混合云管理的产品主要是通过CloudForms,这个产品的开源社区项目是http://www.manageiq.org/,这个产品最初是管理异构的虚拟机资源池,也就是统一管理各种服务器虚拟化的群集(exsi、ovirt)和OpenStack,后来有增加了对公有云的支持AWS,Azure等,在红帽发布了Docker技术的新版本OpenShift之后,CloudForms产品也加入了对OpenShift的支持。CloudForms更多是一个云管理平台的概念,试图为用户提供一个一站式的、支持异构资源池的,统一的管理平面,来管理客户混合云里的各种工作负载。
Google和Nutanix的混合云
这两家公司在2017年中宣布了合作伙伴关系。从Google的角度看,这个合作伙伴关系有益于:1)在私有云的基础架构端找到帮手和替身。Nutanix在全球范围内积累的几千家既有客户自然的就加深了谷歌的联系。成为了GCP潜在的用户。简单说有利于它的公有云业务;2)提高已有数据中心的利用率和价值,通过Nutanix的Xi服务兑现,这个技术稍后简单描述。
以下部分内容截取于:https://cloudplatform.googleblog.com/2017/07/going-Hybrid-with-Kubernetes-on-Google-Cloud-Platform-and-Nutanix.html
1. 混合云的优势
企业用户用混合云可以达到的一下优势:
- 速递提升 Increase the speed at which they’re releasing products and features
- 扩展能力 Scale applications to meet customer demand
- 应用的移动性 Move applications to the public cloud at their own pace
- 减少运维基础架构的运维时间成本 Reduce time spent on infrastructure and increase time spent on writing code
- 降低由于资源利用率不足导致的金钱成本 Reduce cost by improving resource utilization and compute efficiency。
2. 混合云架构方式
这种混合云也是两个不同厂商的之间的合作,类似于AWS和VMWare的合作,下面简单描述技术层面的融合方式。
- 私有云 On-premise: Nutanix infrastructure 私有云使用Nutnaix的基础架构,Nutanix的虚拟机是可以有多种虚拟化类型支持的,包括KVM、EXSi、XenServer、Hyper-v。这些类型的虚拟机上跑客户稳态的应用的虚拟机。这里并不是虚拟机的迁移和转换,详见第三条。
- 公有云 Public cloud: Google Cloud Platform (GCP) 公有云使用谷歌的GCP公有云平台,在这里跑敏态的应用
- 容器混合技术 Open source: Kubernetes and Containers 混合的亮点是容器技术,而容器的亮点是K8s管理平面,也就是说既然公有云和私有云两边的虚拟机本来就有差异性,那就在往上走一层,走到容器这一层,这样整个世界都相同了,都统一到容器的标准交付格式上了,例如Docker镜像;只要Docker镜像是一样的,在任何云的Linux OS上都可以运行了,这里潜台词是,同一个业务应用的Docker容器镜像,一部分跑在Nutanix私有里,一部分跑在GCP里,而两边只要使用相同版本的Docker镜像,那么他们的业务应用的版本和配置是完全一样的。
这个混合技术只是双方合作的第一步,在这里Nutanix为已有和未来用户的私有云布局指明了方向,谷歌的GCP作为全球公有云市场的老三,他也借此增加了影响力。当然K8s也使这个组合更加的完善,而且很更好的迎合了所有追捧K8s技术的群体。
GCP+Nutanix+K8s混合云的工作方式
下面是来自谷歌网站的描述:
- Provision an on premise 4-node Kubernetes cluster using a Nutanix Calm blueprint
- Provision a Google Compute Engine 4-node Kubernetes cluster using the same Nutanix Calm Kubernetes blueprint, configured for Google Cloud
- Use Kubectl to manage both on premise and Google Cloud Kubernetes clusters
- Using Helm, we’ll deploy the same Wordpress chart on both on premise and Google Cloud Kubernetes clusters
以下用小标题详细描述一下。
1. 在Nutnaix群集里部署K8s群集
第一步当然还是先要有Nutanix的基础设施了,你可能有三个物理节点以上的Nutnaix群集运行在你的数据中心里,这个群集是你私有的IaaS层,以运行任何一种你需要的虚拟化技术。以这个IaaS的资源池为基础,使用Nutanix提供的Nutanix Calm应用自动化部署/编排工具部署4节点的K8s群集(一个Master+4个Worker),也就是说从无到有的创建4个空白的虚拟机,然后在上面自动化的一键式部署K8s软件群集。也就是在Nutnaix的管理界面里,用Nutanix Calm这个功能,一键式的安装了k8s群集,安装过程很快地在几十分钟左右完成。工作原理如下图所示。
Nutanix Calm为用户提供了一个应用商店,方便用户一键式的在IaaS资源池里启动任何业务应用,包括k8s,Nutanix Calm应用商店里的每一个软件应用都对应的一个蓝图(blueprint),举例说k8s的蓝图是一份k8s一键式部署的代码文档,里面详细说明了虚拟机的规格,软件安装部署的细节和k8s服务启动和管理的命令。Nutanix Calm的蓝图类似于AWS CloudFormation的技术,是一种IaC的基础设计即代码的方式。Nutanix应用商店如下所示。
点击了上面的k8s图标之后,很快就可以完成k8s群集的搭建了,搭建成功之后,如下图所示。
这个Nutnaix Calm的k8s和AWS CloudFormation的不同之处在于,它支持混合云管理,它要部署的4节点群集,可以选择公有云的资源池,如AWS,GCP和Azure。甚至于对于一个业务服务来说,它可以把一个子服务一部分部署在私有云,一部分部署在公有云;或者把一个业务服务里的子服务A部署在私有云,子服务B部署在GCP共有云中,并且实现统一管理。
通过这个蓝图部署的k8s群集实现了Nutanix k8s卷插件的部署和配置,也就是说这个部署在Nutanix虚拟化平台上的容器群集实现了持久化存储的配置,也就说k8s里的应用如果需要持久化存储的话,就可以用现成的里,这样也让容器享受到了Nutanix存储的福利。
2. 用Nutanix Calm Kubernetes蓝图在GCE上部署k8s群集
要实现更加一致的混合云体验,我们需要在公有云这一侧也部署相同的容器编排管理框架,也就是在GCP的GCE虚拟机上部署一套k8s群集。
简单说还是在Nutanix的Nutanix Calm界面里,再次选择Kubernetes蓝图,点击部署,这次选择的部署目标是GCP公有云平台。同样的也会在GCP里面启动四个节点的k8s群集。启动之后的效果如下
3. 用Kubectl管理两个群集
Kubectl是一个k8s的群集管理客户端程序,可以运行在任何一个和群集有网络连接的地方,也可以在群集所在的虚拟机上使用,如在群集的mater节点上使用。当然也可以配置在管理员的笔记本电脑上。k8s的联邦管理功能,我还没有测试过,应该对这个混合场景也会有帮助。
Kubectl的管理方法和细节这里做描述。
4. 用Helm在两边部署WordPress应用
Helm是一个k8s群集上的应用管理器,它测试和打包了很多应用,用于一键式的在k8s群集里部署应用。当然你也可以用自己的定义文件,用kubectl部署。Helm也不是完美的工具,只是它被用到了这个例子中。可以实现的部署效果如下。Helm这个工具的部署和安装也可以打包在Nutanix Calm 的k8s蓝图里。
用helm部署WordPress。
- # Deploy wordpress
- $ helm install wordpress-0.6.4.tgz
- NAME: quaffing-crab
- LAST DEPLOYED: Sun Jul 2 03:32:21 2017
- NAMESPACE: default
- STATUS: DEPLOYED
- RESOURCES:
- ==> v1/Secret
- NAME TYPE DATA AGE
- quaffing-crab-mariadb Opaque 2 1s
- quaffing-crab-wordpress Opaque 3 1s
- ==> v1/ConfigMap
- NAME DATA AGE
- quaffing-crab-mariadb 1 1s
- ==> v1/PersistentVolumeClaim
- NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
- quaffing-crab-wordpress Pending silver 1s
- quaffing-crab-mariadb Pending silver 1s
- ==> v1/Service
- NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- quaffing-crab-mariadb 10.21.150.254 3306/TCP 1s
- quaffing-crab-wordpress 10.21.150.73 80:32376/TCP,443:30998/TCP 1s
- ==> v1beta1/Deployment
- NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
- quaffing-crab-wordpress 1 1 1 0 1s
- quaffing-crab-mariadb
运行kubectl命令查看部署结果。
- # Take a look at the persistent volume claims
- $ kubectl get pvc
- NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
- quaffing-crab-mariadb Bound 94d90daca29eaafa7439b33cc26187536e2fcdfc20d78deddda6606db506a646-nutanix-k8-volume 8Gi RWO 1m
- quaffing-crab-wordpress Bound 764e5462d809a82165863af8423a3e0a52b546dd97211dfdec5e24b1e448b63c-nutanix-k8-volume 10Gi RWO 1m
- # Take a look at the running pods
- $ kubectl get po
- NAME READY STATUS RESTARTS AGE
- quaffing-crab-mariadb-3339155510-428wb 1/1 Running 0 3m
- quaffing-crab-wordpress-713434103-5j613 1/1 Running 0 3m
- # Take a look at the services exposed
- $ kubectl get svc
- NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- kubernetes 10.254.0.1 443/TCP 16d
- quaffing-crab-mariadb 10.21.150.254 3306/TCP 4m
- quaffing-crab-wordpress 10.21.150.73 #.#.#.# 80:32376/TCP,443:30998/TCP
以上是在Nutnaix私有云资源池里的部署结果,我们可以看到创建了两个持久化的卷存储PVC,两个容器等资源。
Nutanix的云战略
Nutanix可以使用Nutnaix Calm的蓝图能力一键式的部署k8s群集,消除手工部署k8s群集的复杂性和工作量。
Nutnaix为k8s群集提供了持久化的卷存储,这个存储能够服务于所有容器应用,为容器解决应用的数据持久化问题,当然容器应用也直接享受到了Nutnaix存储的无限容量、高性能、去重压缩等等所有福利。
与GCP的合作优化和完善了Nutanix的混合云策略,为客户布局混合云铺平了道路。
Nutanix Xi Cloud Service 是和谷歌更深的合作。它为企业提供了更加简便易用的容灾服务,DR只是这种合作的一种使用场景,还有其它使用案例。
下面解读一下上图:
- Primary Site:是私有云测的数据中心,是部署Nutnaix基础架构的私有云。
- Xi Cloud:是公有云的谷歌GCP的数据中,在GCP的数据中心里部署和配置了一键开启的Nutnaix基础架构(硬件节点,并且内部运行的AHV虚拟机,也是用Prisum管理),这一部分基础设施是托管在GCP数据中心里的Nutanix基础架构平台;而不是GCP已有的基础架构硬件系统。
- Prism:两边的云化资源池都是用的是相同的管理控制平面,这就是Nutanix提出的企业云操作系统(Enterprise Cloud OS)的架构。
- Xi DR:的功能是基于以上三点的,它可以把私有云和公有云里的虚拟机双向的备份和恢复,实现了容灾和备份的功能。
如果一个企业已经部署了若干节点的Nutanix平台,已经运行了一系列业务虚拟机;这时候为了满足业务持续性管理的需求,就需要有一个容灾的站点。登录Nutianix的Xi服务,可以在谷歌的GCP云平台的数据中心里,或者Nutanix建立的Xi数据中心里选择一键式开启一个DR群集。也就是说这个企业不需要再从DR机房的选址开始,完全不需要做传统方式的DR站点构建了。这个企业可以在几分钟里内实现一个目标的DR站点,然后就可以配置私有云和DR站点的DR策略了,在几分钟之后,他们的业务应用就在DR策略的保护之下了。
【本文为51CTO专栏作者“刘征”的原创稿件,转载请通过作者微信公众号“DevOps教练”(MyDevOps)获取授权】