天天看點

Kubernetes - 1 入門介紹

什麼是Kubernetes

Kubernetes這個名字起源于希臘語,意思是舵手,由于k到s之間有8個字元又簡稱k8s。Google在2014年開源了Kubernetes項目,基于容器技術的分布式管理系統,在Docker技術的基礎上,為容器化的應用提供部署運作、資源排程、服務發現和動态伸縮等一系列完整功能,提高了大規模容器叢集管理的便捷性。

為什麼要使用Kubernetes

  1. 輕量:與使用VM虛拟機相比,容器鏡像建立的簡便性和效率更高。
  2. 靈活:持續內建和部署,通過快速的更新或復原,提供可靠且頻繁的容器映像建構和部署。
  3. 分離:在建構時建立鏡像,不依賴釋出環境,将運作環境及基礎架構分離。
  4. 一緻:開發環境、測試環境、生産環境的運作環境一緻性。
  5. 移植:不依賴基礎架構,可在不同的平台上快速應用。
  6. 隔離:通過NameSpace實作不同環境中、不同租戶的資源隔離。
  7. 解耦:應用程式被分解成較小的獨立部分,而不是整體在一台單機上運作。
  8. 伸縮:可将應用基于資源使用率等進行快速的動态伸縮。
  9. 效率:高密度及高效率的資源使用率。

Kubernetes架構

Kubernetes - 1 入門介紹

Kubernetes叢集中有2種角色,一個是Master作為叢集的管理節點,負責管理叢集,提供叢集的資源資料通路入口,另外一個是Node用來承載被配置設定Pod的運作,是Pod運作的主控端。

Kubernetes Master

apiserver 提供了資源操作的唯一入口,并提供認證、授權、通路控制、API 注冊和發現等機制

controller manager 負責維護叢集的狀态,比如故障檢測、自動擴充、滾動更新等

scheduler 負責資源的排程,按照預定的排程政策将 Pod 排程到相應的機器上

etcd 儲存了整個叢集的狀态

Kubernetes Node

kubelet 負責維護容器的生命周期,同時也負責 Volume和 Network 的管理

Container runtime 負責鏡像管理以及 Pod 和容器的真正運作時

kube-proxy 負責為 Service 提供 cluster 内部的服務發現和負載均衡

除了核心元件之外的其他元件

kube-dns 負責為整個叢集提供 DNS 服務

Ingress Controller 為服務提供外網入口

Heapster 提供資源監控

Dashboard 提供 GUI

Federation 提供跨可用區的叢集

Fluentd-elasticsearch 提供叢集日志采集、存儲與查詢

Kubernetes資源和對象

Kubernetes把所有内容都抽象為資源,把資源執行個體化出來後稱為對象。

  1. workload: 工作負載相關

    Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob, ReplicationController

  2. service discover and balance: 服務發現及均衡相關

    Service, Ingress

  3. config and storage: 配置及存儲相關

    ConfigMap, Secret, Volumn, CSI

  4. cluster resouce: 叢集級資源

    Namespace, Node, Role, ClusterRole, RoleBinding, ClusterRoleBinding

  5. metadata resource: 中繼資料級資源

    HPA, PodTemplate, LimitRange