iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 21
0
Software Development

Go Distributed & Go Consistently系列 第 21

Day21 Kubernetes (Pods & Services)

昨天我們認識了 kubernetes 基礎架構,由 Cluster, Master Node, Worker Nodes 構成。今天我們要來了解一下 Node 裏實際最小工作單位 Pod,以及用來訪問隨著 Master 調度可能改變 ip address 的 Service。

Pod

Pod 是 Kubernetes 下最小工作單位,分布在不同的 Nodes 中,由 Master 管理與調度。

  • 每一 Pod 都為獨立實體,有獨立的虛擬 ip address、獨站部分實體資源
  • 每一個 Pod 裡面可以運行多個 containers,裡面的 containers 共享該 Pod 的資源
  • Pod 內 containers 共享同一個 pod ip address

containers volume

因 containers 共享該 Pod 的資源,因此一般來說一個 Pod 在實務上,僅會放入一個 app container (常見多容器情境:filebeat, istio)。不論是 container-to-container 或是 pod-to-pod,要交換資料都可以透過兩裝方式進行,網路或掛載實體。

pods volume

負責調度 pods 的機制為 controller,在 nodes 間調度並且依據 deployment 的描述,利用 API Server 監控 pod 的運行狀況,若 pod 因資源不足或程式崩壞,而導致 pod 數量低於指定數量,controller 會負責重啟的動作。

Service

Kubernetes 的 Service 是用來控制 pods 對外溝通的接口,這是由 Pods 會被 Master 在不同 Node 間調度,導致 Pods ip address 更換,Service 接口因應而生。且 Service 提供 LoadBalancer,協助外部請求在 Pods 間進行負載平衡。

k8s service

幾種不同的 Service type

  • ClusterIP : 於 cluster 內公開 ip address,僅可在 cluster 內使用
  • NodePort : 在 Node 上特定 ports expose 服務
  • LoadBalancer : Expose 服務,並且會自動於 ClusterIP 與 NodePort 註冊
  • ExternalName : 僅建立外部服務名稱 mapping

Service 提供的抽象方法來暴露出我們的服務,並且實現了我們最在意的負載平衡機制,透過 labels 我們可以輕鬆的將我們的 app Pods 結合 Service,控制 app 暴露的程度。

下一篇我們會介紹用來建立 Pods 的 .yaml描述檔,並且在本機建立一個微型的 minikube,方便我們進行練習與測試。


上一篇
Day20 Kubernetes (Cluster Architecture)
下一篇
Day22 Kubernetes (Minikube & Deployment)
系列文
Go Distributed & Go Consistently30

尚未有邦友留言

立即登入留言