溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes的用途和特點是什么

發(fā)布時間:2021-09-10 01:37:29 來源:億速云 閱讀:924 作者:chen 欄目:云計算

本篇內(nèi)容主要講解“Kubernetes的用途和特點是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Kubernetes的用途和特點是什么”吧!


目錄

一. Kubernetes用途

二. Kubernetes特點

三. 介紹容器技術

四. Kubernetes能做什么?

五. 使用Kubernetes的好處

六. 了解架構


一. Kubernetes用途

Kubernetes是容器集群管理系統(tǒng),是一個開源的平臺,可以實現(xiàn)容器集群的自動化部署,自動擴縮容,維護等功能

  • 快速部署應用

  • 快速擴展應用

  • 無縫對接新的應用功能

  • 節(jié)省資源,優(yōu)化硬件資源的使用

二. Kubernetes特點

  • 可移植 : 支持公有云,私有云,混合云,多重云

  • 可擴展 : 模塊化,插件化,可掛載,可組合,支持各種形式的擴展

  • 自動化 : 自動部署,自動重啟,自動復制,自動伸縮/擴展,通過聲明式語法提供了強大的自修復能力

Kubernetes是Google2014年創(chuàng)建管理的,是Google10多年大規(guī)模容器管理技術Borg的開源版本

三. 介紹容器技術

Kubernetes使用Linux容器技術來提供應用的隔離,如Docker或者rkt

容器允許你在同一臺機器上運行多個服務,不僅提供不同的環(huán)境給每個服務,而且將它們互相隔離,容器類似于虛擬機,但開銷小很多

一個容器僅僅是運行在宿主機上被隔離的單個進程,僅消耗應用容器消耗的資源,不會有其他進程的開銷

容器都是調用同一個內(nèi)核,自然會有安全隱患

容器實現(xiàn)隔離機制介紹

有兩個機制可用 : 第一個是Linux命名空間,它使每個進程只能看到它自己的系統(tǒng)視圖(文件,進程,網(wǎng)絡接口,主機名等) 第二個是Linux控制組(cgroups),它限制了進程能使用的資源量(CPU,內(nèi)存,網(wǎng)絡帶寬等)

Docker容器鏡像層

容器鏡像層是只讀的,容器運行時,一個新的可寫層在鏡像層之上被創(chuàng)建容器中進程寫入位于底層的一個文件時,此文件的一個拷貝在頂層被創(chuàng)建,進程寫得此時拷貝

容器鏡像可移植性的限制

一個在特定硬件架構之上編譯的容器化應用,只能在有相同硬件架構的機器上運行

容器優(yōu)點
  • 敏捷的應用程序創(chuàng)建和部署 : 與虛擬機鏡像相比,容器鏡像更容器創(chuàng)建,提升了硬件的使用效率

  • 持續(xù)開發(fā),集成和部署 : 提供可靠與頻繁的容器鏡像構建和部署,可以很方便及快速的回滾(由于鏡像不可變性)

  • 關注開發(fā)與運維的分離 : 在構建/發(fā)布時創(chuàng)建應用程序容器鏡像,從而將應用程序和基礎架構分離

  • 開發(fā),測試和生產(chǎn)環(huán)境的一致性 : 在筆記本電腦上運行與云中一樣

  • 云和操作系統(tǒng)的可移植性 : 可運行在Ubuntu,RHEL,CoreOS,內(nèi)部部署,Google 容器引擎和其他任何地方

  • 以應用為中心的管理 : 提升了操作系統(tǒng)的抽象級別,以便在使用邏輯資源的操作系統(tǒng)上運行應用程序

  • 松耦合,分布式,彈性伸縮,微服務 : 應用程序被分成更小,更獨立的部分,可以動態(tài)部署和管理,而不是巨型單體應用運行在專用的大型機上

  • 資源隔離 : 通過對應用進行資源隔離,可以很容易的預測應用程序性能

  • 資源利用 : 高效率和高密度

四. Kubernetes能做什么?

