您好,登錄后才能下訂單哦!
本系列文章將整理到我在GitHub上的《Java面試指南》倉庫,更多精彩內(nèi)容請(qǐng)到我的倉庫里查看
本文轉(zhuǎn)自
https://github.com/h3pl/Java-Tutorial
喜歡的話麻煩點(diǎn)下Star哈
本系列文章將整理于我的個(gè)人博客:
www.how2playlife.com
該系列博文會(huì)介紹常見的后端技術(shù),這對(duì)后端工程師來說是一種綜合能力,我們會(huì)逐步了解搜索技術(shù),云計(jì)算相關(guān)技術(shù)、大數(shù)據(jù)研發(fā)等常見的技術(shù)喜提,以便讓你更完整地了解后端技術(shù)棧的全貌,為后續(xù)參與分布式應(yīng)用的開發(fā)和學(xué)習(xí)做好準(zhǔn)備。
如果對(duì)本系列文章有什么建議,或者是有什么疑問的話,也可以關(guān)注公眾號(hào)【Java技術(shù)江湖】聯(lián)系我,歡迎你參與本系列博文的創(chuàng)作和修訂。
本文將會(huì)簡(jiǎn)單介紹 Kubernetes的核心概念。因?yàn)檫@些定義可以在Kubernetes的文檔中找到,所以文章也會(huì)避免用大段的枯燥的文字介紹。相反,我們會(huì)使用一些圖表(其中一些是動(dòng)畫)和示例來解釋這些概念。我們發(fā)現(xiàn)一些概念(比如Service)如果沒有圖表的輔助就很難全面地理解。在合適的地方我們也會(huì)提供Kubernetes文檔的鏈接以便讀者深入學(xué)習(xí)。
容器特性、鏡像、網(wǎng)絡(luò);Kubernetes架構(gòu)、核心組件、基本功能;Kubernetes設(shè)計(jì)理念、架構(gòu)設(shè)計(jì)、基本功能、常用對(duì)象、設(shè)計(jì)原則;Kubernetes的數(shù)據(jù)庫、運(yùn)行時(shí)、網(wǎng)絡(luò)、插件已經(jīng)落地經(jīng)驗(yàn);微服務(wù)架構(gòu)、組件、監(jiān)控方案等。
這就開始吧。
Kubernetes(k8s)是自動(dòng)化容器操作的開源平臺(tái),這些操作包括部署,調(diào)度和節(jié)點(diǎn)集群間擴(kuò)展。如果你曾經(jīng)用過Docker容器技術(shù)部署容器,那么可以將Docker看成Kubernetes內(nèi)部使用的低級(jí)別組件。Kubernetes不僅僅支持Docker,還支持Rocket,這是另一種容器技術(shù)。
使用Kubernetes可以:
實(shí)際上,使用Kubernetes只需一個(gè) 部署文件,使用一條命令就可以部署多層容器(前端,后臺(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)化。 這里可以看到一個(gè)典型的Kubernetes架構(gòu)圖。
1.png
上圖可以看到如下組件,使用特別的圖標(biāo)表示Service和Label:
Pod(上圖綠色方框)安排在節(jié)點(diǎn)上,包含一組容器和卷。同一個(gè)Pod里的容器共享同一個(gè)網(wǎng)絡(luò)命名空間,可以使用localhost互相通信。Pod是短暫的,不是持續(xù)性實(shí)體。你可能會(huì)有這些問題:
正如圖所示,一些Pod有Label。一個(gè)Label是attach到Pod的一對(duì)鍵/值對(duì),用來傳遞用戶定義的屬性。比如,你可能創(chuàng)建了一個(gè)”tier”和“app”標(biāo)簽,通過Label( tier=frontend, app=myapp)來標(biāo)記前端Pod容器,使用Label( tier=backend, app=myapp)標(biāo)記后臺(tái)Pod。然后可以使用 Selectors選擇帶有特定Label的Pod,并且將Service或者Replication Controller應(yīng)用到上面。
是否手動(dòng)創(chuàng)建Pod,如果想要?jiǎng)?chuàng)建同一個(gè)容器的多份拷貝,需要一個(gè)個(gè)分別創(chuàng)建出來么,能否將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)畫所示:
2.gif
如果之前不響應(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í)時(shí)很有用。
當(dāng)創(chuàng)建Replication Controller時(shí),需要指定兩個(gè)東西:
現(xiàn)在已經(jīng)創(chuàng)建了Pod的一些副本,那么在這些副本上如何均衡負(fù)載呢?我們需要的是Service。
如果Pods是短暫的,那么重啟時(shí)IP地址可能會(huì)改變,怎么才能從前端容器正確可靠地指向后臺(tái)容器呢?
Service是定義一系列Pod以及訪問這些Pod的策略的一層 抽象。Service通過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ì)完成如下兩件重要的事情:
下述動(dòng)畫展示了Service的功能。注意該圖作了很多簡(jiǎn)化。如果不進(jìn)入網(wǎng)絡(luò)配置,那么達(dá)到透明的負(fù)載均衡目標(biāo)所涉及的底層網(wǎng)絡(luò)和路由相對(duì)先進(jìn)。如果有興趣, 這里有更深入的介紹。
3.gif
有一個(gè)特別類型的Kubernetes Service,稱為’ LoadBalancer‘,作為外部負(fù)載均衡器使用,在一定數(shù)量的Pod之間均衡流量。比如,對(duì)于負(fù)載均衡Web流量很有用。
節(jié)點(diǎn)(上圖橘色方框)是物理或者虛擬機(jī)器,作為Kubernetes worker,通常稱為Minion。每個(gè)節(jié)點(diǎn)都運(yùn)行如下Kubernetes關(guān)鍵組件:
集群擁有一個(gè)Kubernetes Master(紫色方框)。Kubernetes Master提供集群的獨(dú)特視角,并且擁有一系列組件,比如Kubernetes API Server。API Server提供可以用來和集群的REST端點(diǎn)。master節(jié)點(diǎn)包括用來創(chuàng)建和復(fù)制Pod的Replication Controller。
現(xiàn)在我們已經(jīng)了解了Kubernetes核心概念的基本知識(shí),你可以進(jìn)一步閱讀Kubernetes
用戶手冊(cè)。用戶手冊(cè)提供了快速并且完備的學(xué)習(xí)文檔。
如果迫不及待想要試試Kubernetes,可以使用
Google Container Engine。Google Container Engine是托管的Kubernetes容器環(huán)境。簡(jiǎn)單注冊(cè)/登錄之后就可以在上面嘗試示例了。
原文鏈接:
Learn the Kubernetes Key Concepts in 10 Minutes(翻譯:崔婧雯)
===========================
譯者介紹
崔婧雯,現(xiàn)就職于IBM,高級(jí)軟件工程師,負(fù)責(zé)IBM WebSphere業(yè)務(wù)流程管理軟件的系統(tǒng)測(cè)試工作。曾就職于VMware從事桌面虛擬化產(chǎn)品的質(zhì)量保證工作。對(duì)虛擬化,中間件技術(shù),業(yè)務(wù)流程管理有濃厚的興趣。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。