Kubernetes最基本的組成部件是pod:單個容器或者聯系緊密的要一起調度到同一臺機器上的一組容器。pod是部署的基本單元并且代表的是一個服務實例。由于它是部署的單元,因此也是水平擴展(單元,在擴大或者縮小容量時,開發者就會增加或者移除pod。我們可以為market-data服務定義一組pod。在應用目錄下創建一個名稱為market-data- replica-set.yml的文件,不要擔心這是否有意義。
在文件中添加代碼清單。在Kubernetes中,我們一般用YAML文件向調度器聲明指令。這些指令定義了一些Kubernetes對象,而pod就是其中一種。這些配置文件代表了所期望的集群狀態。在將這些配置信息應用于Kubernetes后,調度器會持續工作來維持這一理想狀態。在本文件中,我們定義了一個ReplicaSet,這是一個用來管理一組pod的Kubernetes對象。為了將該文件應用于本地集群,我們可以使用kubectl命令行工具。
在啟動Minikube后,它應該會自動配置kubectl命令以操作集群。這個工具會和由集群主節點開放的API進行交互。Kubernetes會異步創建所定義的對象。我們可以使用kubectl來觀察操作進度。運行kubectl get pods命令會列出已經創建的pod。第一次啟動會耗費幾分鐘的時間,因為節點要下載Docker鏡像。讀者已經在前面看到了自己并沒有創建單獨的pod。直接創建或者銷毀pod都是不正常的;相反,pod是由控制器管理的。控制器負責接收某些期望的狀態然后執行一系列操作來達到這一狀態。這種觀測-比較-執行的循環會持續執行。
讀者已經見過了最常見的控制器類型:ReplicaSet。如果讀者曾經在AWS或者GCP上遇到過實例組,則會發現它們的功能是比較相似的。復制集的目標是確保在任何時間都有指定數量的pod處于運行狀態。比如,假設某個pod消失了——可能是集群中某個節點出現了故障——復制集會察覺到集群的當前狀態和期望狀態不一致,然后嘗試在集群的其他地方重新分配一個pod以進行替換。