Kubernete知識小普及

?  大部分概念Kubernete官網都有詳細介紹,Kubernete中文官網 https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/?

  官網還提供一個比較好的功能是能在線互動香璃,見互動教程这难,類似實操命令初步感受。

Kubernete主要功能

基于容器的應用部署葡秒、維護和滾動升級

負載均衡和服務發(fā)現(xiàn)

跨機器和跨地區(qū)的集群調度

自動伸縮

無狀態(tài)服務和有狀態(tài)服務

廣泛的 Volume 支持

插件機制保證擴展性

Kubernetes是谷歌開源的容器集群管理系統(tǒng)

  Kubernetes 提供了很多的功能姻乓,它可以簡化應用程序的工作流嵌溢,加快開發(fā)速度。使用Kubernetes只需一個部署文件蹋岩,使用一條命令就可以部署多層容器(前端赖草,后臺等)的完整集群。

核心概念

Kubernetes 主要由以下幾個核心組件組成:

etcd 保存了整個集群的狀態(tài)剪个;

apiserver 提供了資源操作的唯一入口秧骑,并提供認證、授權扣囊、訪問控制乎折、API 注冊和發(fā)現(xiàn)等機制;

controller manager 負責維護集群的狀態(tài)侵歇,比如故障檢測骂澄、自動擴展、滾動更新等盒至;

scheduler 負責資源的調度酗洒,按照預定的調度策略將 Pod 調度到相應的機器上;

kubelet 負責維護容器的生命周期枷遂,同時也負責 Volume(CVI)和網絡(CNI)的管理樱衷;

Container runtime 負責鏡像管理以及 Pod 和容器的真正運行(CRI);

kube-proxy 負責為 Service 提供 cluster 內部的服務發(fā)現(xiàn)和負載均衡

?典型的Kubernetes架構圖

上圖可以看到如下組件酒唉,使用特別的圖標表示Service和Label:

Pod

Container(容器)

Label(

)(標簽)

Replication Controller(復制控制器)

Service(服務)

Node(節(jié)點)

Kubernetes Master(Kubernetes主節(jié)點)

Pod

  Pod在節(jié)點上矩桂,包含一組容器和卷。同一個Pod里的容器共享同一個網絡命名空間痪伦,可以使用localhost互相通信侄榴。Pod是短暫的,不是持續(xù)性實體网沾。如果Pod是短暫的癞蚕,那么我怎么才能持久化容器數(shù)據(jù)使其能夠跨重啟而存在呢? Kubernetes支持卷的概念辉哥,因此可以使用持久化的卷類型桦山。如果Pod是短暫的,那么重啟時IP地址可能會改變醋旦,那么怎么才能從前端容器正確可靠地指向后臺容器呢恒水?這時可以使用Service。

Lable

  一些Pod有Label饲齐。一個Label是attach到Pod的一對鍵/值對钉凌,用來傳遞用戶定義的屬性。比如捂人,你可能創(chuàng)建了一個"tier"和“app”標簽御雕,通過Label(tier=frontend, app=myapp)來標記前端Pod容器矢沿,使用Label(tier=backend, app=myapp)標記后臺Pod。然后可以使用Selectors選擇帶有特定Label的Pod饮笛,并且將Service或者Replication Controller應用到上面咨察。

Replication Controller

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

如果之前不響應的Pod恢復了,現(xiàn)在就有4個Pod了宪迟,那么Replication Controller會將其中一個終止保持總數(shù)為3酣衷。如果在運行中將副本總數(shù)改為5,Replication Controller會立刻啟動2個新Pod次泽,保證總數(shù)為5穿仪。還可以按照這樣的方式縮小Pod,這個特性在執(zhí)行滾動升級時很有用意荤。

當創(chuàng)建Replication Controller時啊片,需要指定兩個東西:

Pod模板:用來創(chuàng)建Pod副本的模板

Label:Replication Controller需要監(jiān)控的Pod的標簽。

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

Service

Service是定義一系列Pod以及訪問這些Pod的策略的一層抽象捐寥。Service通過Label找到Pod組笤昨。因為Service是抽象的,所以在圖表里通澄湛遥看不到它們的存在瞒窒,這也就讓這一概念更難以理解。

