《 Kubernetes進階實戰》一2.1Kubernetes快速入門
第2章
Kubernetes快速入門
Kubernetes集群將所有節點上的資源都整合到一個大的虛擬資源池里,以代替一個個單獨的服務器,而后開放諸如CPU、內存和I/O這些基本資源用于運行其基本單元—Pod資源對象。Pod的容器中運行著隔離的任務單元,它們以Pod為原子單位,并根據其資源需求從虛擬資源池中為其動態分配資源。若可以將整個集群類比為一臺傳統的服務器,那么Kubernetes(Master)就好比是操作系統內核,其主要職責在于抽象資源并調度任務,而Pod資源對象就是那些運行于用戶空間中的進程。于是,傳統意義上的向單節點或集群直接部署、配置應用的模型日漸式微,取而代之的是向Kubernetes的API Server提交運行Pod對象。
API Server是負責接收并響應客戶端提交任務的接口,用戶可使用諸如CLI工具(如kubectl)、UI工具(如Dashboard)或程序代碼(客戶端開發庫)發起請求,其中,kubectl是最為常用的交互式命令行工具。快速了解Kubernetes的辦法之一就是部署一個測試集群,并嘗試測試使用它的各項基本功能。本章在簡單介紹核心資源對象后將嘗試使用kubectl創建Deployment和Service資源部署并暴露一個Web應用,以便讀者快速了解如何在Kubernetes系統上運行應用程序的核心任務。
2.1 Kubernetes的核心對象
API Server提供了RESTful風格的編程接口,其管理的資源是Kubernetes API中的端點,用于存儲某種API對象的集合,例如,內置Pod資源是包含了所有Pod對象的集合。資源對象是用于表現集群狀態的實體,常用于描述應于哪個節點進行容器化應用、需要為其配置什么資源以及應用程序的管理策略等,例如,重啟、升級及容錯機制。另外,一個對象也是一種“意向記錄”—一旦創建,Kubernetes就需要一直確保對象始終存在。Pod、Deployment和Service等都是最常用的核心對象。
2.1.1 Pod資源對象
Pod資源對象是一種集合了一到多個應用容器、存儲資源、專用IP及支撐容器運行的其他選項的邏輯組件,如圖2-1所示。換言之,Pod代表著Kubernetes的部署單元及原子運行單元,即一個應用程序的單一運行實例,它通常由共享資源且關系緊密的一個或多個應用容器組成。
Kubernetes的網絡模型要求其各Pod對象的IP地址位于同一網絡平面內(同一IP網段),各Pod之間可使用其IP地址直接進行通信,無論它們運行于集群內的哪個工作節點之上,這些Pod對象都像是運行于同一局域網中的多個主機。
讀者可以將每個Pod對象想象成一個邏輯主機,它類似于現實世界中的物理主機或VM(Virtual Machine),運行于同一個Pod對象中的多個進程也類似于物理機或VM上獨立運行的進程。不過,Pod對象中的各進程均運行于彼此隔離的容器中,并于各容器間共享兩種關鍵資源:網絡和存儲卷。
★ ? 網絡(networking):每個Pod對象都會被分配一個集群內專用的IP地址,也稱為Pod IP,同一Pod內部的所有容器共享Pod對象的Network和UTS名稱空間,其中包括主機名、IP地址和端口等。因此,這些容器間的通信可以基于本地回環接口lo進行,而與Pod外的其他組件的通信則需要使用Service資源對象的ClusterIP及其相應的端口完成。
★ ? 存儲卷(volume):用戶可以為Pod對象配置一組“存儲卷”資源,這些資源可以共享給其內部的所有容器使用,從而完成容器間數據的共享。存儲卷還可以確保在容器終止后被重啟,甚至是被刪除后也能確保數據不會丟失,從而保證了生命周期內的Pod對象數據的持久化存儲。
一個Pod對象代表某個應用程序的一個特定實例,如果需要擴展應用程序,則意味著為此應用程序同時創建多個Pod實例,每個實例均代表應用程序的一個運行的“副本”(replica)。這些副本化的Pod對象的創建和管理通常由另一組稱之為“控制器”(Controller)的對象實現,例如,Deployment控制器對象。
創建Pod時,還可以使用Pod Preset對象為Pod注入特定的信息,如Conf?igMap、Secret、存儲卷、卷掛載和環境變量等。有了Pod Preset對象,Pod模板的創建者就無須為每個模板顯式提供所有信息,因此,也就無須事先了解需要配置的每個應用的細節即可完成模板定義。這些內容將在后面的章節中予以介紹。
基于期望的目標狀態和各節點的資源可用性,Master會將Pod對象調度至某選定的工作節點運行,工作節點于指向的鏡像倉庫(image registry)下載鏡像,并于本地的容器運行時環境中啟動容器。Master會將整個集群的狀態保存于etcd中,并通過API Server共享給集群的各組件及客戶端。
容器 Kubernetes
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。