




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1Kubernetes技術分享架構(gòu)簡介集群搭建常用命令應用實例2Kubernetes簡介Kubernetes是谷歌嚴格保密十幾年的秘密武器Borg的一個開源版本,是一個全新的基于容器技術的分布式架構(gòu)領先方案。Borg是谷歌內(nèi)部使用的大規(guī)模集群管理系統(tǒng),基于容器技術,目的是實現(xiàn)資源管理的自動化,以及跨多個數(shù)據(jù)中心的資源利用率的最大化;K8s是第一個將”一切以服務為中心,一切圍繞服務運轉(zhuǎn)”作為指導思想的創(chuàng)新型產(chǎn)品K8s是Go語言開發(fā),是Docker的上層架構(gòu),就好像Java與J2EE的關系一樣K8s是一個開放的開發(fā)平臺,不局限于任何語言3Kubernetes主要功能主要功能k8s能方便地管理跨機器
2、運行容器化的應用提供應用部署、維護、擴展機制集群管理、安全防護、準入機制、多應用支撐、服務注冊、服務發(fā)現(xiàn)、智能負載均衡、故障發(fā)現(xiàn)、自我修復、服務滾動升級、在線擴容、資源配額管理使用Docker對應用程序包裝、實例化、運行以集群的方式運行、管理跨機器的容器解決Docker跨機器容器之間的通訊問題k8s的自我修復機制使得容器集群總是運行在用戶期望的狀態(tài)4為什么使用為什么使用Kubernetes?K8s不僅僅支持Docker,還支持Rocket,這是另一種容器技術。全面擁抱微服務架構(gòu)使用k8s我們系統(tǒng)可以隨時的整體遷移k8s系統(tǒng)具備了超強的橫向擴容能力k8s提供完善的管理工具,涵蓋了包括開發(fā)、部署測
3、試、運維監(jiān)控在內(nèi)的各個環(huán)節(jié)5K8s集群6K8s架構(gòu)7K8s體系結(jié)構(gòu)8Master集群控制管理節(jié)點,所有的命令都經(jīng)由master處理負責整個集群的管理和控制,基本上Kubernetes所有的控制命令都是發(fā)給它,它來負責具體的執(zhí)行過程,我們后面所有執(zhí)行的命令基本都是在Master節(jié)點上運行的Kubernetes API Server(kube-apiserver),提供Http Rest接口的關鍵服務進程,是Kubernetes里所有資源的增、刪、改、查等操作的唯一入口,也是集群控制的入口進程Kubernetes Controller Manager(kube-controller-manager
4、),Kubernetes里所有資源對象的自動化控制中心,可以理解為資源對象的“大總管”Kubernetes Scheduler(kube-scheduler),負責資源調(diào)度(Pod調(diào)度)的進程,相當于公交公司的“調(diào)度室”1.etcd Server,Kubernetes里所有的資源對象的數(shù)據(jù)全部是保存在etcd中,(集群部署,不與master放同一臺機器)9Master10Master11etcdetcd是一個高可用的鍵值存儲系統(tǒng),主要用于共享配置和服務發(fā)現(xiàn)。對比與ZooKeeper,etcd更輕量級1.etcd是由CoreOS開發(fā)并維護的,靈感來自于 ZooKeeper 和 Doozer,提供
5、了與ZooKeeper相似的功能,它使用Go語言編寫,并通過Raft一致性算法處理日志復制以保證強一致性。Raft是一個新的一致性算法,適用于分布式系統(tǒng)的日志復制,Raft通過選舉的方式來實現(xiàn)一致性。Google的容器集群管理系統(tǒng)Kubernetes、開源PaaS平臺Cloud Foundry和CoreOS的Fleet都廣泛使用了etcd。在分布式系統(tǒng)中,如何管理節(jié)點間的狀態(tài)一直是一個難題,etcd像是專門為集群環(huán)境的服務發(fā)現(xiàn)和注冊而設計,它提供了數(shù)據(jù)TTL失效、數(shù)據(jù)改變監(jiān)視、多值、目錄監(jiān)聽、分布式鎖原子操作等功能,可以方便的跟蹤并管理集群節(jié)點的狀態(tài)12etcd簡單: 支持curl方式的用戶A
6、PI(HTTP+JSON)安全: 可選的SSL客戶端證書認證快速: 單實例每秒 1000 次讀寫能力可靠: 使用Raft保證強一致性Etcd的應用場景包括服務發(fā)現(xiàn)(Service Discovery)、消息發(fā)布與訂閱、負載均衡、分布式通知與協(xié)調(diào)、分布式鎖、分布式隊列。如果你熟悉ZooKeeper, 你會發(fā)現(xiàn)etcd實現(xiàn)了ZooKeeper的功能13Node除了Master,Kubernetes集群中的其他機器被稱為Node節(jié)點, 早期版本也稱為Minion節(jié)點Node節(jié)點才是Kubernetes集群中的工作負載節(jié)點,每個Node都會被Master分配一些工作負載(Docker容器),當某個No
7、de宕機,其上的工作負載會被Master自動轉(zhuǎn)移到其他節(jié)點上去kubelet,負責Pod對應的容器的創(chuàng)建、啟停等任務,同時與Master節(jié)點密切協(xié)作,實現(xiàn)集群管理的基本功能。一旦Node被納入集群管理范圍,kubelet進程就會向Master匯報自身的情報,這樣Master可以獲知每個Node的資源使用情況,并實現(xiàn)高效均衡的資源調(diào)度策略。而某個Node超過指定時間不上報信息,會被Master判定為“失聯(lián)”,Node狀態(tài)被標記為不可用(Not Ready),隨后Master會觸發(fā)“工作負載大轉(zhuǎn)移”的自動流程;kube-proxy,實現(xiàn)Kubernetes Service的通信與負載均衡機制的重要
8、組件;1.Docker Engine(docker),Docker引擎,負責本機的容器創(chuàng)建和管理工作;14Node15 Pod是最小部署單元,一個Pod由一個或多個容器組成,Pod中容器共享存儲和網(wǎng)絡,在同一臺Docker主機上運行。 同一個Pod里的容器共享同一個網(wǎng)絡命名空間,可以使用localhost互相通信 每個Pod都有一個特殊的被稱為“根容器”的Pause容器,還包含一個或多個緊密相關的用戶業(yè)務容器;一個Pod里的容器與另外主機上的Pod容器能夠直接通信;如果Pod所在的Node宕機,會將這個Node上的所有Pod重新調(diào)度到其他節(jié)點上;普通Pod及靜態(tài)Pod,前者存放在etcd中,后
9、者存放在具體Node上的一個具體文件中,并且只能在此Node上啟動運行;Docker Volume對應Kubernetes中的Pod Volume;每個Pod可以設置限額的計算機資源有CPU和Memory; Requests,資源的最小申請量;Limits,資源最大允許使用的量;Pod16Pod17Pod、容器與、容器與Node關系關系18Endpoint(IP+Port) 標識服務進程的訪問點Event 是一個事件記錄,記錄了事件最早產(chǎn)生的時間、最后重復時間、重復次數(shù)、發(fā)起者、類型,以及導致此事件的原因等信息。Event通常關聯(lián)到具體資源對象上,式排查故障的重要參考信息;Endpoint、E
10、vent19Service Service一個應用服務抽象,定義了Pod邏輯集合和訪問這個Pod集合的策略。 Service代理Pod集合對外表現(xiàn)是為一個訪問入口,分配一個集群IP地址,來自這個IP的請求將負載均衡轉(zhuǎn)發(fā)后端Pod中的容器。 Service通過LableSelector選擇一組Pod提供服務。 在K8s集群中微服務的負載均衡是由Kube-proxy實現(xiàn)的,在K8s的每個節(jié)點上都有一個Service其實就是我們經(jīng)常提起的微服務架構(gòu)中的一個“微服務”,kubernetes中的核心。通過分析、識別并建模系統(tǒng)中的所有服務為微服務Kubernetes Service,最終我們的系統(tǒng)由多個提
11、供不同業(yè)務能力而又彼此獨立的微服務單元所組成,服務之間通過TCP/IP進行通信,從而形成了我們強大而又靈活的彈性網(wǎng)絡,擁有了強大的分布式能力、彈性擴展能力、容錯能力20Service21Service22Service 如上圖示,每個Pod都提供了一個獨立的Endpoint(Pod IP+ContainerPort)以被客戶端訪問,多個Pod副本組成了一個集群來提供服務,一般的做法是部署一個負載均衡器來訪問它們,為這組Pod開啟一個對外的服務端口如8000,并且將這些Pod的Endpoint列表加入8000端口的轉(zhuǎn)發(fā)列表中,客戶端可以通過負載均衡器的對外IP地址+服務端口來訪問此服務。運行在N
12、ode上的kube-proxy其實就是一個智能的軟件負載均衡器,它負責把對Service的請求轉(zhuǎn)發(fā)到后端的某個Pod實例上,并且在內(nèi)部實現(xiàn)服務的負載均衡與會話保持機制。Service不是共用一個負載均衡器的IP地址,而是每個Servcie分配一個全局唯一的虛擬IP地址,這個虛擬IP被稱為Cluster IP。23Service Node IP Node節(jié)點的IP地址,是Kubernetes集群中每個節(jié)點的物理網(wǎng)卡的IP地址,是真是存在的物理網(wǎng)絡,所有屬于這個網(wǎng)絡的服務器之間都能通過這個網(wǎng)絡直接通信; Pod IP Pod的IP地址,是Docker Engine根據(jù)docker0網(wǎng)橋的IP地址段
13、進行分配的,通常是一個虛擬的二層網(wǎng)絡,位于不同Node上的Pod能夠彼此通信,需要通過Pod IP所在的虛擬二層網(wǎng)絡進行通信,而真實的TCP流量則是通過Node IP所在的物理網(wǎng)卡流出的; Cluster IP Service的IP地址。特性如下: 僅僅作用于Kubernetes Servcie這個對象,并由Kubernetes管理和分配IP地址;無法被Ping,因為沒有一個“實體網(wǎng)絡對象”來響應;只能結(jié)合Service Port組成一個具體的通信端口; Node IP網(wǎng)、Pod IP網(wǎng)域Cluster IP網(wǎng)之間的通信,采用的是Kubernetes自己設計的一種編程方式的特殊的路由規(guī)則,與I
14、P路由有很大的不同;24LabelLabel可以附加到各種資源對象上,一個資源對象可以定義任意數(shù)量的Label。給某個資源定義一個Label,相當于給他打一個標簽,隨后可以通過Label Selector(標簽選擇器)查詢和篩選擁有某些Label的資源對象。我們可以通過給指定的資源對象捆綁一個或多個Label來實現(xiàn)多維度的資源分組管理功能,以便于靈活、方便的進行資源分配、調(diào)度、配置、部署等管理工作; Label Selector示例:select * from pod where pods name=XXX,env=YYY,支持操作符有=、!=、in、not in;25 部署和升級Pod,聲明
15、某種Pod的副本數(shù)量在任意時刻都符合某個預期值; Pod期待的副本數(shù);用于篩選目標Pod的Label Selector;當Pod副本數(shù)量小于預期數(shù)量的時候,用于創(chuàng)建新Pod的Pod模板(template);Replication Controller(RC) 26 下一代的Replication Controlle,RC與RS唯一區(qū)別就是lableselector支持不同,RS支持新的基于集合的標簽,RC僅支持基于等式的標簽。Replication Controlle只支持基于等式的selector(env=dev或environment!=qa)但Replica Set還支持新的、基于集合的
16、selector(version in (v1.0, v2.0)或env notin (dev, qa)),這對復雜的運維管理帶來很大方便。Replica Set 27擁有更加靈活強大的升級、回滾功能。在新的版本中,官方推薦使用Replica Set和Deployment來代替RC,兩者相似度90%,相對于RC一個最大升級是我們隨時指導當前Pod“部署”的進度。Deployment使用了Replica Set,除非需要自定義升級功能或根本不需要升級Pod,一般情況下,我們推薦使用Deployment而不直接使用Replica Set; 典型使用場景: 創(chuàng)建一個Deployment對象來生成對應
17、的Replica Set并完成Pod副本的創(chuàng)建過程; 檢查更新Deployment的狀態(tài)來查看部署動作是否完成(Pod副本的數(shù)量是否達到預期的值); 更新Deployment以創(chuàng)建新的Pod;(比如鏡像升級) 如果當前Deployment不穩(wěn)定,則回滾到一個早先的Deployment版本; 掛起或者恢復一個Deployment;Deployment 28意思是Pod橫向自動擴容,目標是實現(xiàn)自動化、智能化擴容或縮容。 Pod負載度量指標: CPUUtilizationPercentage 通常使用一分鐘內(nèi)的平均值,可以通過Heapster擴展組件獲取這個值。一個Pod自身的CPU利用率是該Pod
18、當前CPU的使用量除以它的Pod Request的值。例如Pod Request定義值為0.4,當前Pod使用量為0.2,則它的CPU使用率為50%。但如果沒有定義Pod Request值,則無法使用CPUUtilizationPercentage來實現(xiàn)Pod橫向自動擴容的能力; 應用程序自定義的度量指標,比如服務在每秒內(nèi)的相應的請求書(TPS或QPS)Horizontal Pod Autoscaler(HPA)29數(shù)據(jù)卷,是Pod中能夠被多個容器訪問的共享目錄。定義在Pod之上,被一個Pod里的多個容器掛載到具體的文件目錄之下;與Pod生命周期相同??梢宰屢粋€Pod里的多個容器共享文件、讓容
19、器的數(shù)據(jù)寫到宿主機的磁盤上或者寫文件到 共享存儲中Volume30命名空間將對象邏輯上分配到不同Namespace,可以是不同的項目、用戶等區(qū)分管理,并設定控制策略,從而實現(xiàn)多租戶。 命名空間也稱為虛擬集群。Namespace31Node、Pod、Replication Controller和Service等都可以看作是一種“資源對象”,幾乎所有的資源對象都可以通過Kubernetes提供的kubectl工具執(zhí)行增、刪、改、查等操作并將其保存在ectd中持久化存儲。Kubectl32關閉CentOS自帶的防火墻服務 systemctl disable firewall # systemctl
20、stop firewall 安裝Etcd和Kubernetes軟件(會自動安裝docker軟件) yuminstallyetcdkubernetes 按順序啟動所有服務 systemctlstartetcd systemctlstart docker # systemctl start kube-apiserver # systemctl start kube-controller-manager # systemctl start kube-scheduler # systemctl start kubelet # systemctl start tube-proxy64位位 CentOS7
21、 單機版單機版Kubernetes集群環(huán)境安裝集群環(huán)境安裝33由于篇幅,k8s集群安裝文檔,后續(xù)附件提供Kubernetes集群環(huán)境安裝集群環(huán)境安裝34訪問地址:3:30001/#!/login獲取token: #kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep tokenKubernetes-dashboard35Grafana地址:2:301
22、08/Kubernetes監(jiān)控監(jiān)控36Kubernetes負載均衡負載均衡nginx ingress37Kubernetes 暴露服務的方式目前只有三種:LoadBlancer Service、NodePort Service、Ingress;前兩種估計都應該很熟悉,下面詳細的了解下這個 Ingress Ingress由兩部分組成:Ingress Controller 和 Ingress 服務。 Ingress Contronler 通過與 Kubernetes API 交互,動態(tài)的去感知集群中 Ingress 規(guī)則變化,然后讀取它,按照自定義的規(guī)則,規(guī)則就是寫明了哪個域名對應哪個servic
23、e,生成一段 Nginx 配置,再寫到 Nginx-ingress-control的 Pod 里,這個 Ingress Contronler 的pod里面運行著一個nginx服務,控制器會把生成的nginx配置寫入/etc/nginx.conf文件中,然后 reload 一下 使用配置生效。以此來達到域名分配置及動態(tài)更新的問題。Kubernetes負載均衡負載均衡nginx ingress38Demo地址:1/demo/查看nginx-ingress容器里的nginx配置,是動態(tài)變化的查看容器日志,輪詢訪問兩臺tomcatKubernetes負載均衡負載均衡nginx ingres
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)火災工程部應急預案(3篇)
- 老人火災應急預案流程(3篇)
- 2025年法學概論考試復習資源及試題及答案
- 醫(yī)院發(fā)生火災應急預案存在問題(3篇)
- 軟考網(wǎng)絡專家試題及答案
- 復雜環(huán)境下的戰(zhàn)略選擇試題及答案
- 高考數(shù)學重要期末復習及答案
- 計算機軟件水平考試試題及答案解析
- 定期審視和調(diào)整財務計劃
- 2025商業(yè)店鋪購買合同模板
- 會診制度培訓課件
- 2025年經(jīng)濟師考試旅游經(jīng)濟(中級)專業(yè)知識和實務試卷及解答參考
- 安徽演藝集團有限責任公司招聘筆試題庫2024
- 回收二手機免責協(xié)議書模板
- 2023年UKKA血液透析血管通路臨床實踐指南解讀
- 2022版義務教育藝術課程標準美術新課標學習解讀課件
- 完整版青少年普法宣傳教育全文課件
- 陜西省探礦權采礦權使用費和價款管理辦法
- CB-Z-806-2016船舶動力定位模型試驗規(guī)程
- 押安徽中考數(shù)學第21題(統(tǒng)計與概率)(原卷版+解析)
- 浙江省杭州市杭州第二中學2023-2024學年高一下數(shù)學期末達標檢測試題含解析
評論
0/150
提交評論