假定有2個后臺Pod乡洼,并且定義后臺Service的名稱為‘backend-service’根竿,lable選擇器為(tier=backend, app=myapp)。backend-service的Service會完成如下兩件重要的事情:

會為Service創(chuàng)建一個本地集群的DNS入口就珠,因此前端Pod只需要DNS查找主機名為 ‘backend-service’,就能夠解析出前端應用程序可用的IP地址醒颖。

現(xiàn)在前端已經得到了后臺服務的IP地址妻怎,但是它應該訪問2個后臺Pod的哪一個呢?Service在這2個后臺Pod之間提供透明的負載均衡泞歉,會將請求分發(fā)給其中的任意一個(如下面的動畫所示)逼侦。通過每個Node上運行的代理(kube-proxy)完成匿辩。這里有更多技術細節(jié)。

  如果不進入網絡配置榛丢,那么達到透明的負載均衡目標所涉及的底層網絡和路由相對先進铲球。

  有一個特別類型的Kubernetes Service,稱為'LoadBalancer'晰赞,作為外部負載均衡器使用稼病,在一定數(shù)量的Pod之間均衡流量。比如掖鱼,對于負載均衡Web流量很有用然走。

Pod與Service

  每個Pod都提供了一個獨立的Endpoint(Pod IP+ContainerPort)以被客戶端訪問,多個Pod副本組成了一個集群來提供服務戏挡,一般的做法是部署一個負載均衡器來訪問它們芍瑞,為這組Pod開啟一個對外的服務端口如8000,并且將這些Pod的Endpoint列表加入8000端口的轉發(fā)列表中褐墅,客戶端可以通過負載均衡器的對外IP地址+服務端口來訪問此服務拆檬。運行在Node上的kube-proxy其實就是一個智能的軟件負載均衡器,它負責把對Service的請求轉發(fā)到后端的某個Pod實例上妥凳,并且在內部實現(xiàn)服務的負載均衡與會話保持機制竟贯。Service不是共用一個負載均衡器的IP地址,而是每個Servcie分配一個全局唯一的虛擬IP地址猾封,這個虛擬IP被稱為Cluster IP澄耍。

Node IP

  Node節(jié)點的IP地址,是Kubernetes集群中每個節(jié)點的物理網卡的IP地址晌缘,是真是存在的物理網絡齐莲,所有屬于這個網絡的服務器之間都能通過這個網絡直接通信;

Pod IP

  Pod的IP地址磷箕,是Docker Engine根據(jù)docker0網橋的IP地址段進行分配的选酗,通常是一個虛擬的二層網絡,位于不同Node上的Pod能夠彼此通信岳枷,需要通過Pod IP所在的虛擬二層網絡進行通信芒填,而真實的TCP流量則是通過Node IP所在的物理網卡流出的;

Cluster IP

Service的IP地址空繁。特性如下:

僅僅作用于Kubernetes Servcie這個對象殿衰,并由Kubernetes管理和分配IP地址;

無法被Ping盛泡,因為沒有一個“實體網絡對象”來響應闷祥;

只能結合Service Port組成一個具體的通信端口;

Node IP網傲诵、Pod IP網域Cluster IP網之間的通信凯砍,采用的是Kubernetes自己設計的一種編程方式的特殊的路由規(guī)則箱硕,與IP路由有很大的不同;

Node

  節(jié)點(上圖橘色方框)是物理或者虛擬機器悟衩,作為Kubernetes worker剧罩,通常稱為Minion。每個節(jié)點都運行如下Kubernetes關鍵組件:

Kubelet:是主節(jié)點代理座泳。

Kube-proxy:Service使用其將鏈接路由到Pod惠昔,如上文所述。

Docker或Rocket:Kubernetes使用的容器技術來創(chuàng)建容器钳榨。

Kubernetes Master

  集群擁有一個Kubernetes Master舰罚。Kubernetes Master提供集群的獨特視角,并且擁有一系列組件薛耻,比如Kubernetes API Server营罢。API Server提供可以用來和集群交互的REST端點。master節(jié)點包括用來創(chuàng)建和復制Pod的Replication Controller饼齿。

應用

Kubernetes進行藍綠部署

應用程序更新到一個新版本時饲漾,部署功能能夠幫您對容器進行滾動更新,若有異陈聘龋可自動回滾考传。

Kubernetes在騰訊游戲的應用

