1. 程式人生 > >Kubernetes 概念整理

Kubernetes 概念整理

注:以下大部分內容來自網上摘錄,以便後期查閱。

Kubernetes (通常稱為 K8s) 是用於自動部署、擴充套件和管理容器化(containerized)應用程式的開源系統,是 Google 內部工具 Borg 的“開源版”。

Kubernetes 目前是公認的最先進的容器叢集管理工具,在 1.0 版本釋出後,Kubernetes 的發展速度更加迅猛,並且得到了容器生態圈廠商的全力支援,這包括coreos、rancher 等,諸多提供公有云服務的廠商在提供容器服務時也都基於 Kubernetes 做二次開發來提供基礎設施層的支撐,比如華為。可以說 Kubernetes 也是 Docker 進軍容器叢集管理和服務編排領域最為強勁的競爭對手(Docker Swarm)。

Kubernetes 定義了一組構建塊,它們可以共同提供部署、維護和擴充套件應用程式的機制。組成 Kubernetes 的元件設計為鬆耦合和可擴充套件的,這樣可以滿足多種不同的工作負載。可擴充套件性在很大程度上由 Kubernetes API 提供——它被作為擴充套件的內部元件以及 Kubernetes 上執行的容器等使用。

因為 Kubernetes 是由很多元件構成的一個系統,所以對於 Kubernetes 的安裝部署來說,還是有些困難的,並且 Kubernetes 是 Google 開發的,有很多內部的依賴包都是需要穿牆訪問的。

當然,也有快速安裝的工具,比如 kubeadm,kubeadm 是 Kubernetes 官方提供的快速安裝和初始化 Kubernetes 叢集的工具,目前的還處於孵化開發狀態,伴隨 Kubernetes 每個版本的釋出都會同步更新,當然,目前的 kubeadm 是不能用於生產環境的。

1. Kubernetes 架構圖

2. Kubernetes 特點

Kubernetes 特點:

  • 簡潔的:輕量級,簡單,易上手
  • 可移植的:公有,私有,混合,多重雲(multi-cloud)
  • 可擴充套件的: 模組化, 外掛化, 可掛載, 可組合
  • 可自愈的: 自動佈置, 自動重啟, 自動複製

通俗來說:

  • 自動化容器的部署和複製
  • 隨時擴充套件或收縮容器規模
  • 將容器組織成組,並且提供容器間的負載均衡
  • 很容易地升級應用程式容器的新版本
  • 提供容器彈性,如果容器失效就替換它

3. Kubernetes 術語

Kubernetes 術語:

  • 管理節點 (Master Node):用於控制 Kubernetes 節點的計算機,所有任務分配都來自於此。
  • 工作節點 (Minion Node):執行請求和分配任務的計算機,由 Kubernetes 主機負責對節點進行控制。
  • 名稱空間(Namespace):Namespace 是對一組資源和物件的抽象集合,比如可以用來將系統內部的物件劃分為不同的專案組或使用者組。常見的 pods, services, replication controllers 和 deployments 等都是屬於某一個 namespace 的(預設是 default),而 node, persistentVolumes 等則不屬於任何 namespace。
  • 容器集 (Pod):被部署在單個節點上的,且包含一個或多個容器的容器組,Pod 是可以被建立,排程,並與 Kubernetes 管理最小部署單元,同一容器集中的所有容器共享同一個 IP 地址、IPC、主機名稱及其它資源。容器集會將網路和儲存從底層容器中抽象出來,這樣,您就能更加輕鬆地在叢集中移動容器。
  • 部署(Deployment):Deployment 是新一代用於 Pod 管理的物件,與 Replication Controller 相比,它提供了更加完善的功能,使用起來更加簡單方便。使用詳情
  • 複製控制器 (Replication Controller):複製控制器管理 Pod 的生命週期,它們保證指定數量的 Pod 在任何給定的時間都在執行,他們通過建立或刪除 Pod 做到這一點。
  • 服務 (Service):服務為一組 Pod 提供單一穩定的名稱和地址,服務可將工作定義與容器集分離,Kubernetes 服務代理會自動將服務請求分配到正確的容器集 — 無論這個容器集會移到叢集中的哪個位置,即使它已被替換,也是如此。
  • 標籤(Lable):標籤用於組織和選擇基於鍵值對的物件組,它們被用於每一個 Kubernetes 元件。

