偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Kubernetes – Google分布式容器技術(shù)初體驗(yàn)

云計(jì)算 分布式
Kubernetes是Google開源的容器集群管理系統(tǒng)。作者認(rèn)為一個(gè)良好的分布式服務(wù)框架需要實(shí)現(xiàn)服務(wù)的配置管理,包括服務(wù)發(fā)現(xiàn)、負(fù)載均衡及服務(wù)依賴管理,以及服務(wù)之間的調(diào)度及生命周期管理。而Kubernetes包含了上述部分特性, 最近Google新推出的Container Engine也是基于Kubernetes基礎(chǔ)上實(shí)現(xiàn),本文作者最近對(duì)Kubernetes進(jìn)行了一些嘗試與體驗(yàn)。

Kubernetes是Google開源的容器集群管理系統(tǒng)。前幾天寫的 分布式服務(wù)框架的4項(xiàng)特性中提到一個(gè)良好的分布式服務(wù)框架需要實(shí)現(xiàn)。

"服務(wù)的配置管理。包括服務(wù)發(fā)現(xiàn)、負(fù)載均衡及服務(wù)依賴管理。

服務(wù)之間的調(diào)度及生命周期管理。"

由于Kubernetes包含了上述部分特性,加上最近Google新推出的Container Engine也是基于Kubernetes基礎(chǔ)上實(shí)現(xiàn),因此最近對(duì)Kubernetes進(jìn)行了一些嘗試與體驗(yàn)。

運(yùn)行環(huán)境

Kubernetes目前處于一個(gè)快速迭代的階段,同時(shí)它的相關(guān)生態(tài)圈(比如docker,etcd)也在快速發(fā)展,這也意味沒有適合新手使用非常順暢的版本,網(wǎng)上的各種文檔(也包括官方文檔)和當(dāng)前***的發(fā)布版會(huì)有不同程度滯后或不適用的情況,因此在使用時(shí)可能會(huì)碰到各種細(xì)節(jié)的障礙,而且這些新版本碰到的問題,很有可能在網(wǎng)上也搜索不到解決方案。

Kubernetes設(shè)計(jì)上并未綁定Google Cloud平臺(tái),但由于以上原因,為了減少不必要的障礙,初次嘗試建議使用GCE作為運(yùn)行環(huán)境(盡管GCE是一個(gè)需要收費(fèi)的環(huán)境)。默認(rèn)的cluster啟動(dòng)腳本會(huì)創(chuàng)建5個(gè)GCE instance,測(cè)試完需要自己及時(shí)主動(dòng)刪除。為了避免浪費(fèi),可以將minions減少,同時(shí)instance類型選擇f1-micro。費(fèi)用方面一個(gè)f1-micro instance運(yùn)行1個(gè)月大約50元人民幣,因此用GCE來測(cè)試Kubernetes,如果僅是測(cè)試時(shí)候開啟的話,并不會(huì)產(chǎn)生太多費(fèi)用。

Pods及Replication Controller

Kubernetes的基本單元是pods,用來定義一組相關(guān)的container。Kubernetes的優(yōu)點(diǎn)是可以通過定義一個(gè)replicationController來將同一個(gè)模塊部署到任意多個(gè)容器中,并且由Kubernetes自動(dòng)管理。比如定義了一個(gè)apache pod,通過replicationController設(shè)置啟動(dòng)100個(gè)replicas,系統(tǒng)就會(huì)在pod創(chuàng)建后自動(dòng)在所有可用的minions中啟動(dòng)100個(gè)apache container。并且輕松的是,當(dāng)container或者是所在的服務(wù)器不可用時(shí),Kubernetes會(huì)自動(dòng)通過啟動(dòng)新的container來保持100個(gè)總數(shù)不變,這樣管理一個(gè)大型系統(tǒng)變得輕松和簡(jiǎn)單。

 

Service 微服務(wù)

