跳至內容

Kubernetes

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

Kubernetes(定簡稱做K 八 s)是用著自動部署、擴充佮管理「容器化(containerized)應用程式」的開源系統。該系統由 Google 設計並捐贈予 Cloud Native Computing Foundation(今屬 Linux 基金會)來使用。

伊旨咧提供「跨主機密集的自動部署、擴充猶閣有執行應用程式容器的平台」。 伊支援一系列容器工具,包括講 Docker 等。

歷史

Kubernetes(咧希臘語意為「舵手」抑是「駕駛員」)由 Joe Beda、Brendan Burns 和 Craig McLuckie 創立,並且由其他 Google 工程師,包括講 Brian Grant 和 Tim Hockin 等進行加盟創作,並由 Google 佇咧二空一四年頭一改對外宣布。該系統的開發佮設計攏誠深 Google 的 Borg 系統的影響,其實真濟頂司貢獻者進前嘛是 Borg 系統的開發者。佇咧 Google 內部,Kubernetes 的原始代號曾經是 Seven,即星際迷航中的 Borg(博格人)。 Kubernetes 標識中舵輪有七个輪輻就是對這个專案代號的致意。

Kubernetes v 一鋪排佇二空一五年七月二一釋出。隨著 v 一孵空版本釋出,Google 佮 Linux 基金會合作組建了 Cloud Native Computing Foundation(CNCF)並將 Kubernetes 做種子技術來提供。

Rancher Labs 佇咧其 Rancher 容器管理平台中包含著 Kubernetes 的釋出版。Kubernetes 嘛佇足濟其他公司的產品內底用,比如講 Red Hat 的 OpenShift,CoreOS 的 Tectonic,IBM 的 IBM 私有雲產品,, 精靈雲的 EcOS,KubeSphere,以及 VMware 的 PKS 等咧。

啊若到這馬資訊界定定看著的縮寫手法「K 八 s」著是將「ubernete」八字母縮寫為「八」來來。

設計的

Kubernetes 佇設計結構頂定義一系列的構建模組,其目的是欲為著提供一个會當共同提供部署、維護佮擴充應用程式的機制。組成 Kubernetes 的組件設計概念是鬆幫贊佮會當延伸的,按呢會使得滿足濟種無仝的工課負載。會當延伸性佇足大的程度通上由 Kubernetes API 提供,此 API 主要予人成做擴充的內部組件佮 Kubernetes 上執行的容器來使用。

Pod

Kubernetes 的基本排程單元稱做「pod」。 通過這種抽象類別會使共更進階別的抽象內容增加到容器化組件。一个 pod 一般包含一个抑是多个容器,按呢會當保證𪜶一直位佇主機頂,並且會當共享資源。Kubernetes 中的每一个 pod 攏予人分配一个唯一的(佇樹仔內底的)IP 位址按呢就會當允准應用程式使用仝一埠頭,避免發生衝突的問題。Pod 會當定義一个卷,比如講本地磁碟 kha-tá-lok-guh 抑是網路磁碟,閣將其暴露佇咧 pod 中間的一个容器內底。。 pod 會當通過 Kubernetes API 手動管理,嘛會當委託予控制台來實現自動管理。

標籤佮選擇器

Kubernetes 使客戶捀(使用者是內部組件)共這號做「標籤」的鍵值對附加去系統內底的任何 API 東西,如 pod 佮節點。相應的喔,「 標籤選擇器」是針對匹配物件的標籤的查詢方法。

標籤佮選擇器是 Kubernetes 中的主要分組機制,確定操作適用的組件。

比如講,若應用程式的 Pods 有系統的標籤 ` tier ` ( 比如講 " ` front-end ` "、" ` back-end ` " ) 佮一个 ` release _ track ` ( 比如講 " ` canary ` "、" ` production ` " ),遐爾對所有 " ` back-end ` " 和 " ` canary ` " 儉點仔操作會使使用如下所示的標籤選擇器:

> ` tier=back-end AND release _ track=canary ` > >

控制器

控制器是通過管理一組 pod 來實現來共實際密集態轉移到所需要密集態的對數迴圈機制。一種控制器指出來是一組具有仝款特徵的「複製控制器」,控制器通過佇樹集中執行指定數量的 pod 副本來處理複製佮縮放。佇基礎節點出現故障的情形下,伊閣會當用佇處理建立替換 pod。其他控制器嘛是核心 Kubernetes 系統的一部份,包括講「DaemonSet 控制器」為每台機器(抑是機器的一寡子集)上執行的單個 pod,佮用佇執行 pod 的「作業控制器」。 控制器管理的 pod 組由作為控制器定義的部分的標籤選擇器來確定。

