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