亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

史上最全Kubernetes資料集萃!菜鳥變高手這一篇就夠了

 

一、Kubernetes 介紹

Kubernetes是一個(gè)全新的基于容器技術(shù)的分布式架構(gòu)領(lǐng)先方案, 它是Google在2014年6月開源的一個(gè)容器集群管理系統(tǒng),使用Go語言開發(fā),Kubernetes也叫K8S。K8S是Google內(nèi)部一個(gè)叫Borg的容器集群管理系統(tǒng)衍生出來的,Borg已經(jīng)在Google大規(guī)模生產(chǎn)運(yùn)行十年之久。K8S主要用于自動(dòng)化部署、擴(kuò)展和管理容器應(yīng)用,提供了資源調(diào)度、部署管理、服務(wù)發(fā)現(xiàn)、擴(kuò)容縮容、監(jiān)控等一整套功能。2015年7月,Kubernetes v1.0正式發(fā)布,截止到2020年5月27日最新穩(wěn)定版本是v1.18。Kubernetes目標(biāo)是讓部署容器化應(yīng)用簡(jiǎn)單高效。

Kubernetes最初源于谷歌內(nèi)部的Borg,提供了面向應(yīng)用的容器集群部署和管理系統(tǒng)。Kubernetes 的目標(biāo)旨在消除編排物理/虛擬計(jì)算,網(wǎng)絡(luò)和存儲(chǔ)基礎(chǔ)設(shè)施的負(fù)擔(dān),并使應(yīng)用程序運(yùn)營(yíng)商和開發(fā)人員完全將重點(diǎn)放在以容器為中心的原語上進(jìn)行自助運(yùn)營(yíng)。Kubernetes 也提供穩(wěn)定、兼容的基礎(chǔ)(平臺(tái)),用于構(gòu)建定制化的workflows 和更高級(jí)的自動(dòng)化任務(wù)。

Kubernetes 具備完善的集群管理能力,包括多層次的安全防護(hù)和準(zhǔn)入機(jī)制、多租戶應(yīng)用支撐能力、透明的服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)機(jī)制、內(nèi)建負(fù)載均衡器、故障發(fā)現(xiàn)和自我修復(fù)能力、服務(wù)滾動(dòng)升級(jí)和在線擴(kuò)容、可擴(kuò)展的資源自動(dòng)調(diào)度機(jī)制、多粒度的資源配額管理能力。Kubernetes 還提供完善的管理工具,涵蓋開發(fā)、部署測(cè)試、運(yùn)維監(jiān)控等各個(gè)環(huán)節(jié)。

二、Kubernetes主要功能

Kubernetes是docker容器用來編排和管理的工具,它是基于Docker構(gòu)建一個(gè)容器的調(diào)度服務(wù),提供資源調(diào)度、均衡容災(zāi)、服務(wù)注冊(cè)、動(dòng)態(tài)擴(kuò)縮容等功能套件。Kubernetes提供應(yīng)用部署、維護(hù)、 擴(kuò)展機(jī)制等功能,利用Kubernetes能方便地管理跨機(jī)器運(yùn)行容器化的應(yīng)用,其主要功能如下:

數(shù)據(jù)卷:?Pod中容器之間共享數(shù)據(jù),可以使用數(shù)據(jù)卷。

應(yīng)用程序健康檢查:?容器內(nèi)服務(wù)可能進(jìn)程堵塞無法處理請(qǐng)求,可以設(shè)置監(jiān)控檢查策略保證應(yīng)用健壯性。

復(fù)制應(yīng)用程序?qū)嵗??控制器維護(hù)著Pod副本數(shù)量,保證一個(gè)Pod或一組同類的Pod數(shù)量始終可用。

彈性伸縮:?根據(jù)設(shè)定的指標(biāo)(CPU利用率)自動(dòng)縮放Pod副本數(shù)。

服務(wù)發(fā)現(xiàn):?使用環(huán)境變量或DNS服務(wù)插件保證容器中程序發(fā)現(xiàn)Pod入口訪問地址。

負(fù)載均衡:?一組Pod副本分配一個(gè)私有的集群IP地址,負(fù)載均衡轉(zhuǎn)發(fā)請(qǐng)求到后端容器。在集群內(nèi)部其他Pod可通過這個(gè)ClusterIP訪問應(yīng)用。

滾動(dòng)更新:?更新服務(wù)不中斷,一次更新一個(gè)Pod,而不是同時(shí)刪除整個(gè)服務(wù)。

服務(wù)編排:?通過文件描述部署服務(wù),使得應(yīng)用程序部署變得更高效。

資源監(jiān)控:?Node節(jié)點(diǎn)組件集成cAdvisor資源收集工具,可通過Heapster匯總整個(gè)集群節(jié)點(diǎn)資源數(shù)據(jù),然后存儲(chǔ)到InfluxDB時(shí)序數(shù)據(jù)庫(kù),再由Grafana展示。