在解決部署問題之后,分布式服務(wù)中存在的一大難題是服務(wù)發(fā)現(xiàn)(或者叫尋址),用戶訪問的前端模塊需要訪問系統(tǒng)內(nèi)部的后端資源或者其他各種內(nèi)部的服務(wù),當(dāng)一個(gè)內(nèi)部服務(wù)通過replicationController動(dòng)態(tài)部署到不同的節(jié)點(diǎn)后,而且還存在前文提到的動(dòng)態(tài)切換的功能,前端應(yīng)用如何來發(fā)現(xiàn)并訪問這些服務(wù)?Kubernetes的另外一個(gè)亮點(diǎn)功能就是service,service是一個(gè)pod服務(wù)池的代理抽象,目前的實(shí)現(xiàn)方法是通過一個(gè)固定的虛擬IP及端口來定義,并且通過分布在所有節(jié)點(diǎn)上的proxy來實(shí)現(xiàn)內(nèi)部服務(wù)對(duì)service的訪問。

Kubernetes自身的配置是保存在一個(gè)etcd(類似ZooKeeper)的分布式配置服務(wù)中。服務(wù)發(fā)現(xiàn)為什么不通過etcd來實(shí)現(xiàn)?Tim的判斷更多的是為了Kubernetes上的系統(tǒng)和具體的配置服務(wù)解耦。由于服務(wù)發(fā)現(xiàn)屬于各個(gè)系統(tǒng)內(nèi)部的業(yè)務(wù)邏輯,因此如果使用etcd將會(huì)出現(xiàn)業(yè)務(wù)代碼的邏輯中耦合了etcd,這樣可能會(huì)讓很多架構(gòu)師望而卻步。

盡管沒有耦合etcd,部署在Kubernetes中的服務(wù)需要通過container中的環(huán)境變量來獲得service的地址。環(huán)境變量雖然簡(jiǎn)單,但它也存在很多弊端,如存在不方便動(dòng)態(tài)更改等問題。另外service目前的實(shí)現(xiàn)是將虛擬IP通過iptables重定向到最終的pod上,作者也提到iptables定向的局限性,不適合作為大型服務(wù)(比如上千個(gè)內(nèi)部service一起運(yùn)作時(shí))的實(shí)現(xiàn)。

由于service定位是系統(tǒng)內(nèi)部服務(wù),因此默認(rèn)情況下虛擬IP無法對(duì)外提供服務(wù),但Kubernetes當(dāng)前版本并沒直接提供暴露公網(wǎng)IP及端口的能力,需要借助云服務(wù)(比如GCE)的load balancer來實(shí)現(xiàn)。

小結(jié)

總的看來Kubernetes提供的能力非常令人激動(dòng),pod、replicationController以及service的設(shè)計(jì)非常簡(jiǎn)單實(shí)用。但如果立即將服務(wù)遷移到Kubernetes,還需要面對(duì)易變的環(huán)境。另外盡管Kubernetes提供health check的機(jī)制,但service生產(chǎn)環(huán)境所需的苛刻的可用性還未得到充分的驗(yàn)證。Service發(fā)現(xiàn)盡管不跟Kubernetes的內(nèi)部實(shí)現(xiàn)解耦,但利用環(huán)境變量來實(shí)現(xiàn)復(fù)雜系統(tǒng)的服務(wù)發(fā)現(xiàn)也存在一些不足。

#p#

安裝說明

Kubernetes cluster簡(jiǎn)單安裝說明如下,需要嘗試的朋友可參考。

前提準(zhǔn)備

一個(gè)64 bit linux環(huán)境,***在墻外的,避免訪問google cloud出現(xiàn)超時(shí)或reset等問題;另外創(chuàng)建Google Cloud帳號(hào),確保創(chuàng)建instances以及Cloud Storage功能可用;

安裝步驟

1. 安裝go語言環(huán)境(可選,如果需要編譯代碼則需要)

2. 安裝Google cloud sdk

$ curl https://sdk.cloud.google.com | bash

$ gcloud auth login

按提示完成授權(quán)及登錄

3. 安裝 etcd 二進(jìn)制版本(V0.4.6), 解壓后將其目錄加入PATH

4. 安裝 kubernetes***的relase binary版本(V0.5.1)

修改 cluster/gce/config-default.sh,主要是修改以下字段以便節(jié)約資源。

  1. MASTER_SIZE=f1-micro 
  2. MINION_SIZE=f1-micro 
  3. NUM_MINIONS=3 

在kubernetes目錄運(yùn)行
$ cluster/kube-up.sh

執(zhí)行成功后會(huì)顯示 done

