<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      本文將會(huì)簡(jiǎn)單介紹Kubernetes
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fwhatisk8s.html>
      的核心概念。因?yàn)檫@些定義可以在Kubernetes的文檔中找到,所以文章也會(huì)避免用大段的枯燥的文字介紹。相反,我們會(huì)使用一些圖表(其中一些是動(dòng)畫)和示例來(lái)解釋這些概念。我們發(fā)現(xiàn)一些概念(比如Service)如果沒(méi)有圖表的輔助就很難全面地理解。在合適的地方我們也會(huì)提供Kubernetes文檔的鏈接以便讀者深入學(xué)習(xí)。

      【Kubernetes培訓(xùn)通知】DockOne將會(huì)于2018年8月24日在北京舉辦Kubernetes技術(shù)培訓(xùn)
      <https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fmp.weixin.qq.com%2Fs%2FUfq1iwWKzQnf_uKLdNjNjw>
      ,培訓(xùn)內(nèi)容包括:容器特性、鏡像、網(wǎng)絡(luò);Kubernetes架構(gòu)、核心組件、基本功能;Kubernetes設(shè)計(jì)理念、架構(gòu)設(shè)計(jì)、基本功能、常用對(duì)象、設(shè)計(jì)原則;Kubernetes的數(shù)據(jù)庫(kù)、運(yùn)行時(shí)、網(wǎng)絡(luò)、插件已經(jīng)落地經(jīng)驗(yàn);微服務(wù)架構(gòu)、組件、監(jiān)控方案等
      。

      這就開(kāi)始吧。

      什么是Kubernetes?

      Kubernetes(k8s)是自動(dòng)化
      容器操作的開(kāi)源平臺(tái),這些操作包括部署,調(diào)度和節(jié)點(diǎn)集群間擴(kuò)展。如果你曾經(jīng)用過(guò)Docker容器技術(shù)部署容器,那么可以將Docker看成Kubernetes內(nèi)部使用的低級(jí)別組件。Kubernetes不僅僅支持Docker,還支持Rocket,這是另一種容器技術(shù)。
      使用Kubernetes可以:

      * 自動(dòng)化容器的部署和復(fù)制
      * 隨時(shí)擴(kuò)展或收縮容器規(guī)模
      * 將容器組織成組,并且提供容器間的負(fù)載均衡
      * 很容易地升級(jí)應(yīng)用程序容器的新版本
      * 提供容器彈性,如果容器失效就替換它,等等...

      實(shí)際上,使用Kubernetes只需一個(gè)部署文件
      <https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fgithub.com%2Fkubernetes%2Fkubernetes%2Fblob%2Fmaster%2Fexamples%2Fguestbook%2Fall-in-one%2Fguestbook-all-in-one.yaml>
      ,使用一條命令就可以部署多層容器(前端,后臺(tái)等)的完整集群:
      $ kubectl create -f single-config-file.yaml

      kubectl是和Kubernetes API交互的命令行程序?,F(xiàn)在介紹一些核心概念。

      集群

      集群是一組節(jié)點(diǎn),這些節(jié)點(diǎn)可以是物理服務(wù)器或者虛擬機(jī),之上安裝了Kubernetes平臺(tái)。下圖展示這樣的集群。注意該圖為了強(qiáng)調(diào)核心概念有所簡(jiǎn)化。這里
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fdesign%2Farchitecture.html>
      可以看到一個(gè)典型的Kubernetes架構(gòu)圖。



      上圖可以看到如下組件,使用特別的圖標(biāo)表示Service和Label:


      * Pod
      * Container(容器)
      * Label()(標(biāo)簽)
      * Replication Controller(復(fù)制控制器)
      * Service()(服務(wù))
      * Node(節(jié)點(diǎn))
      * Kubernetes Master(Kubernetes主節(jié)點(diǎn))
      Pod

      Pod
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fuser-guide%2Fpods.html>
      (上圖綠色方框)安排在節(jié)點(diǎn)上,包含一組容器和卷。同一個(gè)Pod里的容器共享同一個(gè)網(wǎng)絡(luò)命名空間,可以使用localhost互相通信。Pod是短暫的,不是持續(xù)性實(shí)體。你可能會(huì)有這些問(wèn)題:

      * 如果Pod是短暫的,那么我怎么才能持久化容器數(shù)據(jù)使其能夠跨重啟而存在呢? 是的,Kubernetes支持卷
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fuser-guide%2Fvolumes.html>
      的概念,因此可以使用持久化的卷類型。
      * 是否手動(dòng)創(chuàng)建Pod,如果想要?jiǎng)?chuàng)建同一個(gè)容器的多份拷貝,需要一個(gè)個(gè)分別創(chuàng)建出來(lái)么?可以手動(dòng)創(chuàng)建單個(gè)Pod,但是也可以使用Replication
      Controller使用Pod模板創(chuàng)建出多份拷貝,下文會(huì)詳細(xì)介紹。
      * 如果Pod是短暫的,那么重啟時(shí)IP地址可能會(huì)改變,那么怎么才能從前端容器正確可靠地指向后臺(tái)容器呢?這時(shí)可以使用Service,下文會(huì)詳細(xì)介紹。
      Lable

      正如圖所示,一些Pod有Label(
      )。一個(gè)Label是attach到Pod的一對(duì)鍵/值對(duì),用來(lái)傳遞用戶定義的屬性。比如,你可能創(chuàng)建了一個(gè)"tier"和“app”標(biāo)簽,通過(guò)Label(
      tier=frontend, app=myapp)來(lái)標(biāo)記前端Pod容器,使用Label(tier=backend, app=myapp
      )標(biāo)記后臺(tái)Pod。然后可以使用Selectors
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fuser-guide%2Flabels.html%23label-selectors>
      選擇帶有特定Label的Pod,并且將Service或者Replication Controller應(yīng)用到上面。


      Replication Controller

      是否手動(dòng)創(chuàng)建Pod,如果想要?jiǎng)?chuàng)建同一個(gè)容器的多份拷貝,需要一個(gè)個(gè)分別創(chuàng)建出來(lái)么,能否將Pods劃到邏輯組里?

      Replication Controller確保任意時(shí)間都有指定數(shù)量的Pod“副本”在運(yùn)行。如果為某個(gè)Pod創(chuàng)建了Replication
      Controller并且指定3個(gè)副本,它會(huì)創(chuàng)建3個(gè)Pod,并且持續(xù)監(jiān)控它們。如果某個(gè)Pod不響應(yīng),那么Replication
      Controller會(huì)替換它,保持總數(shù)為3.如下面的動(dòng)畫所示:



      如果之前不響應(yīng)的Pod恢復(fù)了,現(xiàn)在就有4個(gè)Pod了,那么Replication
      Controller會(huì)將其中一個(gè)終止保持總數(shù)為3。如果在運(yùn)行中將副本總數(shù)改為5,Replication
      Controller會(huì)立刻啟動(dòng)2個(gè)新Pod,保證總數(shù)為5。還可以按照這樣的方式縮小Pod,這個(gè)特性在執(zhí)行滾動(dòng)升級(jí)
      <https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fcloud.google.com%2Fcontainer-engine%2Fdocs%2Freplicationcontrollers%2F%23rolling_updates>
      時(shí)很有用。
      當(dāng)創(chuàng)建Replication Controller時(shí),需要指定兩個(gè)東西:


      * Pod模板
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fuser-guide%2Freplication-controller.html%23pod-template>
      :用來(lái)創(chuàng)建Pod副本的模板
      * Label
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fuser-guide%2Freplication-controller.html%23labels>
      :Replication Controller需要監(jiān)控的Pod的標(biāo)簽。

      現(xiàn)在已經(jīng)創(chuàng)建了Pod的一些副本,那么在這些副本上如何均衡負(fù)載呢?我們需要的是Service。

      Service

      如果Pods是短暫的,那么重啟時(shí)IP地址可能會(huì)改變,怎么才能從前端容器正確可靠地指向后臺(tái)容器呢?

      Service
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fuser-guide%2Fservices.html>
      是定義一系列Pod以及訪問(wèn)這些Pod的策略的一層抽象
      。Service通過(guò)Label找到Pod組。因?yàn)镾ervice是抽象的,所以在圖表里通常看不到它們的存在,這也就讓這一概念更難以理解。

      現(xiàn)在,假定有2個(gè)后臺(tái)Pod,并且定義后臺(tái)Service的名稱為‘backend-service’,lable選擇器為(tier=backend,
      app=myapp)。backend-service 的Service會(huì)完成如下兩件重要的事情:

      * 會(huì)為Service創(chuàng)建一個(gè)本地集群的DNS入口,因此前端Pod只需要DNS查找主機(jī)名為
      ‘backend-service’,就能夠解析出前端應(yīng)用程序可用的IP地址。
      *
      現(xiàn)在前端已經(jīng)得到了后臺(tái)服務(wù)的IP地址,但是它應(yīng)該訪問(wèn)2個(gè)后臺(tái)Pod的哪一個(gè)呢?Service在這2個(gè)后臺(tái)Pod之間提供透明的負(fù)載均衡,會(huì)將請(qǐng)求分發(fā)給其中的任意一個(gè)(如下面的動(dòng)畫所示)。通過(guò)每個(gè)Node上運(yùn)行的代理(kube-proxy)完成。
      這里
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fuser-guide%2Fservices.html%23virtual-ips-and-service-proxies>
      有更多技術(shù)細(xì)節(jié)。

      下述動(dòng)畫展示了Service的功能。注意該圖作了很多簡(jiǎn)化。如果不進(jìn)入網(wǎng)絡(luò)配置,那么達(dá)到透明的負(fù)載均衡目標(biāo)所涉及的底層網(wǎng)絡(luò)和路由相對(duì)先進(jìn)。如果有興趣,這里
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fwww.dasblinkenlichten.com%2Fkubernetes-101-networking%2F>
      有更深入的介紹。



      有一個(gè)特別類型的Kubernetes Service,稱為'LoadBalancer
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fuser-guide%2Fservices.html%23type-loadbalancer>
      ',作為外部負(fù)載均衡器使用,在一定數(shù)量的Pod之間均衡流量。比如,對(duì)于負(fù)載均衡Web流量很有用。


      Node

      節(jié)點(diǎn)(上圖橘色方框)是物理或者虛擬機(jī)器,作為Kubernetes worker,通常稱為Minion。每個(gè)節(jié)點(diǎn)都運(yùn)行如下Kubernetes關(guān)鍵組件:

      * Kubelet:是主節(jié)點(diǎn)代理。
      * Kube-proxy:Service使用其將鏈接路由到Pod,如上文所述。
      * Docker或Rocket:Kubernetes使用的容器技術(shù)來(lái)創(chuàng)建容器。
      Kubernetes Master

      集群擁有一個(gè)Kubernetes Master(紫色方框)。Kubernetes
      Master提供集群的獨(dú)特視角,并且擁有一系列組件,比如Kubernetes API Server。API
      Server提供可以用來(lái)和集群交互的REST端點(diǎn)。master節(jié)點(diǎn)包括用來(lái)創(chuàng)建和復(fù)制Pod的Replication Controller。

      下一步

      現(xiàn)在我們已經(jīng)了解了Kubernetes核心概念的基本知識(shí),你可以進(jìn)一步閱讀Kubernetes 用戶手冊(cè)
      <https://yq.aliyun.com/go/articleRenderRedirect?url=http%3A%2F%2Fkubernetes.io%2Fv1.1%2Fdocs%2Fuser-guide%2FREADME.html>
      。用戶手冊(cè)提供了快速并且完備的學(xué)習(xí)文檔。
      如果迫不及待想要試試Kubernetes,可以使用Google Container Engine
      <https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fcloud.google.com%2Fcontainer-engine%2Fdocs%2F>
      。Google Container Engine是托管的Kubernetes容器環(huán)境。簡(jiǎn)單注冊(cè)/登錄之后就可以在上面嘗試示例了。

      本文轉(zhuǎn)自開(kāi)源中國(guó)-十分鐘帶你理解Kubernetes核心概念
      <https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fmy.oschina.net%2Fu%2F2935389%2Fblog%2F1925816>

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問(wèn)題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          免费国产黄网站在线观看动图 | 午夜福利视频免费看 | 日批网站在线播放 | 中文字幕伦理片 | 丰满少妇被猛烈进入 | 女仆被强喷水羞羞漫画网站 | 日韩电影在线观看中文字幕 | 婷婷久久视频 | 国产成人麻豆精品午夜在线 | 亚洲va成人天堂 美女18免费看 |