第二周:介紹Kubernetes

第二周:介紹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]

Comments

Loading comments…

Leave a Comment