必威电竞|足球世界杯竞猜平台

kubernetes
來源:互聯網

kubernetes,簡稱K8s,是用8代替8個字符“ubernete”而成的縮寫。是由Google開發的一個開源的,用于管理云平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單并且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。

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

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

容器占用資源少、部署快,每個應用可以被打包成一個容器鏡像,每個應用與容器間成一對一關系也使容器有更大優勢,支持docker和rkt容器運行時,通過DNS插件實現服務域名解析,并提供集群監控等擴展功能。使用容器可以在build或release 的階段,為應用創建容器鏡像,因為每個應用不需要與其余的應用堆棧組合,也不依賴于生產環境基礎結構,這使得從研發到測試、生產能提供一致環境。類似地,容器比虛擬機輕量、更“透明”,這更便于監控和管理。

概述

Kubernetes是谷歌開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程序時,通常要部署該應用的多個實例以便對應用請求進行負載均衡。

在Kubernetes中,我們可以創建多個容器,每個容器里面運行一個應用實例,然后通過內置的負載均衡策略,實現對這一組應用實例的管理、發現、訪問,而這些細節都不需要運維人員去進行復雜的手工配置和處理。

特點

??可移植: 支持公有云,私有云混合云,多重云(multi-cloud)

??可擴展: 模塊化, 插件化, 可掛載, 可組合

??自動化: 自動部署,自動重啟,自動復制,自動伸縮/擴展

組件

??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的功能。

云控制器管理器僅運行云提供商特定的(電動車控制器 loops)控制器循環。可以通過將--cloud-providerflag設置為external啟動kube-controller-manager ,來禁用控制器循環。

cloud-controller-manager 具體功能:

??節點(Node)控制器

??路由(Route)控制器

??送達控制器

??卷(容積單位)控制器

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所需的容積單位

??下載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.。

參考資料 >

Kubernetes中文社區 | 中文文檔.Kubernetes中文社區.2018-09-05

生活家百科家居網