服務

Kubernetes 服務本質是一組協同工作的 pod,類似幾若層架構應用的一層。構成服務的 pod 組通過標籤選擇器來定義。Kubernetes 通過予服務分配靜態 IP 位址佮域名來提供服務發現機制,而且用輪循排程的方式共流量負載均衡到能佮選擇器匹配的 pod 的 IP 位址的網路連接著(就算是故障致使著 pod 對一台機器徙振動到另外一台機器)。 預設的情況下,服務任務會暴露佇樹集中(比如講,多個後端 pod 可能去予人分組一个服務,前端 pod 的請求佇𪜶之間負載平衡); 除了這以外,服務任務嘛會當暴露佇樹集外部(比如講,對客戶捀的頭前捀 pod)。

建構

Kubernetes 遵照主對式架構設計。Kubernetes 的組件會當分做管理單的 node 組件佮控制平面的部份的組件。

Kubernetes Master 是誠密集的主要控制單元,其用佇咧管理其工課負載閣指導規个系統的通批。Kubernetes 控制平面由各自的行程群組成,逐个組件攏會使佇單個主節點頂懸執行,嘛會當佇支援懸可用性誠濟主節點上執行。是 Kubernetes 控制平面的各種組件如下:

etcd

etcd是由 CoreOS 開發,用佇會當靠地儲存密集的組態資料的一種永續性,輕量型的,散式的鍵-值資料儲存組件。這个組件會當表示佇任何常時間點處的密集的整體狀態。其他組件佇咧注意著儲存的變化了後,會變成相應的狀態。

API 侍服器

API 侍服器是一个關鍵組件並使用 Kubernetes API 和 JSON over HTTP 來提供矣 Kubernetes 內部佮外部介面。API 侍服器處理佮驗證 REST 請求並更新 API 物件的狀態 etcd,從來允准客戶捀佇咧 Worker 節點之間組態工課負載和容器。

排程器

T 排程式是會當插拔式組件,其實對資源可用性來選擇未排程的 pod(由排程式管理的基本實體)應該執行佗一个節點。排程式佮每一个節點上的資源利用率,確保工課負載袂超過可用資源。為此,排程式就愛知影資源需求,資源通用性佮各種其他使用者提供的約束和策略指令,譬如講服務品質,親和力 / 反關聯性要求,資料位置遮。實質上,排程式的作用是將資源「供應」佮工課負載「需求」相匹配以維持系統的穩定佮可靠。

控制器管理

控制器管理器是核心 Kubernetes 控制器,其包括 DaemonSet 控制器佮複製控制器等等。這控制台灣就是 API 侍服器進行通信以佇需要的時陣建立,更新佮刪除𪜶管理的資源(pod,侍服器捀點等)

Kubernetes 節點

Node 嘛叫做 Worker 抑是 Minion,是部署容器(工課負載)的單機器(抑是虛擬機器)。 密集中的逐个點間攏著愛有備容器的執行環境(runtime)——比如講 Docker,以及下跤講著的其他組件,通便佮遮的容器的網路組態進行通信。

Kubelet

Kubelet 負責逐个節點的執行狀態(即確保節點上的所有容器攏正常執行)。 伊按控制面枋的指示來處理啟動,停止佮維護應用程式容器(揤組織到 pod 中)。

Kubelet 會監視 pod 的狀態,若無所在需要狀態,著 pod 將被重新部署到仝一个節點。節點狀態便隔幾秒就會傳遞訊息到中繼主機。主控器檢測著儉點故障了後,複製控制器會觀察這个狀態更改,並佇其他的健康節點內底啟動 pod。

容器

容器對屬於 pod。咧執行應用、庫佮其他的微服務當中,容器是上低層級的。通過結一个外部 IP,容器會使予外網的存取去。

Kube 代理

Kube 代理是網路代理佮負載均衡的實現,支援服務抽象佮其他網路操作。根據傳入請求的 IP 佮埠頭,該組件會將流量轉發到指定的合適的容器內底。

cAdvisor

cAdvisor 是監視佮收集譬如講每一个節點上的容器的 CPU,記持體,檔案佮網路使用情況遮的資源使用情況佮效能指標的代理組件。

參見

  • Kubectl

參考文獻

外部連結

  • 官方網站
  • GitHub 上的 kubernetes 頁面
  • Kubernetes(K 八 s)是啥物?基礎介紹 + 三大優點解析