中文字幕无码久久精品,13—14同岁无码A片,99热门精品一区二区三区无码,菠萝菠萝蜜在线观看视频高清1

您當(dāng)前的位置是:  首頁(yè) > 新聞 > 文章精選 >
 首頁(yè) > 新聞 > 文章精選 >

寫給 VMware 用戶看的 Kubernetes 掃盲貼

2018-02-07 09:40:54   作者:   來(lái)源:CTI論壇   評(píng)論:0  點(diǎn)擊:


  容器技術(shù)是最近幾年非常熱門的技術(shù),它似乎就是為云端的應(yīng)用量身定制的,所以它也被貼上了云原生應(yīng)用 (Cloud Native Application) 技術(shù)的標(biāo)簽。目前最為流行的容器管理調(diào)度平臺(tái)是 Kubernetes (縮寫為 K8s),是 Google 為支持大批量容器而開(kāi)發(fā)的企業(yè)級(jí)運(yùn)行平臺(tái),可以支持負(fù)載均衡、高可靠等生產(chǎn)級(jí)功能。VMware 在 VMworld 2017 上也宣布了跟 Pivotal、Google 合作開(kāi)發(fā)的 VMware Pivotal Container Service,這是一個(gè)商用的 K8s 平臺(tái),簡(jiǎn)稱 PKS (中間的 K 代表 Kubernetes)。
  我們專門為 VMware 用戶寫了這篇文章,利用你所熟悉的 vSphere 平臺(tái)來(lái)跟 K8s 作一個(gè)類比,從而幫助你快速了解 K8s。
  Kubernetes 和 vSphere 的總體架構(gòu)對(duì)比
  VSPHERE 平臺(tái)和 KUBERNETES 的總體對(duì)比
  那么到底什么是 Kubernetes 呢? 簡(jiǎn)單來(lái)說(shuō),K8s 和容器的關(guān)系就相當(dāng)于vSphere和虛機(jī)的關(guān)系。在 VMware 發(fā)展早期的時(shí)候,那時(shí)候只有 VMware Workstation,后來(lái)出現(xiàn)了基于vCenter 和ESXi 的VI/vSphere 體系架構(gòu),從而使虛擬化步入了數(shù)據(jù)中心。同樣的,容器一開(kāi)始的時(shí)候只有一個(gè)簡(jiǎn)單的容器引擎 Docker,K8s 的出現(xiàn)為容器提供了一個(gè)生產(chǎn)級(jí)的運(yùn)行環(huán)境。把 vSphere 和 K8s 平臺(tái)肩并肩放在一起比較的話,你會(huì)發(fā)現(xiàn)它們的概念有很多類似之處,這可以幫助我們很快地理解 K8s 技術(shù)的各種細(xì)節(jié)。
  虛擬化技術(shù)和容器技術(shù)演進(jìn)的對(duì)比
  系統(tǒng)架構(gòu)
  就像 vSphere 平臺(tái)上的 vCenter 和 ESXi 主機(jī), K8s 平臺(tái)上也有對(duì)應(yīng)的概念:Master 和節(jié)點(diǎn) (node), Master 起到的作用就跟 vCenter 一樣,對(duì)整個(gè) K8s 集群進(jìn)行管理,它也是工作負(fù)載管理 API 的訪問(wèn)入口。跟 ESXi 主機(jī)對(duì)應(yīng)的就是K8s節(jié)點(diǎn),節(jié)點(diǎn)是 K8s 集群中的計(jì)算資源,容器就是運(yùn)行在節(jié)點(diǎn)上,節(jié)點(diǎn)可以是虛機(jī)或者物理服務(wù)器。K8s 也有一個(gè)類似于 vCenter DB 的數(shù)據(jù)庫(kù) “etcd”,它以的“鍵-值”方式存儲(chǔ)了整個(gè)集群的配置和狀態(tài)。
  跟 vSphere 不同的是,K8s Master上也能運(yùn)行容器負(fù)載,當(dāng)然 vCenter Server 上是不運(yùn)行虛機(jī)的。雖然 K8s Master 也是一種計(jì)算資源,但是一般只在上面運(yùn)行系統(tǒng)管理相關(guān)的容器應(yīng)用,普通的應(yīng)用負(fù)載不應(yīng)該放在 Master 上。
  vSphere 有GUI 管理界面 Web Client 和命令行管理接口 vCLI 和 Power CLI,K8s 也提供了GUI 界面或命令行來(lái)管理 K8s 集群。下面截屏是使用命令 “kubectl.exe” 來(lái)管理K8s 集群的例子,我們可以看到這個(gè)集群有一個(gè) Master (vkubemaster007) 和4個(gè)節(jié)點(diǎn) (vkubemode017~18),K8s 的版本是v1.6.5,節(jié)點(diǎn)上的操作系統(tǒng)是Ubuntu 16.04。
  截屏:K8s 的命令行管理界面
  工作負(fù)載
  vSphere 中的工作負(fù)載調(diào)度單位是虛機(jī), K8s 中的調(diào)度單位是 Pod;一臺(tái) ESXi 主機(jī)上可以運(yùn)行多個(gè)虛機(jī),一個(gè) K8s 節(jié)點(diǎn)上也可以運(yùn)行多個(gè) Pod,每個(gè) Pod 都有一個(gè)獨(dú)立的 IP 地址來(lái)跟其他的 Pod 相通訊。在 vSphere 環(huán)境中,應(yīng)用運(yùn)行在虛機(jī)的操作系統(tǒng)中,K8s 平臺(tái)上應(yīng)用運(yùn)行在容器里;一個(gè)虛機(jī)中只能運(yùn)行一個(gè)操作系統(tǒng)實(shí)例,而一個(gè) Pod 中可以運(yùn)行多個(gè)容器實(shí)例。K8s 會(huì)考慮到 Pod 的關(guān)聯(lián)性而把 Pod 中的容器實(shí)例運(yùn)行在同一個(gè)節(jié)點(diǎn)上,從而讓他們共享同一個(gè)運(yùn)行環(huán)境;一般是把一個(gè)應(yīng)用和它相關(guān)的輔助模塊設(shè)計(jì)在同一個(gè) Pod 中,然后作為一個(gè)整體來(lái)進(jìn)行調(diào)度運(yùn)行。
  系統(tǒng)管理
  我們使用 Web Client 來(lái)管理 vSphere 集群,K8s 也有一個(gè)圖形化的管理界面Dashboard,同 Web Client 一樣,這也是一個(gè)基于 Web 的應(yīng)用。Dashboard 的功能也變得越來(lái)越強(qiáng)大,它可以實(shí)現(xiàn)大部分的 K8s 集群管理功能,而不用輸入很長(zhǎng)的 kubectl 命令。
  系統(tǒng)配置
  K8s 可以通過(guò)一個(gè)YAML (Yet Another Markup Language) 文件來(lái)定義和描述 K8s 集群的配置和狀態(tài),然后就可以基于該文件創(chuàng)建整個(gè) K8s 集群,K8s 會(huì)盡力地保持集群運(yùn)行在指定的狀態(tài)。例如,如果你指定了某一個(gè) Pod 要有4個(gè)副本,K8s 就會(huì)監(jiān)控所有這些 Pod 的運(yùn)行,如果有任何一個(gè) Pod 工作異常的話,它就會(huì)設(shè)法修復(fù)這個(gè)狀態(tài),實(shí)在不行的話就另啟一個(gè) Pod 副本。
  要理解 YAML 配置文件的話,你可以把它對(duì)應(yīng)為虛機(jī)的 .VMX 文件,或是 Virtual Appliance 的OVF 文件。當(dāng)然,YAML 配置文件在 K8s 中不僅用于定義集群,也用于定義其他的組件,如: 副本集合、服務(wù)、部署等。
  虛擬集群
  vSphere 中為了管理資源的分配專門有一個(gè)“資源池 (Resource Pool)”的概念,就像是在物理集群中劃分出了一些小的虛擬集群,vSphere 利用資源池來(lái)控制資源的分配。K8s 也有類似的概念叫“namespaces”,namespace 的主要用途是創(chuàng)建多租戶環(huán)境,也可以在上面指定資源配額 (Resource Quota) 。
  資源管理
  vSphere 需要指定每一個(gè) Resource Pool 的資源分配限額,K8s 可以在 namespace 上設(shè)置資源配額 (Resource Quotas) 來(lái)控制資源分配,這是在 YAML 配置文件中定義的。
  工作負(fù)載標(biāo)記
  這在 vSphere 和 K8s 中幾乎是完全一致的,vSphere 使用 tag 標(biāo)簽來(lái)標(biāo)識(shí)虛機(jī),而 K8s 使用標(biāo)簽 (label) 來(lái)標(biāo)識(shí)容器。所不同的是,K8s 中標(biāo)簽是必須的,而不是可選的。
  計(jì)算冗余
  vSphere 中有 Fault Tolerance 技術(shù)來(lái)提供計(jì)算資源的冗余,受保護(hù)的虛機(jī)運(yùn)行在一臺(tái)服務(wù)器上,另一臺(tái)服務(wù)器上有一個(gè)從被保護(hù)虛機(jī)復(fù)制而來(lái)的影子 (Shadow),F(xiàn)T 技術(shù)通過(guò) Lockstep 來(lái)同步主虛機(jī)和影子虛機(jī)之間的數(shù)據(jù)和狀態(tài)。正常情況下影子虛機(jī)是不工作的,當(dāng)主服務(wù)器宕機(jī)時(shí),影子虛機(jī)立刻被激活成主虛機(jī),并繼續(xù)主虛機(jī)工作;這時(shí) vSphere 會(huì)設(shè)法在集群中找到另一臺(tái)合適的服務(wù)器,在上面從新的主虛機(jī)復(fù)制出新的影子虛機(jī),以繼續(xù)對(duì)主虛機(jī)進(jìn)行保護(hù)。
  K8s 中也有相應(yīng)的資源冗余機(jī)制,ReplicaSets 用于指定一個(gè) Pod 需要運(yùn)行的實(shí)例數(shù)量,K8s 會(huì)自動(dòng)維持實(shí)例的數(shù)量,任何一個(gè)實(shí)例由于故障原因宕掉了,K8s 馬上會(huì)自動(dòng)啟動(dòng)一個(gè)新的實(shí)例補(bǔ)上。當(dāng)然兩者基本的工作原理是不一樣的,K8s 中的所有實(shí)例正常情況都是在工作的,在多個(gè)實(shí)例間均衡工作負(fù)載,而不存在主備的概念,這是由云原生應(yīng)用的本質(zhì)所決定的。
  負(fù)載均衡
  vSphere 并不內(nèi)置有負(fù)載均衡功能,一般是通過(guò)虛擬的 (如 NSX) 或物理的 (如 F5) 負(fù)載均衡器來(lái)把服務(wù)請(qǐng)求平均分配給多臺(tái)虛機(jī)。負(fù)載均衡也有多種配置模式,以單肩模式 (one-armed) 為例,我們把網(wǎng)絡(luò)流量東西向地均衡分配給虛機(jī)。
  K8s 中也有類似的概念“Service”,是一組一起協(xié)作的 Pod,每個(gè) Pod 都被定義了一個(gè)標(biāo)簽選擇器 (label selector)。K8s Service 也有多種配置模式,例如“ClusterIP“模式,每個(gè) Service 都被分配了一個(gè)外部可見(jiàn)的靜態(tài) IP 地址和 DNS 域名以便于被訪問(wèn)到,負(fù)載流量以輪循 (round-robin) 的方式分配給每一個(gè) Pod。其他的模式如 “NodePort” ,以不同端口訪問(wèn)節(jié)點(diǎn)的流量會(huì)被映射到不同的 Pod;當(dāng)然也可以配成 “LoadBalancer” 模式來(lái)使用外部的負(fù)載均衡器。
  K8s 還有另外一種非常重要的負(fù)載均衡機(jī)制 “Ingress Controller”,一個(gè) ingress-controller 以 Pod 的形式存在,并且分配有一個(gè)外部可見(jiàn)的 IP 地址,該 IP 地址對(duì)應(yīng)著一個(gè)含有通配符的 DNS 記錄,ingress-controller 根據(jù)預(yù)先設(shè)定的規(guī)則來(lái)把流量分配給不同的 Pod。例如下圖中的 IP 地址 192.168.100.244 對(duì)應(yīng) DNS 域名 sphinx-v*.esxcloud.net,訪問(wèn)sphinx-v1.esxcloud.net 的流量會(huì)被重定向給 “sphinx-svc-1”,而訪問(wèn)sphinx-v2.esxcloud.net 的流量被重定向給 “sphinx-svc2”。
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

專題