優(yōu)點(diǎn)知識(shí)Kubernetes 網(wǎng)絡(luò)訓(xùn)練營(yíng)3期筆記分享

Kubernetes 介紹
我已經(jīng)學(xué)了挺好的,分享給大家一起學(xué)習(xí)
手機(jī)上綠色圖標(biāo)軟件??搜下面數(shù)字就可以啦
373871949
備注需要哪個(gè)哦~~~~
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ā)布,截止到2017年9月29日最新穩(wěn)定版本是v1.8。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ù)庫,再由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ù)庫如mysql,zabbix,zoopkeeper等有狀態(tài)的,一般運(yùn)行于kubernetes外部,通過網(wǎng)絡(luò)連接,實(shí)現(xiàn)kubernetes集群的pod調(diào)用這些外部的有狀態(tài)應(yīng)用。
本文使用 文章同步助手 同步