5. 測(cè)試pod
以上腳本啟動(dòng)了examples/monitoring 下面定義的service,如果嘗試啟動(dòng)其它自己的pods,比如啟動(dòng)一個(gè)tomcat集群

  1.   "id""tomcatController"
  2.   "kind""ReplicationController"
  3.   "apiVersion""v1beta1"
  4.   "desiredState": { 
  5.     "replicas"2
  6.     "replicaSelector":{"name""tomcatCluster"}, 
  7.     "podTemplate":{ 
  8.   "desiredState": { 
  9.     "manifest": { 
  10.       "version""v1beta1"
  11.       "id""tomcat"
  12.       "containers": [{ 
  13.         "name""tomcat"
  14.         "image""tutum/tomcat"
  15.      "ports": [ 
  16.      {"containerPort":8080,"hostPort":80
  17.      ] 
  18.      }] 
  19.     } 
  20.   }, 
  21.   "labels": {"name""tomcatCluster"}} 
  22.   }, 
  23.   "labels": { 
  24.     "name""tomcatCluster"
  25.   } 

其中pod的tomcat image可以通過Docker Hub Registry https://registry.hub.docker.com/ 搜索及獲取

$ cluster/kubectl.sh create -f tomcat-pod.json

創(chuàng)建成功后通過 cluster/kubectl.sh get pods 來查看它所在minion及ip,可以通過curl或?yàn)g覽器來訪問(請(qǐng)開啟GCE防火墻端口設(shè)置)。

再定義一個(gè) service

  1.   "id""tomcat"
  2.   "kind""Service"
  3.   "apiVersion""v1beta1"
  4.   "port"8080
  5.   "containerPort"8080
  6.   "labels": { 
  7.     "name""tomcatCluster" 
  8.   }, 
  9.   "selector": { 
  10.     "name""tomcatCluster" 
  11.   } 

保存為 tomcat-service.json

$ cluster/kubectl.sh create -f tomcat-service.json

檢查service啟動(dòng)后的ip及端口,由于service是內(nèi)部ip,可以在GCE上通過curl來測(cè)試及驗(yàn)證。

$ cluster/kubectl.sh get services

6. 關(guān)閉cluster

cluster/kube-down.sh

作者簡(jiǎn)介:楊衛(wèi)華(Tim Yang),新浪微博技術(shù)總監(jiān),負(fù)責(zé)設(shè)計(jì)新浪微博基礎(chǔ)平臺(tái)架構(gòu),解決新浪微博發(fā)展中遇到的各種技術(shù)瓶頸,并致力于打造業(yè)界***的開放平臺(tái)。業(yè)余關(guān)注新技術(shù)在互聯(lián)網(wǎng)系統(tǒng)中的應(yīng)用。

原文出自:http://timyang.net/container/kubernetes-evaluation/

責(zé)任編輯:Ophira 來源: Tim的博客
相關(guān)推薦

2022-02-21 10:17:33

Rancher開源云原生

2019-10-10 09:16:34

Zookeeper架構(gòu)分布式

2025-09-02 02:53:00

LangExtracGoogle開源

2023-10-26 18:10:43

分布式并行技術(shù)系統(tǒng)

2017-05-19 18:01:04

GoogleKotlin數(shù)據(jù)

2024-01-01 22:35:26

kubernetesLease分布式選主

2025-06-11 08:01:06

2015-01-16 10:41:13

容器技術(shù)KubernetesDocker

2024-01-10 08:02:03

分布式技術(shù)令牌,

2024-01-08 08:05:08

分開部署數(shù)據(jù)體系系統(tǒng)拆分

2019-10-28 10:10:01

技術(shù)研發(fā)分布式

2017-07-27 14:32:05

大數(shù)據(jù)分布式消息Kafka

2024-01-09 08:00:58

2022-06-08 07:36:03

LocustKubernete微服務(wù)

2010-07-02 10:08:12

BigtableGoogle

2012-11-19 13:53:42

職場(chǎng)Google實(shí)習(xí)生

2017-09-01 05:35:58

分布式計(jì)算存儲(chǔ)

2019-06-19 15:40:06

分布式鎖RedisJava

2023-05-29 14:07:00

Zuul網(wǎng)關(guān)系統(tǒng)

2015-05-20 15:54:04

Openstack分布式存儲(chǔ)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)