最基礎的,Kubernetes可以在物理或虛擬機集群上調度和運行應用程序容器.然而,Kubernetes還允許開發(fā)人員從物理和虛擬機'脫離',從以主機為中心的基礎架構轉移到以容器為中心的基礎架構,這樣可以提供容器固有的全部優(yōu)點和益處.Kubernetes提供了基礎設施來構建一個真正以容器為中心的開發(fā)環(huán)境

Kubernetes滿足了生產(chǎn)中運行應用程序的許多常見的需求
  • Pod提供復合應用并保留一個應用一個容器的容器模型

  • 掛載外部存儲

  • Secret管理

  • 應用健康檢查

  • 副本應用實例

  • 橫向自動擴縮容

  • 服務發(fā)現(xiàn)

  • 負載均衡

  • 滾動更新

  • 資源監(jiān)測

  • 日志采集和存儲

  • 支持自檢和調試

  • 認證和鑒權

這提供了平臺即服務(PAAS)的簡單性以及基礎架構即服務(IAAS)的靈活性,并促進跨基礎設施供應商的可移植性

五. 使用Kubernetes的好處

  • 簡化應用程序部署

  • 更好的利用硬件

  • 健康檢查和自修復

  • 自動擴容

  • 簡化應用部署

六. 了解架構

Kubernetes集群分為兩部分 :

  • Kubernetes控制平面

  • (工作)節(jié)點

控制平面的組件 :

  • etcd分布式持久化存儲

  • API服務器

  • 調度器

  • 控制器管理器

這些組件用來存儲,管理集群狀態(tài),但它們不是運行應用的容器

工作節(jié)點上運行的組件 :

  • Kubelet

  • Kubelet服務代理(kube-proxy)

  • 容器進行時(Docker,rkt或者其他)

附加組件 :

  • Kubernetes DNS服務器

  • 儀表板

  • Ingress控制器

  • Heapster(容器集群監(jiān)控)

  • 容器網(wǎng)絡接口插件

etcd

創(chuàng)建的所有對象 - pod,ReplicationController,服務和私密憑據(jù)等,需要以持久化方式存儲到某個地方,這樣它們的manifest在API服務器重啟和失敗的時候才不會丟失.為此,Kubernetes使用了etcd

etcd是一個響應快,分布式,一致的Key-value存儲.因為它是分布式的,故可以運行多個etcd實例來獲取高可用性和更好的性能

唯一能直接和etcd通信的是Kubernetes的API服務器.所有其他組件通過API服務器間接地讀取,寫入數(shù)據(jù)到etcd.這帶來一些好處,其中之一就是增強樂觀鎖系統(tǒng),驗證系統(tǒng)的健壯性;并且,通過把實際存儲機制從其他組件抽離,未來替換起來也更容易.值得強調的是,etcd是Kubernetes存儲集群狀態(tài)和元數(shù)據(jù)的唯一的地方

API服務器

Kubernetes API服務器作為中心組件,其他組件或者客戶端都會去調用它.以RESTful API的形式提供了可以查詢,修改集群狀態(tài)的CRUD(Create,Read,Update,Delete)接口.他將狀態(tài)存儲到etcd中

API服務器除了提供一種一致的方式將對象存儲到etcd,也對這些對象做校驗,這樣客戶端就無法存入非法的對象(直接寫入存儲的話是有可能的).除了檢驗,還會處理樂觀鎖,這樣對于并發(fā)更新的情況,對對象做更改就不會被其他客戶端覆蓋

API服務器的客戶端之一就是使用的命令行工具kubectl,也支持監(jiān)聽資源

調度器

通常不會去指定pod應該運行在哪個集群節(jié)點上,這項工作交給調度器.宏觀來看,調度器的操作比較簡單.就是利用API服務器的監(jiān)聽機制等待新創(chuàng)建的pod,然后給每個新的,沒有節(jié)點集的pod分配節(jié)點

調度器不會命令選中的節(jié)點去運行pod.調度器做的就是通過API服務器更新pod的定義.然后API服務器再去通知Kubelet該pod已經(jīng)被調度過.當目標節(jié)點上的Kubelet發(fā)現(xiàn)該pod被調度到本節(jié)點,他就會創(chuàng)建并且運行pod的容器

