国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Kubernetes 1.2 新功能解析:multizone(多區(qū))支持

seal_de / 2932人閱讀

摘要:只有谷歌的和亞馬遜的目前被自動的支持盡管通過給節(jié)點(diǎn)和數(shù)據(jù)卷安排添加適當(dāng)?shù)臉?biāo)簽來給其他云或者裸機(jī)加入類似的支持很容易。當(dāng)建立持久數(shù)據(jù)卷時,管理控制器自動會把標(biāo)簽加給數(shù)據(jù)卷。因?yàn)閿?shù)據(jù)卷都不能跨區(qū),這意味著只能被創(chuàng)建在和數(shù)據(jù)卷同區(qū)內(nèi)。

導(dǎo)論

Kubernetes 1.2增加的一個新的功能是把一個集群跑在多個failure zone里(谷歌GCE管它叫“zone”,亞馬遜AWS管它們叫“availability zones”,這里我們統(tǒng)稱它們?yōu)椤皕ones”)。這是把多個K8S集群聯(lián)合起來(被稱為“Ubernetes”)的一個輕便的版本。Ubernetes會允許把在多個云或者不同地區(qū)的多個K8S集群聯(lián)合起來。然而,很多開發(fā)者近是簡單地想把他們云上地K8S集群跑在不同zone里,這就是K8S的1.2版本所提供的multizone(多區(qū))支持(我們稱之為“Ubernetes Lite”)。

K8S 1.2特意對多區(qū)支持做了一些限制:一個簡單的K8S集群可以跑在多區(qū),但只能是在同一個地區(qū)(和同一個云上)。只有谷歌的GCE和亞馬遜的AWS目前被自動的支持(盡管通過給節(jié)點(diǎn)和數(shù)據(jù)卷安排添加適當(dāng)?shù)臉?biāo)簽來給其他云或者裸機(jī)加入類似的支持很容易)。

功能

當(dāng)節(jié)點(diǎn)啟動之后,kubelet自動給它們添加zone信息的標(biāo)簽。K8S會自動在單個區(qū)的單個集群的冗余控制器(RC)內(nèi)平均分布pods或者在節(jié)點(diǎn)上分布服務(wù)(來減少失敗帶來的影響)。對于多區(qū)集群來說,這種平均分布的行為也應(yīng)該是跨區(qū)(來減少區(qū)掛掉的影響)。(這是通過SelectorSpreadPriority來實(shí)現(xiàn)的)。這是最理想的方式,但如果你集群所在的zone是不同的(比如,節(jié)點(diǎn)數(shù)量不同,節(jié)點(diǎn)類型不同或者不同的節(jié)點(diǎn)資源要求),這些都會有可能導(dǎo)致無法完美的跨區(qū)平均分布pods。如果可以的話,你可以使用同一個區(qū)(同樣的節(jié)點(diǎn)數(shù)量和節(jié)點(diǎn)類型)來減少不平均分配的概率。
當(dāng)建立持久數(shù)據(jù)卷時,PersistentVolumeLabel管理控制器自動會把zone標(biāo)簽加給數(shù)據(jù)卷。調(diào)度器(通過VolumeZonePredicate)會確保pod和分配給這個pod的數(shù)據(jù)卷在同一個zone里,因?yàn)閿?shù)據(jù)卷不能跨區(qū)。

限制

對于多區(qū)支持有如下幾個限制

我們假定不同的區(qū)互相距離很近,所以我們不做任何路由。尤其,通過服務(wù)過來的請求可能是跨區(qū)的(即使在一些pods里的pod是支持這些服務(wù)的且這些pods和client同區(qū)),這可能會導(dǎo)致額外的延遲和開銷。

數(shù)據(jù)卷對區(qū)有粘性,只能以PersistentVolume來工作,比如說如果你特地在pod的參數(shù)里指定一個EBS數(shù)據(jù)卷是無法奏效的。

集群不能跨云跨地區(qū)(這個功能要靠K8S完整版的集群聯(lián)合支持)。

盡管你的節(jié)點(diǎn)在多個區(qū),kube-up現(xiàn)在默認(rèn)是跑一個單一的master node。盡管服務(wù)是高可用,能在一個區(qū)內(nèi)容忍一些損失,控制層是在某個單一區(qū)內(nèi)。需要高可用控制層的開發(fā)者需留意關(guān)于K8S高可用方面的指南。

代碼梳理

現(xiàn)在來梳理一下如何在GCE和AWS上建立和使用一個多區(qū)集群。你需要建一個完整的集群(指定MULTIZONE=1),然后通過再跑kube-up在其他區(qū)增加節(jié)點(diǎn)(設(shè)定KUBE_USE_EXISTING_MASTER=true

1. 建立你的集群


和往常一樣來建立集群,傳入MULTIZONE讓集群知道去管理多區(qū),在us-central1-a里創(chuàng)建節(jié)點(diǎn):
GCE:

curl -sS https://get.k8s.io | MULTIZONE=1 KUBERNETES_PROVIDER=gce KUBE_GCE_ZONE=us-central1-aNUM_NODES=3 bash

AWS:

curl -sS https://get.k8s.io | MULTIZONE=1 KUBERNETES_PROVIDER=aws KUBE_AWS_ZONE=us-west-2a NUM_NODES=3 bash

通過這步就常規(guī)建立了一個集群,仍然在單區(qū)跑(但通過 MULTIZONE=1 賦予了多區(qū)的能力)

2 節(jié)點(diǎn)打標(biāo)簽


看下節(jié)點(diǎn),你能看到它們被打了zone信息的標(biāo)簽。它們目前都在us-central1-a (GCE) 或者在 us-west-2a (AWS) 。這些標(biāo)簽,對地區(qū)來說,是failure-domain.beta.kubernetes.io/region ;對zone來說是 failure-domain.beta.kubernetes.io/zone

3 在第二個區(qū)內(nèi)再加一些節(jié)點(diǎn)


現(xiàn)在讓我們在一個不同的zone內(nèi)(us-central1-b 或者 us-west-2b)利用已有的master,在現(xiàn)有的集群里再加入一些節(jié)點(diǎn)。我們可以再跑一下kube-up,但如果指定KUBE_USE_EXISTING_MASTER=1 的話,kube-up不會創(chuàng)建一個新的master,但會重復(fù)使用之前已有的。

GCE:

KUBE_USE_EXISTING_MASTER=true MULTIZONE=1 KUBERNETES_PROVIDER=gce KUBE_GCE_ZONE=us-central1-b NUM_NODES=3 kubernetes/cluster/kube-up.sh

在AWS上我們也需要給子網(wǎng)指定網(wǎng)絡(luò)CIDR,和master內(nèi)部的IP地址:
KUBE_USE_EXISTING_MASTER=true MULTIZONE=1 KUBERNETES_PROVIDER=aws KUBE_AWS_ZONE=us-west-2b NUM_NODES=3 KUBE_SUBNET_CIDR=172.20.1.0/24 MASTER_INTERNAL_IP=172.20.0.9 kubernetes/cluster/kube-up.sh

這時候再看下節(jié)點(diǎn),應(yīng)該增加了三個節(jié)點(diǎn),在us-central1-b里。

4 數(shù)據(jù)卷和zone的粘性


通過新的動態(tài)數(shù)據(jù)卷創(chuàng)建來創(chuàng)立一個數(shù)據(jù)卷(只有持久數(shù)據(jù)卷才能保證數(shù)據(jù)卷和zone的粘性)

持久數(shù)據(jù)卷也被打了標(biāo)簽,標(biāo)明了它被創(chuàng)建的地區(qū)和zone。在K8S 1.2版本里,動態(tài)的持久數(shù)據(jù)卷總是被建在集群master同區(qū)(在現(xiàn)在這個例子里,是在us-centaral1-a / us-west-2a);這在完整版中會提高。
所以,現(xiàn)在我們要來創(chuàng)建一個pod,來使用持久數(shù)據(jù)卷。因?yàn)镚CE PDS/AWS EBS數(shù)據(jù)卷都不能跨區(qū),這意味著pod只能被創(chuàng)建在和數(shù)據(jù)卷同區(qū)內(nèi)。

5 Pods跨區(qū)的分布


在冗余控制器(RC)里的pod或者服務(wù)會被自動地跨區(qū)分布。首先,讓我們在第三個區(qū)內(nèi)再生成一些節(jié)點(diǎn)

GCE:

KUBE_USE_EXISTING_MASTER=true MULTIZONE=1 KUBERNETES_PROVIDER=gce KUBE_GCE_ZONE=us-central1-f NUM_NODES=3 kubernetes/cluster/kube-up.sh

AWS:

KUBE_USE_EXISTING_MASTER=true MULTIZONE=1 KUBERNETES_PROVIDER=aws KUBE_AWS_ZONE=us-west-2c NUM_NODES=3 KUBE_SUBNET_CIDR=172.20.2.0/24 MASTER_INTERNAL_IP=172.20.0.9 kubernetes/cluster/kube-up.sh

檢查一下你在三個區(qū)里有節(jié)點(diǎn):

kubectl get nodes --show-labels

建立一個K8S教程里guestbook-go例子,包含一個RC,數(shù)量寫3,跑一個簡單的web應(yīng)用:

find kubernetes/examples/guestbook-go/ -name "*.json" | xargs -I {} kubectl create -f {}

pods應(yīng)該跨三個區(qū)分布:

負(fù)載均衡器在一個集群之內(nèi)跨區(qū),在K8S標(biāo)準(zhǔn)教程guestbook-go里有這個負(fù)載均衡器服務(wù)的例子:

負(fù)載均衡器目前指向所有的pods,盡管它們在不同的區(qū)里。

6 關(guān)閉集群


結(jié)束之后,清理一下
GCE:

