kubernetes

kubernetes

kubernetes,簡稱K8s,是用8代替8個字元“ubernete”而成的縮寫。是一個開源的,用於管理雲平台中多個主機上的容器化的套用,Kubernetes的目標是讓部署容器化的套用簡單並且高效(powerful),Kubernetes提供了套用部署,規劃,更新,維護的一種機制。

傳統的套用部署方式是通過外掛程式或腳本來安裝套用。這樣做的缺點是套用的運行、配置、管理、所有生存周期將與當前作業系統綁定,這樣做並不利於套用的升級更新/回滾等操作,當然也可以通過創建虛擬機的方式來實現某些功能,但是虛擬機非常重,並不利於可移植性。

新的方式是通過部署容器方式實現,每個容器之間互相隔離,每個容器有自己的檔案系統 ,容器之間進程不會相互影響,能區分計算資源。相對於虛擬機,容器能快速部署,由於容器與底層設施、機器檔案系統解耦的,所以它能在不同雲、不同版本作業系統間進行遷移。

容器占用資源少、部署快,每個套用可以被打包成一個容器鏡像,每個套用與容器間成一對一關係也使容器有更大優勢,使用容器可以在build或release 的階段,為套用創建容器鏡像,因為每個套用不需要與其餘的套用堆疊組合,也不依賴於生產環境基礎結構,這使得從研發到測試、生產能提供一致環境。類似地,容器比虛擬機輕量、更“透明”,這更便於監控和管理。

Kubernetes概述,Kubernetes 特點,Kubernetes 組件,Master 組件,節點(Node)組件,

Kubernetes概述

Kubernetes是Google開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、套用容器化管理。在生產環境中部署一個應用程式時,通常要部署該套用的多個實例以便對套用請求進行負載均衡。
在Kubernetes中,我們可以創建多個容器,每個容器裡面運行一個套用實例,然後通過內置的負載均衡策略,實現對這一組套用實例的管理、發現、訪問,而這些細節都不需要運維人員去進行複雜的手工配置和處理。

Kubernetes 特點

  • 可移植: 支持公有雲,私有雲,混合雲,多重雲(multi-cloud)
  • 可擴展: 模組化,外掛程式化,可掛載,可組合
  • 自動化: 自動部署,自動重啟,自動複製,自動伸縮/擴展

Kubernetes 組件

  • 1Master 組件
  • 1.1kube-apiserver
  • 1.2ETCD
  • 1.3kube-controller-manager
  • 1.4cloud-controller-manager
  • 1.5kube-scheduler
  • 1.6外掛程式 addons
  • 1.6.1DNS
  • 1.6.2用戶界面
  • 1.6.3容器資源監測
  • 1.6.4Cluster-level Logging
2節點(Node)組件
  • 2.1kubelet
  • 2.2kube-proxy
  • 2.3docker
  • 2.4RKT
  • 2.5supervisord
  • 2.6fluentd
本文介紹了Kubernetes集群所需的各種二進制組件。

Master 組件

Master組件提供集群的管理控制中心。
Master組件可以在集群中任何節點上運行。但是為了簡單起見,通常在一台VM/機器上啟動所有Master組件,並且不會在此VM/機器上運行用戶容器。請參考構建高可用群集以來構建multi-master-VM。
kube-apiserver
kube-apiserver用於暴露Kubernetes API。任何的資源請求/調用操作都是通過kube-apiserver提供的接口進行。請參閱構建高可用群集。
ETCD
etcd是Kubernetes提供默認的存儲系統,保存所有集群數據,使用時需要為etcd數據提供備份計畫。
kube-controller-manager
kube-controller-manager運行管理控制器,它們是集群中處理常規任務的後台執行緒。邏輯上,每個控制器是一個單獨的進程,但為了降低複雜性,它們都被編譯成單個二進制檔案,並在單個進程中運行。
這些控制器包括:
  • 節點(Node)控制器。
  • 副本(Replication)控制器:負責維護系統中每個副本中的pod。
  • 端點(Endpoints)控制器:填充Endpoints對象(即連線Services&Pods)。
  • Service Account和Token控制器:為新的Namespace創建默認帳戶訪問API Token。
cloud-controller-manager
雲控制器管理器負責與底層雲提供商的平台互動。雲控制器管理器是Kubernetes版本1.6中引入的,目前還是Alpha的功能。
雲控制器管理器僅運行雲提供商特定的(controller loops)控制器循環。可以通過將--cloud-providerflag設定為external啟動kube-controller-manager ,來禁用控制器循環。
cloud-controller-manager 具體功能:
  • 節點(Node)控制器
  • 路由(Route)控制器
  • Service控制器
  • 卷(Volume)控制器
kube-scheduler
kube-scheduler監視新創建沒有分配到Node的Pod,為Pod選擇一個Node。
外掛程式 addons
外掛程式(addon)是實現集群pod和Services功能的。Pod由Deployments,ReplicationController等進行管理。Namespace 外掛程式對象是在kube-system Namespace中創建。
DNS
雖然不嚴格要求使用外掛程式,但Kubernetes集群都應該具有集群 DNS。
群集 DNS是一個DNS伺服器,能夠為 Kubernetes services提供 DNS記錄。
由Kubernetes啟動的容器自動將這個DNS伺服器包含在他們的DNS searches中。
用戶界面
kube-ui提供集群狀態基礎信息查看。
容器資源監測
容器資源監控提供一個UI瀏覽監控數據。
Cluster-level Logging
Cluster-level logging,負責保存容器日誌,搜尋/查看日誌。

節點(Node)組件

節點組件運行在Node,提供Kubernetes運行時環境,以及維護Pod。
kubelet
kubelet是主要的節點代理,它會監視已分配給節點的pod,具體功能:
  • 安裝Pod所需的volume。
  • 下載Pod的Secrets。
  • Pod中運行的 docker(或experimentally,rkt)容器。
  • 定期執行容器健康檢查。
  • Reports the status of the pod back to the rest of the system, by creating amirror podif necessary.
  • Reports the status of the node back to the rest of the system.
kube-proxy
kube-proxy通過在主機上維護網路規則並執行連線轉發來實現Kubernetes服務抽象。
docker
docker用於運行容器。
RKT
rkt運行容器,作為docker工具的替代方案。
supervisord
supervisord是一個輕量級的監控系統,用於保障kubelet和docker運行。
fluentd
fluentd是一個守護進程,可提供cluster-level logging.。

相關詞條

熱門詞條

聯絡我們