盡管宏觀上調度的過程看起來比較簡單,但實際上為pod選擇最佳節(jié)點的任務并不簡單.當然,最簡單的調度方式是不關心節(jié)點上已經(jīng)運行的pod,隨機選擇一個節(jié)點.另一方面,調度器可以利用高級技術,例如機器學習,來預測接下來幾分鐘或幾小時哪種類型的pod將會被調度,然后以最大的硬件利用率,無須重新調度已運行pod的方式來調度.Kubernetes的默認調度器實現(xiàn)方式處于最簡單和最復雜程度之間

控制器管理器

API服務器只做了存儲資源到etcd和通知客戶端有變更的工作.調度器則只是給pod分配節(jié)點,所以需要有活躍的組件確保系統(tǒng)真實狀態(tài)朝API服務器定義的期望的狀態(tài)收斂.這個工作由控制器管理器里的控制器來實現(xiàn)

單個控制器,管理器進程當前組合了多個執(zhí)行不同非沖突任務的控制器.這些控制器最終會被分解到不同的進程,如果需要的話,我們能夠用自定義實現(xiàn)替換它們每一個

控制器包括 :

  • Replication管理器(ReplicationController資源的管理器)

  • ReplicaSet,DaemonSet以及Job控制器

  • Deployment控制器

  • StatefulSet控制器

  • Node控制器

  • Service控制器

  • Endpoints控制器

  • Namespace控制器

  • PersistentVolume控制器

  • 其他

Kubelet

Kubelet就是負責所有運行在工作節(jié)點上內(nèi)容的組件.它第一個任務就是在API服務器中創(chuàng)建一個Node資源來注冊該節(jié)點.然后需要持續(xù)監(jiān)控API服務器是否把該節(jié)點分配給pod,然后啟動pod容器.具體實現(xiàn)方式是告知配置好的容器進行時來從特定容器鏡像運行容器,Kubelet隨后持續(xù)監(jiān)控運行的容器,向API服務器報告他們的狀態(tài),事件和資源消耗

Kubelet也是運行容器存活探針的組件,當探針報錯時它會重啟容器.最后一點,當pod從API服務器刪除時,Kubelet終止容器,并通知服務器pod已經(jīng)被終止了

kube-proxy

每個工作節(jié)點都會運行kube-proxy,用于確保客戶端可以通過Kubernetes API連接到你定義的服務

kube-proxy確保對服務IP和端口的連接最終能到達支持服務的某個pod處.如果有多個pod支撐一個服務,那么代理會發(fā)揮對pod的負載均衡作用

Kubernetes插件

DNS服務器

集群中的所有pod默認配置使用集群內(nèi)部DNS服務器.這使得pod能夠輕松地通過名稱查詢到服務,甚至是無頭服務pod的IP地址

DNS服務pod通過kube-dns服務對外暴露,使得該pod能夠像其他pod一樣在集群中移動.服務的IP地址在集群每個容器的/etc/reslv.conf文件的nameserver中定義.kube-dns pod利用API服務器的監(jiān)控機制來訂閱Service和Endpoint的變動,以及DNS記錄的變更,是的其客戶端總是能夠獲取到最新的DNS信息.客觀的說,在Service和Endpoint資源發(fā)生變化到DNS pod收到訂閱通知時間點之間,DNS記錄可能會無效

Ingress控制器

Ingress控制器運行一個反向代理服務器,根據(jù)集群中定義的Ingress,service以及Endpoint資源來配置該控制器.所以需要訂閱這些資源,然后每次其中一個發(fā)生變化則更新代理服務器的配置

盡管Ingress資源的定義指向一個Service,Ingress控制器會直接將流量轉到服務的pod而不經(jīng)過服務IP.當外部客戶端通過Ingress控制器連接時,會對客戶端IP進行保存,這使得在某些用例中,控制器比Service更受歡迎

其他插件都需要監(jiān)聽集群狀態(tài),當有變更時執(zhí)行相應動作

到此,相信大家對“Kubernetes的用途和特點是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI