<aside>
👉 Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.
</aside>
Production-Grade Container Orchestration
Kubectl Reference Docs
序言
Kubernetes 基礎教學(一)原理介紹
Kubernetes 基礎教學(二)實作範例:Pod、Service、Deployment、Ingress
小信豬的原始部落
Kubernetes Core Components
Master Node (Control Plane)
https://kubernetes.io/docs/concepts/overview/components/#control-plane-components
etcd
etcd
- 用來存放 Kubernetes Cluster 的資料作為備份,當 Master 因為某些原因而故障時,我們可以透過 etcd 幫我們還原 Kubernetes 的狀態
- Service discovery and stores cluster state and configuration
kube-apiserver
- 管理整個 Kubernetes 所需 API 的接口(Endpoint),例如從 Command Line 下 kubectl 指令就會把指令送到這裡
- 負責 Node 之間的溝通橋樑,每個 Node 彼此不能直接溝通,必須要透過 apiserver 轉介
- 負責 Kubernetes 中的請求的身份認證與授權
kube-scheduler
kube-scheduler
kube-controller-manager
- 負責管理並運行 Kubernetes controller 的組件
- 透過 kube-apiserver 監控 Cluster 的狀態,確保 Cluster 處於预期的工作狀態
- 包含:
- Replication Controller
- Node Controller
- CronJob Controller
- Daemon Controller
- Deployment Controller
- ....
cloud-controller-manager
- 在 Kubernetes 啟用 Cloud Provider 的时候才需要,用来配合雲服務提供商的控制
- 包含:
- Node Controller
- Route Controller
- Service Controller
- ...
https://medium.com/@C.W.Hu/kubernetes-basic-concept-tutorial-e033e3504ec0

Kubernetes Nodes 架構

Worker Node
https://kubernetes.io/docs/concepts/overview/components/#node-components
- Kubernetes 運作的最小硬體單位,一個 Worker Node(簡稱 Node)對應到一台機器,可以是實體機如你的筆電、或是虛擬機如 AWS 上的一台 EC2 或 GCP 上的一台 Computer Engine。
- 一個 Node 裡面可能有很多個 Pods
每一個 Node 都會有以下元件:
kubelet
該 Node 的管理員,負責管理該 Node 上的所有 Pods 的狀態並負責與 Master 溝通
kube-proxy
該 Node 的傳訊員,負責更新 Node 的 iptables,讓 Kubernetes 中不在該 Node 的其他物件可以得知該 Node 上所有 Pods 的最新狀態
container runtime
該 Node 真正負責容器執行的程式,以 Docker 容器為例其對應的 Container Runtime 就是 Docker Engine
Kubernetes Resources
Pod
Pod