Kubernetes 中,所有的容器都執行在 Pod 中,一個 Pod 來容納一個單獨的容器,或者多個合作的容器。在後一種情況,Pod 中的容器被保證放置在同一個機器上,可以共享資源。一個 Pod 也能包含零個或者更多的的 volume,volume 是對一個容器私有的目錄或者可以在 Pod 中的容器間共享。對於使用者每個建立的 Pod,系統會找一個健康運轉並且有足夠的容量的機器,然後開始將相應的容器在那裡啟動。如果一個容器失敗,它會被 Kubernetes 的 node agent 自動重啟,這個 node agent 被稱作 Kubelet。但是如果 Pod 或者他的機器出故障,它不會被自動轉移或者重啟,除非使用者也定義了一個 Replication Controller。

Pod 的副本集合可以共同組成一整個應用,一個微服務,或者在一個多層應用的一層。一旦 Pod 建立好,系統會持續的監控他們的健康狀態,和它們執行時所在的機器的健康狀況。如果一個 Pod 因為軟體問題或者所在機器故障出現問題,Replication 控制器會自動在健康的機器上建立一個新的 Pod。

Kubernetes 支援一種獨特的網路模型。Kubernetes 鼓勵用扁平的地址空間,並且不會動態的分配埠,而是採用讓使用者可以選擇任意合適自己的埠。為了實現這點,它給每一個 Pod 分配了一個 IP 地址。

Kubernetes 提供了 Service 的抽象,其提供了一穩定的 IP 地址和 DNS 名字,來對應一組動態的 Pod,例如一組構成一個微服務的 Pod。這個 Pod 組是通過 Label 選擇器來定義的,因為可以指定任何的 Pod 組。當一個執行在 Kubernetes Pod 裡的容器連線到這個地址時,這個連線會被本地的代理轉發(稱作 kube proxy)。該代理執行在來源機器上,轉發的目的地是一個相應的後端容器,確切的後端是通過 round-robin 的策略進行選擇,以均衡負載。kube proxy 也會追蹤後端的 Pod 組的動態變化,如當 Pod 被位於新機器上的新的 Pod 取代的時候,因而服務的 IP 和 DNS 名字不用改變。

每一個 Kubernetes 中的資源,如 Pod,都通過一個URI來被識別,並且有一個 UID。URI 中一個總要的元件是,物件的型別(如:Pod),物件的名字,和物件的 namespace(名稱空間)。對於一個特定的物件型別,每一個名字在其名稱空間都是獨一無二的,在一個物件的名字沒有帶著名稱空間的形式給出,那就是預設的名稱空間,UID 在時間和空間的範圍都是唯一的。

關於 Service 的更多說明:

  • Service 是應用服務的抽象,通過 labels 為應用提供負載均衡和服務發現。匹配 labels 的 Pod IP 和埠列表組成 endpoints,由 kube-proxy 負責將服務 IP 負載均衡到這些 endpoints 上。
  • 每個 Service 都會自動分配一個 cluster IP(僅在叢集內部可訪問的虛擬地址)和 DNS 名,其他容器可以通過該地址或 DNS 來訪問服務,而不需要了解後端容器的執行。

4. Kubernetes 元件

