第二周:介紹Kubernetes
第二周:介紹Kubernetes
上一篇介紹甚麼是Container跟Docker,當容器(container)隨時間越來越多時,之間的交互會變得更加複雜,這時候就需要一個自動化流程來處理不同容器間的關係。
Container Orchestration 通常包含以下幾個方面:
- Deployment(建置)
- Management(管理)
- Scaling(規模化)
- Networking(網絡規劃)
-
Availability(有效性)
元件: -
Configuration files:通常為JSON或YAML檔案,裡面會包含資源位置、網絡配置、日誌等。
- Deployment scheduling:自動化排程容器,找到合適的主機。
- Manages container lifecycle:規劃相關參數,管理容器的生命週期。
- Scaling and productivity:維護性和生產力。
比較有名的軟體有Google的Kubernetes,以及Docker Swarm。
Kubernetes的主要概念
- Pods and Workloads:Pods是可部署對象的最小單位。
- Services:一系列運行的Pods可以組成Services。
- Storage:支援永久和暫時性的存儲。
- Configuration:用來調節Pods的資源。
- Security:安排API和網絡等安全措施。
- Policies:用來安排資源,讓Kubernetes知道如何運行Pods。
- Schedule:運行或停止某些資源匱乏的Pods。
- Preemption:規劃優先級,讓高優先級的Pods先運行。
- Administration:管理Kubernetes集群的細節。
架構
開發者可以透過UI或CLI控制Kubernetes控制平面(K8s Control Plane),其中包含:
- Kube-api server:Kubernetes的前端,總規劃控制其他對象。
- Etcd:負責保存配置資料、狀態或元數據。
- Kube-scheduler:依照配置、排程和資源來安排節點。
- Kube-controller manager:運行監控集群狀況的控制器。
- Cloud-controller manager:處理與其他雲提供商的溝通和API。
Nodes
Kubernetes的工作機器,其中包含:
- Pod:最小運作單元,可以包含多個容器。
- Kubelet:負責與Kube-api server溝通,維持狀態。
- Container runtime:負責下載映像並運行容器,較有名的為Docker。
- Kube-proxy:負責與Pods溝通網絡條件。
Objects
Kubernetes主要有兩種對象,Object spec由使用者規劃出規格,Status由Kubernetes記錄狀態。Pods有幾種種類:
- Pods:一個或多個容器。
- Replicaset(副本集):可以規定有多少個副本可以運行,讓Kubernetes去停止其他Pods。
- Deployment:可以運行多個副本。
Kubectl
Kubernetes的命令行介面(CLI),可以讓使用者檢查資源、查看日誌。主要有三種類型:
- Imperative commands:運行類的命令。
- Imperative object configuration:透過YAML或JSON確保配置一致。
- Declarative object configuration:由Kubernetes自動生成,確保配置維持。
基本架構為:
kubectl [command] [type] [name] [flags]
- Command:要執行的操作(create/get/apply/delete)。
- Type:資源類型,例如pod, deployment, replicaset。
- Name:資源名稱(如果有)。
- Flags:其他要修改的參數。
課程來源為IBM的Introduction to Containers w/ Docker, Kubernetes & OpenShift
Comments
Loading comments…
Leave a Comment