iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
0
Software Development

Go Distributed & Go Consistently系列 第 20

Day20 Kubernetes (Cluster Architecture)

今天介紹一下以 golang 為主編程語言,建立當前最知名的容器管理服務 — Kubernetes。我們在上一篇已經簡單的敘述過,服務是如何演進成分散式服務,而微服務又是如何因應分散式服務而產生,今天的我們會介紹 Kubernetes 的運作架構,以及關於 Kubernetes 幾個關鍵名詞解釋,Here we go。

k8s-golang

Cluster

When you deploy Kubernetes, you get a cluster.

當我們實作出 Kubernetes 的部署時,我們其實是實體化了一個 cluster 環境,上面利用網路將 Kubernetes Master Node 與 Worker Nodes 連結起來。Master Node 管理數個 Worker Nodes,Worker Node 管理數個 Pods,故稱之為 cluster。

components-of-kubernetes

Control Plane Components

控制總管,亦稱之為 Master,負責管理 health check 與資源調度等總體控管。從官方架構圖可以看出,涵蓋了 API Server、controller-manager、scheduler、etcd 功能。Control Plane 隨然可以架在叢集的任一節點上,但實務上為了方便管理通常會固定在同一台機器上,並且該機器是不會去運行其他服務容器的。

簡單介紹一下 Control Plane 幾個組件的主要功能

  • kube-apiserver : Node 間溝通用管道
  • etcd : Master 備份與還原機制
  • kube-scheduler : Pods 調度管理機制,決定 Pods 應該在哪一個 Node 上運行
  • kube-controller-manager : 用以管理不同的 controller process,而這些 process 分別監控 Nodes、Pods的數量與登入 token 等等。

Node Components

工作節點,上面運行了許多 Pods,是 kubernetes 的最小工作單位。Node 會依據 Control Plane 的調度來配置 Node 上的資源,包含了 Pods 的數量增減與,services 網路規則變更等等。組件涵蓋 kubelet、kube-proxy、container engine 等。

簡單介紹一下 Node 幾個組件的主要功能

  • kubelet : 監控該 Node 上的 Pods 資訊,且為與 Control Plane 溝通的對象
  • kube-proxy : 更新 Node 的 ip table 為 Node 的網路窗口,實作了部分 Kubernetes Service 的概念
  • Container runtime : 實際運行容器的監控程序,一般使用 Docker 容器的話便是 Docker Engine

上一篇
Day19 Distributed Micoservices
下一篇
Day21 Kubernetes (Pods & Services)
系列文
Go Distributed & Go Consistently30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言