學習前置
docker、基本的網路概念、運行服務。
演進
傳統 -> 虛擬化 -> 容器化
而容器化已將資源充分的運用,但還是難免會有故障排除,就還是需要有手動介入重啟,這時候就可以搭配K8S去將其排解
K8S 是什麼東西?
- 服務發現 和 Load Balancing - K8S 可以Load Balancing 均衡分配網路使部署穩定
- 存儲編排 - 可使用雲 Storage 或本地 Storage
- 自動部署和回滾 - 自動化部署 container
- 自動完成裝箱計算 - 指定每個 Container 所需 CPU 和 RAM
- 自我修復 - 將錯誤的 Container 刪除且重啟
- 密鑰與配置管理 - 將 ssh 密鑰管理的功能
K8S 不是什麼東西
並非 全能的 Paas(平台及服務),由於 K8S 在 Container Lavel 而非 Hardware Lavel運行,它提供了 PaaS 產品有的一些普遍適用的功能, 例如 部署、擴展、負載均衡、日誌記錄和監視
K8S 不是單體系統,默認方案都是 可選的。
K8S 提供了構建開發人員平台的基礎,但是在重要的地方保留了用戶的選擇和靈活性
環境介紹
- Client (Control Plane) : 操作Server (kubectl)
- Server : Server Master 主機
Control Plane 組件
kube-apiserver
一台 API Server for k8s 操作
etcd
一台 高可用的 key-value 的 DB 來儲存 k8s cluster 的數據Data
kube-scheduler
監控 Node 有無正確運行的 Pod,選取 Node 將其運行
kube-controller-manager
Control Plane 控制及進行每個 Process,邏輯上每個 controller-manager 都是單獨 Process 都被編譯成二進制,並在一個 Process 中運行
cloud-controller-manager
與 kube-controller-manager 類似,controller-manager 將你的 cluster 連接到 Cloud Provider 的 API 之上
Node 組件
kubelet
在 cluster 中的每個 Node 上運行的代理。它確保 container 在 Pod 中運行
kube-proxy
kube-proxy 是一個網絡 proxy,運行在 cluster 中的每個 Node 上
Container runtime
container 運行時 是負責運行 container 的工具,支援多種運行container的方式:Docker
, containerd
, CRI-O
Node 構造介紹
- Node - 節點
- Pod - 包括所有 container 相關的資源
- volume - 卷,將其資料對等Storage使用
- containerzied app - 開發工程師的容器化 app
- node process - 就是上方介紹的 kubelet
操作環境 osx mac
基本安裝
簡單來說就是你可以直接在 Docker.app 直接安裝 K8S
- Enable Kubernetes 勾選然後按下 Apply
等待安裝完成即可使用 本地 Node 數量 1
結語:
在本地學倒是真的蠻多誤解的,但是可以練習下kubectl
指令 和 撰寫.yaml
檔案,之後會介紹在本地模擬網路環境。
接下來的幾篇示範 container 會是以 docker 作為最常使用的方式。