KUBERNETES_PROVIDER=gce KUBE_USE_EXISTING_MASTER=true KUBE_GCE_ZONE=us-central1-f kubernetes/cluster/kube-down.shKUBERNETES_PROVIDER=gce KUBE_USE_EXISTING_MASTER=true KUBE_GCE_ZONE=us-central1-b kubernetes/cluster/kube-down.shKUBERNETES_PROVIDER=gce KUBE_GCE_ZONE=us-central1-a kubernetes/cluster/kube-down.sh

AWS:

KUBERNETES_PROVIDER=aws KUBE_USE_EXISTING_MASTER=true KUBE_AWS_ZONE=us-west-2c kubernetes/cluster/kube-down.shKUBERNETES_PROVIDER=aws KUBE_USE_EXISTING_MASTER=true KUBE_AWS_ZONE=us-west-2b kubernetes/cluster/kube-down.shKUBERNETES_PROVIDER=aws KUBE_AWS_ZONE=us-west-2a kubernetes/cluster/kube-down.sh

原文鏈接點(diǎn)這里

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/32447.html

相關(guān)文章

  • Kubernetes 1.3 中一些隱藏的功能

    摘要:到現(xiàn)在為止,部署有狀態(tài)應(yīng)用比如分布式數(shù)據(jù)庫已經(jīng)是一個棘手的問題,但是其實(shí)也不是做不到。我們也會展示如何在本地更加輕松地部署分布式數(shù)據(jù)庫在我們與客戶目前正在積極處理的區(qū)域內(nèi)。 伴隨著5000多次的提交,以及大約350位貢獻(xiàn)者在社區(qū)以及該行業(yè)的貢獻(xiàn),Kubernetes現(xiàn)在已經(jīng)到1.3版本了,已于上周發(fā)布!網(wǎng)址:點(diǎn)這里。 Kubernetes的首次發(fā)布要追溯到兩年前。這個項(xiàng)目的社區(qū)參與度和...

    kk_miles 評論0 收藏0
  • 在GKE上面創(chuàng)建你的第一個Kubernetes集群

    摘要:創(chuàng)建你的谷歌云項(xiàng)目如果你還沒有谷歌賬號,那么在你繼續(xù)步驟之前先創(chuàng)建一個。一個集群包括了由谷歌和一套節(jié)點(diǎn)主導(dǎo)的服務(wù)器。點(diǎn)擊查看完美結(jié)語我們今天帶大家一起來看了一下谷歌云平臺,開啟計費(fèi)功能,打開相關(guān),然后在上面創(chuàng)建一個集群。 你可能已經(jīng)了解過Kubernetes和Google云平臺,但是可能還并沒有真正創(chuàng)建過一個集群。在這里,我們會帶領(lǐng)大家梳理一些基礎(chǔ)知識,跟著這個教程一步步來,你就會自己...

    Jonathan Shieber 評論0 收藏0
  • Kubernetes 1.2 功能解析:ConfigMap (上)

    摘要:我們希望能夠讓應(yīng)用的開發(fā)者在里充分使用這樣的模式。盡管允許類似于驗(yàn)證信息和秘鑰這些信息從應(yīng)用當(dāng)中分離,但在過去并沒有為了普通的或者非配置而存在的對象。從數(shù)據(jù)角度來看,的類型只是鍵值組。 容器的配置管理——把應(yīng)用的代碼和配置區(qū)分開,是一個好的操作。我們希望能夠讓應(yīng)用的開發(fā)者在Kubernetes里充分使用這樣的模式。盡管Secrets API允許類似于驗(yàn)證信息和秘鑰這些信息從應(yīng)用當(dāng)中分離...

    李濤 評論0 收藏0
  • Kubernetes 1.2 功能解析:ConfigMap (下)

    摘要:的工作就是為作出的修改查看我們的配置文件,并且運(yùn)行讀取配置文件的新版本回調(diào)函數(shù),使用設(shè)置新的。它的目標(biāo)是使任意額外的成為一個單獨(dú)更新的,這樣我們只要執(zhí)行一次回調(diào)函數(shù)。 Kubernetes 1.2版本添加了一個叫ConfigMap的新功能。這個功能提供給容器注入應(yīng)用程序數(shù)據(jù)的方式。注入配置文件對于大部分應(yīng)用程序來說很強(qiáng)大,但是新的ConfigMap功能不僅可以在容器開啟時提供初始配置功...

    Blackjun 評論0 收藏0
  • Kubernetes 1.2 功能解析:ConfigMap (中)

    摘要:使用很多應(yīng)用程序的配置需要通過配置文件,命令行參數(shù)和環(huán)境變量的組合配置來完成。舉個例子,思考以下的我們可以像這樣在一個中來使用這個的鍵當(dāng)這個運(yùn)行的時候,它的輸出將包括以下幾行使用案例用設(shè)置命令行參數(shù)也可以被使用來設(shè)置容器中的命令或者參數(shù)值。 使用ConfigMap 很多應(yīng)用程序的配置需要通過配置文件,命令行參數(shù)和環(huán)境變量的組合配置來完成。這些配置應(yīng)該從image內(nèi)容中解耦,以此來保持容...

    honmaple 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<