Kubernetes 簡(jiǎn)介

Kubernetes 簡(jiǎn)介

導(dǎo)讀:Kubernetes(K8s)是開源的拼卵,用于管理云平臺(tái)中多個(gè)主機(jī)上的容器化的應(yīng)用硕并,應(yīng)用操作包括部署纳猪,調(diào)度和節(jié)點(diǎn)集群間擴(kuò)展陋葡。如果你曾經(jīng)用過 Docker 容器技術(shù)部署容器,那么可以將 Docker 看成 Kubernetes 內(nèi)部使用的低級(jí)別組件救拉。(Kubernetes 不僅僅支持 Docker难审,還支持 Rocket,這是另一種容器技術(shù))

小貼士:K8s 是 Kubernetes 的縮寫亿絮,其中 8 是指 K 后面的 8 個(gè)字母

Kubernetes 的作用

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

K8s 基本介紹

架構(gòu)圖

[站外圖片上傳中...(image-ed1ab9-1564482843628)]

組件

  • etcd 保存了整個(gè)集群的狀態(tài)派昧;
  • apiserver 用于暴露 Kubernetes API黔姜,提供了資源操作的唯一入口。任何的資源請(qǐng)求/調(diào)用操作都是通過kube-apiserver提供的接口進(jìn)行蒂萎;
  • controller manager 負(fù)責(zé)維護(hù)集群的狀態(tài)秆吵,比如故障檢測(cè)、自動(dòng)擴(kuò)展五慈、滾動(dòng)更新等纳寂;
  • scheduler 負(fù)責(zé)資源的調(diào)度实苞,按照預(yù)定的調(diào)度策略將 Pod 調(diào)度到相應(yīng)的機(jī)器上;
  • kubelet 負(fù)責(zé)維護(hù)容器的生命周期烈疚,同時(shí)也負(fù)責(zé) Volume(CVI)和網(wǎng)絡(luò)(管理 Kubernetes Master 和 Node 之間的通信)的管理;
  • Container runtime 負(fù)責(zé)鏡像管理以及 Pod 和容器的真正運(yùn)行(CRI)聪轿;
  • kube-proxy 負(fù)責(zé)為 Service 提供 cluster 內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡爷肝;
  • kube-dns 負(fù)責(zé)為整個(gè)集群提供 DNS 服務(wù)

名詞解釋

[圖片上傳失敗...(image-5a1676-1564482843628)]

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ù)來創(chuàng)建容器。

集群擁有一個(gè) Kubernetes Master绳慎。Kubernetes Master 提供集群管理控制纵竖,并且擁有一系列組件,比如 Kubernetes API Server 與 Replication Controller杏愤。API Server 提供可以用來和集群交互的接口靡砌;Replication Controller 用于創(chuàng)建和復(fù)制 Pod。

Pod

Pod 應(yīng)用于節(jié)點(diǎn)上珊楼,包含一組容器和卷通殃,一個(gè) Pod 是一個(gè)容器環(huán)境下的“邏輯主機(jī)”(類似模具下生產(chǎn)出的玩具),它可能包含一個(gè)或者多個(gè)緊密相連的應(yīng)用厕宗。同一個(gè) Pod 里的容器和應(yīng)用共享同一個(gè)網(wǎng)絡(luò)命名空間(可以使用 localhost 互相通信)画舌。Pod 中的應(yīng)用也可以共享磁盤(Volumes)。
Pod 是短暫的(無狀態(tài))已慢,不是持續(xù)性實(shí)體曲聂。
提出問題:

  1. 如果 Pod 是短暫的,那么我怎么才能持久化容器數(shù)據(jù)使其能夠跨重啟而存在呢蛇受?
    雖然 Kubernetes 支持卷的概念句葵,但共享磁盤目錄(EmptyDir)的生命周期和所屬的 Pod 是完全一致的,因此 Pod 中的數(shù)據(jù)并不能跨重啟而存在兢仰。
  2. 是否手動(dòng)創(chuàng)建 Pod乍丈,如果想要?jiǎng)?chuàng)建同一個(gè)容器的多份拷貝,需要一個(gè)個(gè)分別創(chuàng)建出來么把将?
    可以手動(dòng)創(chuàng)建單個(gè) Pod轻专,但是也可以使用 Replication Controller 使用 Pod 模板創(chuàng)建出多份拷貝,下文會(huì)詳細(xì)介紹察蹲。
  3. 如果 Pod 是短暫的请垛,那么重啟時(shí) IP 地址可能會(huì)改變催训,那么怎么才能從前端容器正確可靠地指向后臺(tái)容器呢?
    這時(shí)可以使用 Service宗收,下文會(huì)詳細(xì)介紹

Label

正如圖所示漫拭,一些 Pod 有 Label(pod description)。一個(gè) Label 是附加(attach)到Pod的一對(duì)鍵/值對(duì)混稽,用來傳遞用戶定義的屬性采驻。比如,你可能創(chuàng)建了一個(gè)“tier”和“app”標(biāo)簽匈勋,通過 Label(tier = backend, app = myapp)來標(biāo)記后端 Pod 容器礼旅。然后可以使用 Selectors 選擇帶有特定 Label 的 Pod 進(jìn)行相關(guān)操作,比如將 Service 或者 Replication Controller 應(yīng)用到上面洽洁。

Service