Kubernetes 元件:

  • kubectl:客戶端命令列工具,將接受的命令格式化後傳送給 kube-apiserver,作為整個系統的操作入口。
  • kube-apiserver:作為整個系統的控制入口,以 REST API 服務提供介面。
  • kube-controller-manager:用來執行整個系統中的後臺任務,包括節點狀態狀況、Pod 個數、Pods 和 Service 的關聯等。
  • kube-scheduler(將 Pod 排程到 Node 上):負責節點資源管理,接受來自 kube-apiserver 建立 Pods 任務,並分配到某個節點。
  • etcd:負責節點間的服務發現和配置共享。
  • kube-proxy:執行在每個計算節點上,負責 Pod 網路代理。定時從 etcd 獲取到 Service 資訊來做相應的策略。
  • kubelet:執行在每個計算節點上,作為 agent,接受分配該節點的 Pods 任務及管理容器,週期性獲取容器狀態,反饋給 kube-apiserver。
  • DNS:一個可選的DNS服務,用於為每個 Service 物件建立 DNS 記錄,這樣所有的 Pod 就可以通過 DNS 訪問服務了。
  • flannel:Flannel 是 CoreOS 團隊針對 Kubernetes 設計的一個覆蓋網路(Overlay Network)工具,需要另外下載部署。我們知道當我們啟動 Docker 後會有一個用於和容器進行互動的 IP 地址,如果不去管理的話可能這個 IP 地址在各個機器上是一樣的,並且僅限於在本機上進行通訊,無法訪問到其他機器上的 Docker 容器。Flannel 的目的就是為叢集中的所有節點重新規劃 IP 地址的使用規則,從而使得不同節點上的容器能夠獲得同屬一個內網且不重複的 IP 地址,並讓屬於不同節點上的容器能夠直接通過內網 IP 通訊。

master 節點包含元件:

docker
etcd
kube-apiserver
kube-controller-manager
kubelet
kube-scheduler

minion 節點包含元件:

docker
kubelet
kube-proxy

參考資料:

相關推薦

Kubernetes 概念整理

注:以下大部分內容來自網上摘錄,以便後期查閱。 Kubernetes (通常稱為 K8s) 是用於自動部署、擴充套件和管理容器化(containerized)應用程式的開源系統,是 Google 內部工具 Borg 的“開源版”。 Kubernetes 目前是公認的最先進的容器叢集管理工具,在 1.0 版本

RocketMQ概念整理

rocketmq size bsp 文件 weight ket nbsp col pac MapedFile 和文件一對一關系 MapedFileQueue 管理mapedFile,新建、獲取、刪除mapedFile將消息寫入文件 RocketMQ概念整理

運維相關概念整理

運維 工具 概念運維工作的發展歷程簡要梳理由最初的手動執行-->整理文檔,制定規範,逐步實現標準化後才能批量操作-->工具化編寫簡單的工具,實現初步的工具化-->借用腳本或者編程能力實現自動化-->根據大量的數據和案例實現智能化運維自動化的步驟的三個層級Bootstraping,系

node 基礎概念整理

down 同步和異步 通過 left 相關數 回調 clas 參數 整理 js和node的知識結構結構映射 角色 js node 語言基礎: ECMAScript ECMAScirpt 操作對象: 瀏覽器 DOM BOM 系統 os 文件 fs 網絡 ne

hadoop 各種概念整理

