kubernetes

kubernetes

kubernetes,簡稱K8s,是用8代替8個字元“ubernete”而成的縮寫。是一個開源的,用於管理雲平台中多個主機上的容器化的套用,Kubernetes的目標是讓部署容器化的套用簡單並且高效(powerful),Kubernetes提供了套用部署,規劃,更新,維護的一種機制。 傳統的套用部署方式是通過外掛程式或腳本來安裝套用。這樣做的缺點是套用的運行、配置、管理、所有生存周期將與當前作業系統綁定,這樣做並不利於套用的升級更新/回滾等操作,當然也可以通過創建虛擬機的方式來實現某些功能,但是虛擬機非常重,並不利於可移植性。 新的方式是通過部署容器方式實現,每個容器之間互相隔離,每個容器有自己的檔案系統 ,容器之間進程不會相互影響,能區分計算資源。相對於虛擬機,容器能快速部署,由於容器與底層設施、機器檔案系統解耦的,所以它能在不同雲、不同版本作業系統間進行遷移。 容器占用資源少、部署快,每個套用可以被打包成一個容器鏡像,每個套用與容器間成一對一關係也使容器有更大優勢,使用容器可以在build或release 的階段,為套用創建容器鏡像,因為每個套用不需要與其餘的套用堆疊組合,也不依賴於生產環境基礎結構,這使得從研發到測試、生產能提供一致環境。類似地,容器比虛擬機輕量、更“透明”,這更便於監控和管理。

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.。

相關詞條

熱門詞條

聯絡我們