接入容器數(shù)超過兩萬,接入的業(yè)務也有兩百多款证鸥,包括手游僚楞、端游、頁游枉层。

基于Kubernetes的Spark集群部署

相比于在物理機上部署泉褐,在Kubernetes集群上部署Spark集群,具有以下優(yōu)勢:

快速部署:安裝1000臺級別的Spark集群鸟蜡,在Kubernetes集群上只需設定worker副本數(shù)目replicas=1000膜赃,即可一鍵部署。

快速升級:升級Spark版本揉忘,只需替換Spark鏡像跳座,一鍵升級。

彈性伸縮:需要擴容泣矛、縮容時疲眷,自動修改worker副本數(shù)目replicas即可。

高一致性:各個Kubernetes節(jié)點上運行的Spark環(huán)境一致您朽、版本一致

高可用性:如果Spark所在的某些node或pod死掉咪橙,Kubernetes會自動將計算任務,轉移到其他node或創(chuàng)建新pod。

強隔離性:通過設定資源配額等方式美侦,可與WebService應用部署在同一集群,提升機器資源使用效率魂奥,從而降低服務器成本菠剩。

Kubernetes、Docker Swarm耻煤、 Mesos

網易云容器如何解決Kubernetes在公有云上的問題

微服務持續(xù)集成 Spring Cloud + GitLab + Docker + K8S

微服務組成:Gateway api網關>消費端>服務端 和 一個注冊中心具壮,共4個Spring Boot項目?

?Kubernetes實際要用起來問題還有很多,需要躺很多坑哈蝇,搭建起一套Kubernetes環(huán)境就可能會讓你從入門到放棄棺妓,再接再勵。

資料來源:

http://www.dockone.io/article/932

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末炮赦,一起剝皮案震驚了整個濱河市怜跑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吠勘,老刑警劉巖性芬,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異剧防,居然都是意外死亡植锉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門峭拘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俊庇,“玉大人,你說我怎么就攤上這事鸡挠』员ィ” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵宵凌,是天一觀的道長鞋囊。 經常有香客問我,道長瞎惫,這世上最難降的妖魔是什么溜腐? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮瓜喇,結果婚禮上挺益,老公的妹妹穿的比我還像新娘。我一直安慰自己乘寒,他們只是感情好望众,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般烂翰。 火紅的嫁衣襯著肌膚如雪夯缺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天甘耿,我揣著相機與錄音踊兜,去河邊找鬼。 笑死佳恬,一個胖子當著我的面吹牛捏境,可吹牛的內容都是我干的。 我是一名探鬼主播毁葱,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼垫言,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了倾剿?” 一聲冷哼從身側響起筷频,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柱告,沒想到半個月后截驮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡际度,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年葵袭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乖菱。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡坡锡,死狀恐怖,靈堂內的尸體忽然破棺而出窒所,到底是詐尸還是另有隱情鹉勒,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布吵取,位于F島的核電站禽额,受9級特大地震影響,放射性物質發(fā)生泄漏皮官。R本人自食惡果不足惜脯倒,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捺氢。 院中可真熱鬧藻丢,春花似錦、人聲如沸摄乒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至斋否,卻和暖如春梨水,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茵臭。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工冰木, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笼恰。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像歇终,于是被迫代替她去往敵國和親社证。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容

  • 1评凝、基礎架構 1.1 Master Master節(jié)點上面主要由四個模塊組成:APIServer追葡、scheduler...
    阿斯蒂芬2閱讀 10,875評論 0 44
  • 原文:https://www.cnblogs.com/xhyan/p/6656062.html?Kubernete...
    laosijikaichele閱讀 1,164評論 0 8
  • ?Kubernetes介紹1.背景介紹云計算飛速發(fā)展- IaaS- PaaS- SaaSDocker技術突飛猛進-...
    Zero___閱讀 14,734評論 0 21
  • 一、 K8s 是什么奕短? Kubernetes(k8s)是自動化容器操作的開源平臺宜肉,這些操作包括部署,調度和節(jié)點集群...
    loveroot閱讀 6,643評論 1 21
  • 注:擬從今天起用圖片記錄每頓吃了什么翎碑,方便瑜伽館的老師評估是否合理谬返。 早餐:一碗米飯,蘿卜排骨湯蘿卜大概吃了半根(...
    小葡萄mm閱讀 235評論 1 0