提供認(rèn)證和授權(quán): 支持屬性訪問控制(ABAC)、角色訪問控制(RBAC)認(rèn)證授權(quán)策略。

除此之外, Kubernetes主要功能還體現(xiàn)在:

-?使用Docker對(duì)應(yīng)用程序包裝(package)、實(shí)例化(instantiate)、運(yùn)行(run)。

-?將多臺(tái)Docker主機(jī)抽象為一個(gè)資源,以集群的方式運(yùn)行、管理跨機(jī)器的容器,包括任務(wù)調(diào)度、資源管理、彈性伸縮、滾動(dòng)升級(jí)等功能。

-?使用編排系統(tǒng)(YAML File)快速構(gòu)建容器集群,提供負(fù)載均衡,解決容器直接關(guān)聯(lián)及通信問題-?解決Docker跨機(jī)器容器之間的通訊問題。

-?自動(dòng)管理和修復(fù)容器,簡(jiǎn)單說,比如創(chuàng)建一個(gè)集群,里面有十個(gè)容器,如果某個(gè)容器異常關(guān)閉,那么,會(huì)嘗試重啟或重新分配容器,始終保證會(huì)有十個(gè)容器在運(yùn)行,反而殺死多余的。Kubernetes的自我修復(fù)機(jī)制使得容器集群總是運(yùn)行在用戶期望的狀態(tài). 當(dāng)前Kubernetes支持GCE、vShpere、CoreOS、OpenShift。

kubernetes的集群至少有兩個(gè)主機(jī)組成:master + node ,即為master/node架構(gòu)。master為集群的控制面板,master主機(jī)需要做冗余,一般建議為3臺(tái);而node主機(jī)不需要做冗余,因?yàn)閚ode的主要作用是運(yùn)行pod,貢獻(xiàn)計(jì)算能力和存儲(chǔ)能力,而pod控制器會(huì)自動(dòng)管控pod資源,如果資源少,pod控制器會(huì)自動(dòng)創(chuàng)建pod,即pod控制器會(huì)嚴(yán)格按照用戶指定的副本來管理pod的數(shù)量??蛻舳说恼?qǐng)求下發(fā)給master,即把創(chuàng)建和啟動(dòng)容器的請(qǐng)求發(fā)給master,master中的調(diào)度器分析各node現(xiàn)有的資源狀態(tài),把請(qǐng)求調(diào)用到對(duì)應(yīng)的node啟動(dòng)容器。

可以理解為kubernetes把容器抽象為pod來管理1到多個(gè)彼此間有非常緊密聯(lián)系的容器,但是LAMP的容器主機(jī)A,M,P只是有關(guān)聯(lián),不能說是非常緊密聯(lián)系,因此A,M,P都要運(yùn)行在三個(gè)不同的pod上。在kubernetes中,要運(yùn)行幾個(gè)pod,是需要定義一個(gè)配置文件,在這個(gè)配置文件里定義用哪個(gè)控制器啟動(dòng)和控制幾個(gè)pod,在每個(gè)pod里要定義那幾臺(tái)容器,kubernetes通過這個(gè)配置文件,去創(chuàng)建一個(gè)控制器,由此控制器來管控這些pod,如果這些pod的某幾個(gè)down掉后,控制器會(huì)通過健康監(jiān)控功能,隨時(shí)監(jiān)控pod,發(fā)現(xiàn)pod異常后,根據(jù)定義的策略進(jìn)行操作,即可以進(jìn)行自愈。

kubernetes內(nèi)部需要5套證書,手動(dòng)創(chuàng)建或者自動(dòng)生成,分別為:

1.?etcd內(nèi)部通信需要一套ca和對(duì)應(yīng)證書。

2.?etcd與外部通信也要有一套ca和對(duì)應(yīng)證書。

3.?APIserver間通信需要一套證書。

4.?apiserver與node間通信需要一套證書。

5.?node和pod間通信需要一套ca證書。

目前來說還不能實(shí)現(xiàn)把所有的業(yè)務(wù)都遷到kubernetes上,如存儲(chǔ),因?yàn)檫@個(gè)是有狀態(tài)應(yīng)用,出現(xiàn)錯(cuò)誤排查很麻煩,所以目前kubernetes主要是運(yùn)行無狀態(tài)應(yīng)用。

所以一般而言,負(fù)載均衡器運(yùn)行在kubernetes之外,nginx或者tomcat這種無狀態(tài)的應(yīng)用運(yùn)行于kubernetes集群內(nèi)部,而數(shù)據(jù)庫(kù)如mysql,zabbix,zoopkeeper等有狀態(tài)的,一般運(yùn)行于kubernetes外部,通過網(wǎng)絡(luò)連接,實(shí)現(xiàn)kubernetes集群的pod調(diào)用這些外部的有狀態(tài)應(yīng)用。