保存文件 replica 基本 linux中 最小 朋友 字節 並發訪問 尋址 Hadoop Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。 HDFS有高容錯性的特點,並且設計用來部署在低廉的(low

【ADNI】基本概念整理

阿爾茨海默領域 - 縮略語簡表 AD: Alzheimer's disease:阿爾茨海默病 CDR: clinical dementia rating:臨床痴呆評定 fMRI: functional magnetic resonance imaging:功能核磁共振成像 sMRI:

java(1)基本概念整理+eclipse安裝配置

基本概念以及與python的區別: 1 明確原始檔,類,方法,語句這幾個概念 2 while()和if()的條件只能是布林值,以下程式不行,但是python卻可以 int x=1; while(x){} //if(x){} 3 println相比print多了一個換行的功能

Hibeinate快取概念整理

1. 快取的範圍 a. 事務範圍(一級快取) i. 只能被當前事務訪問 ii. 生命週期依賴於事務生命週期 iii. 快取介質是記憶體 b. 程序範圍(二級快取) i. 程序範圍內所有事務共享 i. 程

win32 彙編基礎概念整理

一、關於暫存器 暫存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP等,似乎IP也是暫存器,但只有在CALL/RET在中會預設使用它,其它情況很少使用到,暫時可以不用理會。 EAX是WIN32 API 預設的返回值存放處。 ECX是LOOP指令自動減一的暫存器。 ESP是堆

資料庫ER圖基礎概念整理

ER圖分為實體(長方形)、屬性(圓形)、關係(菱形)三個核心部分。 ER圖的實體(entity)即資料模型中的資料物件,例如人、學生、音樂都可以作為一個數據物件,用長方體來表示,每個實體都有自己的實體成員(entity member)或者說實體物件(entity ins

看過的演算法概念整理

1.lasso方法 在普通線性模型中增加懲罰項,使得一些維度的資料趨於零,降低資料維度,避免維度災難。 2.ridge方法 道理和lasso一致,不同的是ridge不會使資料直接變成0,僅僅是放縮變小。

樹的概念整理

葉子結點:一棵樹當中沒有子結點(即度為0)的結點稱為葉子結點,簡稱“葉子”。 如圖所示: 高度 對於高度的理解,我們不管他資料結構什麼什麼知識,就拿樓房來說,假如一個人提問:樓房的高度有好高?我們會下意識的從底層開始往上數,假如樓有6層,則我們會說,這個樓有6層樓那

Openstack 網路部分概念整理

Openstack 概念 我剛聽說要去做 openstack 開發的時候,蠻激動的啊。雖然我不知道 openstack 是什麼東西,但是我知道這個東西和雲端計算有關。雲端計算這東西,聽著就高大上,各大網際網路公司都有投人進去搞,所以大方向上是必須肯

特徵值分解、奇異值分解、PCA概念整理

這裡V就是上面的右奇異向量,另外還有: 這裡的σ就是奇異值,u就是上面說的左奇異向量。【證明那個哥們也沒給】 奇異值σ跟特徵值類似,在矩陣Σ中也是從大到小排列,而且σ的減少特別的快,在很多情況下,前10%甚至1%的奇異值的和就佔了全部的奇異值之和的99%以上了。也就是說,我們也可以用前r( r

作業系統基礎概念整理

1、執行緒和程序 程序是計算機程式關於某資料集合的一次執行活動,是系統進行資源分配和系統排程的基本單位。程序是程式的實體 執行緒是程式執行流的最小單元,一個標準執行緒由執行緒ID,當前指令指標PC,暫存器集合,堆疊組成。另外,執行緒是程序的一個實體,是系統獨立排程和分配的

數字視訊相關概念整理

    這些內容,都是百度,google上整理來的,因為專案需要,給自己掃掃盲。。。 1.什麼是"幀"? 在最早的電影裡面,一幅靜止的影象被稱做一"幀(Frame)",影片裡的畫面是每一秒鐘有24幀,為什麼是24幀,這個數字是怎麼來的,因為人類眼睛的視覺暫留現象正好符合

微服務(Microservices)和服務網格(Service Mesh)架構概念整理

注:文章內容為摘錄性文字,自己閱讀的一些筆記,方便日後檢視。 微服務(Microservices) 在過去的 2016 年和 2017 年,微服務技術迅猛普及,和容器技術一起成為這兩年中最吸引眼球的技術熱點。而以 Spring Cloud 為代表的傳統侵入式開發框架,佔據著微服務市場的主流地位。 微服務(Mi

遞迴引發的jvm棧溢位的理解--堆和棧的概念整理

1、程式說明: 事 情是這樣的,使用者的需求是希望將某個路徑作為引數傳遞給工具,然後工具可以遍歷該目錄下的所有子目錄和檔案,將所有資料檔案進行解析轉換。對於這樣一個需 求,最常規的思路是做一個遞迴函式,遇到檔案時處理檔案,遇到目錄時則進行遞迴,這樣很快就可以把某個路徑下的所有子目錄和檔案都遍歷一遍,程式也會

關於Java中內部類的一些概念整理

    把一個類放到另一個類的內部定義,這個定義在其他類內部的類就被稱為內部類。     內部類的作用:     (1).內部類提供了更好的封裝,可以把內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類。     (2).內部類成員可以直接訪問外部類的私有資料,因為內

python 基礎概念整理

正則表示式中 字串前面加r,表示的意思是禁止字串轉義 >>> print "asfdas\n" asfdas >>> print "asfdas\\n" asfdas\n >>