Can you summarize the following document?
        
  Kubernetes(在希臘語意為“舵手”或“駕駛員”)由Joe Beda、Brendan Burns和Craig McLuckie創立,並由其他谷歌工程師,包括Brian Grant和Tim Hockin等進行加盟創作,並由谷歌在2014年首次對外宣佈 。 該系統的開發和設計都深受谷歌的Borg系統的影響,其許多頂級貢獻者之前也是Borg系統的開發者。在谷歌內部,Kubernetes的原始代號曾經是Seven,即星際迷航中的Borg(博格人)。Kubernetes標識中舵輪有七個輪輻就是對該專案代號的致意。  Kubernetes v1.0於2015年7月21日釋出。 隨著v1.0版本釋出,谷歌與Linux 基金會合作組建了Cloud Native Computing Foundation(CNCF)並將Kubernetes作為種子技術來提供。  Rancher Labs在其Rancher容器管理平臺中包含了Kubernetes的釋出版。Kubernetes也在很多其他公司的產品中被使用,例如Red Hat的OpenShift, CoreOS的Tectonic, IBM的IBM私有云產品,,精靈雲的EcOS,以及 VMware的PKS等等。

  Kubernetes在設計結構上定義了一系列的構建模組,其目的是為了提供一個可以共同提供部署、維護和擴充套件應用程式的機制。組成Kubernetes的元件設計概念為鬆耦合和可擴充套件的,這樣可以使之滿足多種不同的工作負載。可擴充套件性在很大程度上由Kubernetes API提供,此API主要被作為擴充套件的內部元件以及Kubernetes上執行的容器來使用。

  Kubernetes的基本排程單元稱為“pod”。通過該種抽象類別可以把更高階別的抽象內容增加到容器化元件。一個pod一般包含一個或多個容器,這樣可以保證它們一直位於主機上,並且可以共享資源。Kubernetes中的每個pod都被分配一個唯一的(在叢集內的)IP地址這樣就可以允許應用程式使用同一埠,而避免了發生衝突的問題。 Pod可以定義一個卷,例如本地磁碟目錄或網路磁碟,並將其暴露在pod中的一個容器之中。。pod可以通過Kubernetes API手動管理,也可以委託給控制器來實現自動管理。

  Kubernetes使客戶端(使用者或內部元件)將稱為“標籤”的鍵值對附加到系統中的任何API物件,如pod和節點。相應地,“標籤選擇器”是針對匹配物件的標籤的查詢方法。  標籤和選擇器是Kubernetes中的主要分組機制,用於確定操作適用的元件。  例如,如果應用程式的Pods具有系統的標籤 codice_1 (比如"codice_2"、"codice_3") 和一個 codice_4 (比如"codice_5"、"codice_6"),那麼對所有"codice_3" 和 "codice_5" 節點的操作可以使用如下所示的標籤選擇器: codice_9

  控制器是通過管理一組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控制平面由各自的程序組成,每個元件都可以在單個主節點上執行,也可以在支援high-availability clusters的多個主節點上執行。是Kubernetes控制平面的各種元件如下:

  etcd 是由CoreOS開發,用於可靠地儲存叢集的配置資料的一種永續性,輕量型的,分散式的鍵-值資料儲存元件。該元件可表示在任何給定時間點處的叢集的整體狀態。其他元件在注意到儲存的變化之後,會變成相應的狀態。

  API伺服器是一個關鍵元件 並使用 Kubernetes API 和 JSON over HTTP來提供了Kubernetes的內部和外部介面。 API伺服器處理和驗證 REST請求並更新 API 物件的狀態etcd,從而允許客戶端在Worker節點之間配置工作負載和容器。

  T排程程式是可插拔式元件,其基於資源可用性來選擇未排程的pod(由排程程式管理的基本實體)應該執行哪個節點。排程程式跟蹤每個節點上的資源利用率,以確保工作負載不會超過可用資源。為此,排程程式必須知道資源需求,資源可用性以及各種其他使用者提供的約束和策略指令,例如服務質量,親和力/反關聯性要求,資料位置等。實質上,排程程式的作用是將資源“供應”與工作負載“需求”相匹配以維持系統的穩定和可靠。

  控制器管理器是核心Kubernetes控制器,其包括DaemonSet控制器和複製控制器等。該控制器可與API伺服器進行通訊以在需要時建立,更新和刪除他們管理的資源(pod,服務端點等)

  Node也稱為Worker或Minion,是部署容器(工作負載)的單機器(或虛擬機器)。叢集中的每個節點都必須具備容器的執行環境(runtime) ——比如 Docker,以及下面提到的其他元件,以便與這些容器的網路配置進行通訊。

  Kubelet負責每個節點的執行狀態(即確保節點上的所有容器都正常執行)。它按照控制面板的指示來處理啟動,停止和維護應用程式容器(按組織到pod中)。  Kubelet會監視pod的狀態,如果不處於所需狀態,則pod將被重新部署到同一個節點。節點狀態每隔幾秒就會傳遞訊息至中繼主機。主控器檢測到節點故障後,複製控制器將觀察此狀態更改,並在其他健康節點上啟動pod。

  容器從屬於pod。在執行應用、庫及其依賴的微服務中,容器是最低層級的。通過繫結一個外部IP,容器可以被外網訪問。

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

  cAdvisor 是監視和收集例如每個節點上的容器的CPU,記憶體,檔案和網路使用情況等的資源使用情況和效能指標的代理元件。
Kubernetes(常簡稱為K8s)是用於自動部署、擴充套件和管理「容器化(containerized)應用程式」的開源系統。該系統由Google設計並捐贈給Cloud Native Computing Foundation(今屬Linux基金會)來使用。