Kubernetes是一個開源平臺慨畸,用于跨主機群集自動部署,擴展和操作應用程序容器桃熄,提供以容器為中心的基礎架構先口。
使用Kubernetes,您可以快速高效地響應客戶需求:
快速瞳收,可預測地部署應用程序碉京。
在運行中擴展應用程序。
無縫推出新功能螟深。
僅使用您需要的資源來優(yōu)化硬件的使用谐宙。
我們的目標是建立一個組件和工具的生態(tài)系統(tǒng),以減輕在公共云和私有云中運行應用程序的負擔界弧。
Kubernetes是:
Kubernetes是Google開源的容器集群管理系統(tǒng)凡蜻,實現(xiàn)基于Docker構建容器,利用Kubernetes能很方面管理多臺Docker主機中的容器垢箕。
主要功能如下:
1)將多臺Docker主機抽象為一個資源划栓,以集群方式管理容器,包括任務調(diào)度条获、資源管理忠荞、彈性伸縮、滾動升級等功能。
2)使用編排系統(tǒng)(YAML File)快速構建容器集群委煤,提供負載均衡堂油,解決容器直接關聯(lián)及通信問題
3)自動管理和修復容器,簡單說碧绞,比如創(chuàng)建一個集群府框,里面有十個容器,如果某個容器異常關閉讥邻,那么迫靖,會嘗試重啟或重新分配容器,始終保證會有十個容器在運行计维,反而殺死多余的袜香。
kubernetes角色組成:
1)Pod
Pod是kubernetes的最小操作單元,一個Pod可以由一個或多個容器組成鲫惶;
同一個Pod只能運行在同一個主機上蜈首,共享相同的volumes、network欠母、namespace欢策;
2)ReplicationController(RC)
RC用來管理Pod,一個RC可以由一個或多個Pod組成赏淌,在RC被創(chuàng)建后踩寇,系統(tǒng)會根據(jù)定義好的副本數(shù)來創(chuàng)建Pod數(shù)量。在運行過程中,如果Pod數(shù)量小于定義的,就會重啟停止的或重新分配Pod搬俊,反之則殺死多余的。當然睛榄,也可以動態(tài)伸縮運行的Pods規(guī)模。
RC通過label關聯(lián)對應的Pods想帅,在滾動升級中场靴,RC采用一個一個替換要更新的整個Pods中的Pod。
3)Service
Service定義了一個Pod邏輯集合的抽象資源港准,Pod集合中的容器提供相同的功能旨剥。集合根據(jù)定義的Label和selector完成,當創(chuàng)建一個Service后浅缸,會分配一個Cluster IP轨帜,這個IP與定義的端口提供這個集合一個統(tǒng)一的訪問接口,并且實現(xiàn)負載均衡衩椒。
4)Label
Label是用于區(qū)分Pod阵谚、Service蚕礼、RC的key/value鍵值對烟具;
Pod梢什、Service、RC可以有多個label朝聋,但是每個label的key只能對應一個嗡午;
主要是將Service的請求通過lable轉(zhuǎn)發(fā)給后端提供服務的Pod集合;
kubernetes組件組成:
1)kubectl
客戶端命令行工具冀痕,將接受的命令格式化后發(fā)送給kube-apiserver荔睹,作為整個系統(tǒng)的操作入口。
2)kube-apiserver
作為整個系統(tǒng)的控制入口言蛇,以REST API服務提供接口僻他。
3)kube-controller-manager
用來執(zhí)行整個系統(tǒng)中的后臺任務,包括節(jié)點狀態(tài)狀況腊尚、Pod個數(shù)吨拗、Pods和Service的關聯(lián)等。
4)kube-scheduler
負責節(jié)點資源管理婿斥,接受來自kube-apiserver創(chuàng)建Pods任務劝篷,并分配到某個節(jié)點。
5)etcd
負責節(jié)點間的服務發(fā)現(xiàn)和配置共享民宿。
6)kube-proxy
運行在每個計算節(jié)點上娇妓,負責Pod網(wǎng)絡代理。定時從etcd獲取到service信息來做相應的策略活鹰。
7)kubelet
運行在每個計算節(jié)點上哈恰,作為agent,接受分配該節(jié)點的Pods任務及管理容器志群,周期性獲取容器狀態(tài)着绷,反饋給kube-apiserver。
8)DNS
一個可選的DNS服務赖舟,用于為每個Service對象創(chuàng)建DNS記錄蓬戚,這樣所有的Pod就可以通過DNS訪問服務了。