Service 定義了訪問這些 Pod 的策略的一層抽象痘系。Service 通過 Label 找到 Pod 組。
現(xiàn)在饿自,假定有 2 個(gè)后臺(tái) Pod汰翠,并且定義后臺(tái) Service 的名稱為“backend-service”,Label 選擇器為(tier = backend, app = myapp)璃俗。backend-service 的 Service 會(huì)完成如下兩件重要的事情:

  1. 服務(wù)發(fā)現(xiàn)
    將新的 Pod 服務(wù)放入其負(fù)載均衡的體系中
  2. DNS 尋址
    會(huì)為 Service 創(chuàng)建一個(gè)本地集群的 DNS 入口奴璃,因此前端 Pod 只需要通過組件 DNS 查找主機(jī)名為“backend-service”(此過程由 kube-dns 組件實(shí)現(xiàn)),就能夠解析出前端應(yīng)用程序可用的 IP 地址城豁。
    得到了后臺(tái)服務(wù)的 IP 地址后苟穆,Service 在這 2 個(gè)后臺(tái) Pod 之間提供透明的負(fù)載均衡,會(huì)將請(qǐng)求分發(fā)給其中的任意一個(gè)(如下面的動(dòng)畫所示)唱星。通過每個(gè) Node 上運(yùn)行的代理(kube-proxy)完成雳旅。
    [圖片上傳失敗...(image-f29038-1564482843628)]

有一個(gè)特別類型的 Kubernetes Service,稱為“LoadBalancer”间聊,作為外部負(fù)載均衡器使用攒盈,在一定數(shù)量的 Pod 之間均衡流量。

Replication Controller

Replication Controller(簡(jiǎn)單理解為上文提到的模具)確保任意時(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ù)永遠(yuǎn)為 3飘言。
如果之前不響應(yīng)的 Pod 恢復(fù)了衣形,Replication Controller 會(huì)將其中一個(gè)終止保持總數(shù)為 3。如果在運(yùn)行中將副本總數(shù)改為 5姿鸿,Replication Controller會(huì)立刻啟動(dòng) 2 個(gè)新 Pod谆吴,保證總數(shù)為 5倒源。還可以按照這樣的方式縮小 Pod。在節(jié)點(diǎn)掛掉重啟時(shí)句狼,可以自動(dòng)創(chuàng)建 Pod 及相關(guān)應(yīng)用服務(wù)笋熬。
創(chuàng)建 Replication Controller 需要的條件:
Pod 模板(模具):用來創(chuàng)建 Pod 副本的模板
Label:Replication Controller 需要監(jiān)控的 Pod 的標(biāo)簽。

ReplicaSet(RS)

Replication Controller(RC)的升級(jí)版本腻菇。ReplicaSet 和 Replication Controller 之間的唯一區(qū)別是對(duì)選擇器的支持突诬。ReplicaSet 支持 labels user guide 中描述的 set-based 選擇器要求, 而 Replication Controller 僅支持 equality-based 的選擇器要求芜繁。

Deployment

Deployment 為 Pod 和 Replica Set 提供聲明式更新。
你只需要在 Deployment 中描述您想要的目標(biāo)狀態(tài)是什么绒极,Deployment controller 就會(huì)幫您將 Pod 和 ReplicaSet 的實(shí)際狀態(tài)改變到您的目標(biāo)狀態(tài)骏令。您可以定義一個(gè)全新的 Deployment 來創(chuàng)建 ReplicaSet 或者刪除已有的 Deployment 并創(chuàng)建一個(gè)新的來替換。

注意:一般情況下不該手動(dòng)管理由 Deployment 創(chuàng)建的 Replica Set垄提,否則就篡越了 Deployment controller 的職責(zé)榔袋!

kubectl

kubectl 用于運(yùn)行 Kubernetes 集群命令的管理工具。
eg:

ConfigMap 與 Secret

ConfigMap 與 Secret 用于保存配置數(shù)據(jù)的鍵值對(duì)铡俐,可以用來保存單個(gè)屬性凰兑,也可以用來保存配置文件。ConfigMap 跟 Secret 很類似审丘,但它可以更方便地處理不包含敏感信息的字符串吏够。

參考文檔

中文文檔
體驗(yàn)環(huán)境

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市滩报,隨后出現(xiàn)的幾起案子锅知,更是在濱河造成了極大的恐慌,老刑警劉巖脓钾,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件售睹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡可训,警方通過查閱死者的電腦和手機(jī)昌妹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來握截,“玉大人飞崖,你說我怎么就攤上這事〈桑” “怎么了蚜厉?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)畜眨。 經(jīng)常有香客問我昼牛,道長(zhǎng)术瓮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任贰健,我火速辦了婚禮胞四,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伶椿。我一直安慰自己辜伟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布脊另。 她就那樣靜靜地躺著导狡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪偎痛。 梳的紋絲不亂的頭發(fā)上旱捧,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音踩麦,去河邊找鬼枚赡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谓谦,可吹牛的內(nèi)容都是我干的贫橙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼反粥,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼卢肃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起才顿,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤践剂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后娜膘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逊脯,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年竣贪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了军洼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡演怎,死狀恐怖匕争,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情爷耀,我是刑警寧澤甘桑,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響跑杭,放射性物質(zhì)發(fā)生泄漏铆帽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一德谅、第九天 我趴在偏房一處隱蔽的房頂上張望爹橱。 院中可真熱鬧,春花似錦窄做、人聲如沸愧驱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽组砚。三九已至,卻和暖如春掏颊,著一層夾襖步出監(jiān)牢的瞬間惫确,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工蚯舱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掩蛤。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓枉昏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親揍鸟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子兄裂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容