三、Kubernetes架構(gòu)和組件

史上最全Kubernetes資料集萃!菜鳥變高手這一篇就夠了

kubernetes主要由以下幾個(gè)核心組件組成:

etcd:?集群的主數(shù)據(jù)庫(kù),保存了整個(gè)集群的狀態(tài); etcd負(fù)責(zé)節(jié)點(diǎn)間的服務(wù)發(fā)現(xiàn)和配置共享。etcd分布式鍵值存儲(chǔ)系統(tǒng), 用于保持集群狀態(tài),比如Pod、Service等對(duì)象信息。

kube-apiserver:?提供了資源操作的唯一入口,并提供認(rèn)證、授權(quán)、訪問控制、API注冊(cè)和發(fā)現(xiàn)等機(jī)制;這是kubernetes API,作為集群的統(tǒng)一入口,各組件協(xié)調(diào)者,以HTTPAPI提供接口服務(wù),所有對(duì)象資源的增刪改查和監(jiān)聽操作都交給APIServer處理后再提交給Etcd存儲(chǔ)。

kube-controller-manager: 負(fù)責(zé)維護(hù)集群的狀態(tài),比如故障檢測(cè)、自動(dòng)擴(kuò)展、滾動(dòng)更新等;它用來執(zhí)行整個(gè)系統(tǒng)中的后臺(tái)任務(wù),包括節(jié)點(diǎn)狀態(tài)狀況、Pod個(gè)數(shù)、Pods和Service的關(guān)聯(lián)等, 一個(gè)資源對(duì)應(yīng)一個(gè)控制器,而ControllerManager就是負(fù)責(zé)管理這些控制器的。

kube-scheduler:?資源調(diào)度,按照預(yù)定的調(diào)度策略將Pod調(diào)度到相應(yīng)的機(jī)器上;它負(fù)責(zé)節(jié)點(diǎn)資源管理,接受來自kube-apiserver創(chuàng)建Pods任務(wù),并分配到某個(gè)節(jié)點(diǎn)。它會(huì)根據(jù)調(diào)度算法為新創(chuàng)建的Pod選擇一個(gè)Node節(jié)點(diǎn)。

kubectl:?客戶端命令行工具,將接受的命令格式化后發(fā)送給kube-apiserver,作為整個(gè)系統(tǒng)的操作入口。

kubelet:?負(fù)責(zé)維護(hù)容器的生命周期,負(fù)責(zé)管理pods和它們上面的容器,images鏡像、volumes、etc。同時(shí)也負(fù)責(zé)Volume(CVI)和網(wǎng)絡(luò)(CNI)的管理;kubelet運(yùn)行在每個(gè)計(jì)算節(jié)點(diǎn)上,作為agent,接受分配該節(jié)點(diǎn)的Pods任務(wù)及管理容器,周期性獲取容器狀態(tài),反饋給kube-apiserver; kubelet是Master在Node節(jié)點(diǎn)上的Agent,管理本機(jī)運(yùn)行容器的生命周期,比如創(chuàng)建容器、Pod掛載數(shù)據(jù)卷、下載secret、獲取容器和節(jié)點(diǎn)狀態(tài)等工作。kubelet將每個(gè)Pod轉(zhuǎn)換成一組容器。

container runtime:?負(fù)責(zé)鏡像管理以及Pod和容器的真正運(yùn)行(CRI);

kube-proxy: 負(fù)責(zé)為Service提供cluster內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡;它運(yùn)行在每個(gè)計(jì)算節(jié)點(diǎn)上,負(fù)責(zé)Pod網(wǎng)絡(luò)代理。定時(shí)從etcd獲取到service信息來做相應(yīng)的策略。它在Node節(jié)點(diǎn)上實(shí)現(xiàn)Pod網(wǎng)絡(luò)代理,維護(hù)網(wǎng)絡(luò)規(guī)則和四層負(fù)載均衡工作。

docker或rocket(rkt): 運(yùn)行容器。

除了上面的幾個(gè)核心組件, 還有一些常用插件(Add-ons):kube-dns: 負(fù)責(zé)為整個(gè)集群提供DNS服務(wù);Ingress Controller: 為服務(wù)提供外網(wǎng)入口;Heapster: 提供資源監(jiān)控;Dashboard: 提供GUI;Federation: 提供跨可用區(qū)的集群;Fluentd-elasticsearch: 提供集群日志采集、存儲(chǔ)與查詢;

其中:

master組件包括:?kube-apiserver, kube-controller-manager, kube-scheduler;

Node組件包括:?kubelet, kube-proxy, docker或rocket(rkt);

第三方服務(wù):etcd

因?yàn)槠邢?,想要更多的?nèi)容可以直接私聊客服偶!

聲明:文章轉(zhuǎn)載于網(wǎng)絡(luò),版權(quán)歸原作者所有!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!