您好,登錄后才能下訂單哦!
Kubernetes是什么?
Kubernetes,簡稱K8s,是用8代替8個字符“ubernete”而成的縮寫。Kubernetes是Google開源的一個容器編排引擎,同時也是一個開源的容器集群管理系統,可以實現容器應用的自動化部署、自動擴縮容、監控和維護等功能。
Kubernetes最初源于谷歌內部的Borg,提供了面向應用的容器集群部署和管理系統。Kubernetes的目標旨在消除編排物理/虛擬計算、網絡和存儲基礎設施的負擔,并使應用程序運營商和開發人員完全將重點放在以容器為中心的原理上進行自助運營。
Kubernetes具備完善的集群管理能力,包括多層次的安全防護和準入機制、多租戶應用支撐能力、透明的服務注冊和服務發現機制、內建負載均衡器、故障發現和自我修復能力、服務滾動升級和在線擴容、可擴展的資源自動調度機制、多粒度的資源配額管理能力。
Borg是谷歌內部的大規模集群管理系統,負責對谷歌內部很多核心服務的調度和管理。Borg的目的是讓用戶能夠不必操心資源管理的問題,從而更專注于自己的核心業務。Borg甚至能做到跨多個數據中心的資源利用率最大化。
Kubernetes屬于主從分布式架構,主要由Master和Node組成,以及包括客戶端命令行工具kubectl和其它附加項。
Master:作為控制節點,對集群進行調度管理;由kube-apiserver、kube-scheduler、kube-controller-manager和etcd組成。
Node:作為工作節點,運行業務應用的容器;由kubelet、kube-proxy和docker(或者rocket)組成。
Master指的是集群控制節點,每個Kubernetes集群里需要有至少一個Master來負責集群的管理和控制。Master可以是一臺物理機,也可以是一臺虛擬機,Master節點上運行著以下組件:
kube-apiserver:提供了HTTP Rest接口的關鍵服務進程,是集群里所有資源的增、刪、改、查等操作的唯一入口,也是集群的控制入口。
kube-controller-manager:運行管理控制器,是集群中處理常規任務的后臺進程,每個Controller都負責一種具體的控制流程,而Controller Manager就是這些Controller的核心管理者。
kube-scheduler:負責資源調度(Pod調度)的進程,為新創建的Pod選擇一個Node節點。
etcd:是kubernetes默認的存儲系統,集群里所有資源對象的數據全部保存在etcd中。
Node指的是集群的工作節點,和Master一樣,可以是一臺物理主機,也可以是一臺虛擬機。每個Node都會被Master分配一些工作負載(Docker容器),當某個Node宕機時,其上的工作負載會被Master自動轉移到其他節點上去。Node上運行的組件如下:
kubelet:負責Pod對應的容器的創建、啟停等任務,同時與Master節點密切協作,實現集群管理的基本功能。
kube-proxy:實現Kubernetes Service的通信與負載均衡機制的重要組件。
docker:容器引擎,負責本機的容器創建和管理工作。
Deployment的典型使用場景有以下幾個:
創建一個Deployment對象來生成對應的ReplicaSet,并完成Pod副本的創建過程。
檢查Deployment的狀態來查看部署工作是否完成(Pod副本的數量是否達到預期的值)。
更新Deployment以創建新的Pod(比如鏡像升級)。
如果當前Deployment不穩定,則回滾到一個早先的Deployment版本。
掛起或者恢復一個Deployment。
StatefulSet的使用場景如下:
穩定性,唯一的網絡標識。
穩定性,持久化存儲。
有序的部署和擴展。
有序的刪除和終止。
有序的自動滾動更新。
上述這些組件都是Kubernetes系統的核心組件,它們共同構成了Kubernetes系統的框架和計算模型。通過對它們進行靈活組合,用戶就可以快速、方便地對容器集群進行配置、創建和管理。除了本文所介紹的核心組件,Kubernetes中還有許多輔助配置的資源對象,例如LimitRange、ResourceQuota等。另外,還有一些系統內部使用的對象,例如Binding、Event等可參考官方API文檔。
說在最后
本人也是剛接觸Kubernetes(K8s),本文內容是摘自相關書籍和網上的相關資料,并結合自己的理解所寫的,如有理解錯誤的地方還請大家不吝指出,共同進步。
由于國內關于Kubernetes的學習資料很少,51cto上倒是有相關的訂閱專欄,但都是要錢的,對于這個我不做評論。這里向跟我一樣的初學者推薦一本書《Kubernetes權威指南(第2版)》,網上可以下載到PDF版本,雖然這本書講的Kubernetes的版本是1.3的,版本比較老,但對于初學者可以學習它的理論知識,并結合網上新版本的相關資料自行理解,也是一種非常不錯的學習方法。
對Kubernetes(K8s)有興趣的朋友,可以關注我的博客,后面我會繼續發表學習Kubernetes的博文,歡迎各位朋友和我一起踏上Kubernetes(K8s)的旅程。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。