Google和Nutanix的混合云布局
目前主要的公有云廠商都已經布局了混合云戰略,混合云戰略是一種是實實在在的客戶需求,是在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)獲取授權】