Stan Blog

學習過程中的一些記錄

[k8s] Kubernetes 基礎元件筆記

Kubernetes(又稱 K8S)是一種 Container Manager (容器管理平台),使我們可以自動化部署及管理多台機器上的 Container

使用 K8S 的優點:

  1. Self-healing 當 container 發生故障,可依部署定義的需求,自我修復容器 例如,重新啟動失敗的 container 或開啟新的 container 取代舊 container

  2. Dynamic sacling 根據部署定義的需求,可依流量進行 Auto Scaling

  3. Rolling updates 可以很容易的批次更新 container 版本、rollback 回之前版本

K8S 基礎元件

K8s 裡的元件由大至小是 Cluster、Master Node (Master)、Worker Node (Node)、Pod

Cluster

至少包含一個 Master Node 及一或多個 Worker Node

Master Node

負責指揮所有 Worker Node 每個 Master Node 裡有四個組件

* kube-apiserver
管理整個 K8S 所需的 API endpoint,如: kubectl
* etcd
用來存放 Kubernetes Cluster 內所有物件的目前狀態及其預期狀態
* kube-scheduler
負責整個 K8S 的 Pods 調度,分配最適合的 Node 來執行 Container
* kube-controller-manager
負責監看 Cluster 的狀態
Controller 會與 API Server 通訊,以判斷 Cluster 的狀態。如果目前狀態與預期狀態不同,Controller 就會採取行動以確保獲得預期狀態

Worker Node

K8S 運行的最小硬體單位,一個 Worker Node 對應到一台機器 每個 Worker Node 裡有三個組件

* kubelet
Node 的管理員,負責管理該 Node 上的所有 Pods 的狀態並負責與 Master 溝通
* kube-proxy
負責確保每個 Node 都有唯一的 IP 位址
* Container Runtime
Node 負責容器執行的程式,如:Docker Container 其對應的 Container Runtime 就是 Docker Engine

Pod

K8S 運行的最小單位,通常一個 Pod 對應到一個應用服務(Application) 使用 YAML 檔進行設定管理

K8S 進階元件

Service

Kubernetes 中用來定義「一群 Pod 要如何被連線及存取」的元件

Deployment

負責 Pod 橫向擴展,並監控如有 Pod 當機就重新啟動

Ingress

可以透過 HTTP/HTTPS,在我們眾多的 Service 前搭建一個 reverse-proxy


Ref:

Comments

comments powered by Disqus