您好,登錄后才能下訂單哦!
本篇內容介紹了“Kubernetes的概念和作用是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
是時候該學習Kubernetes
了,不然都不敢說自己了解容器、了解Docker。
Kubernetes
,它是一個全新的基于容器技術的分布式架構方案,近些年在容器領域使用非常廣泛,作為容器化部署實施的典型方案。
看似很新(相對于剛出現時來說),但它卻是谷歌十幾年以來大規模應用容器技術的經驗積累和升華的重要成果。確切地說,Kubernetes
是谷歌嚴格保密十幾年的秘密武器——Borg
的一個開源版本。Borg是谷歌的一個久負盛名的內部使用的大規模集群管理系統,它基于容器技術,目的是實現資源管理的自動化,以及跨過個數據中心資源利用率的最大化。十幾年以來,谷歌一直通過Borg
系統管理者數據龐大的應用程序集群,由于谷歌員工都簽署了保密協議,即使離職也不能泄露Borg
的內部設計,所以外界一直無法了解關于它的更多信息。直到2015年4月,傳聞許久的Borg
論文發布,伴隨著Kubernetes
的高調宣傳被谷歌首次公開,大家才得以了解它的更多內幕。正式由于站在Borg
這個前輩的肩膀上,汲取了Borg
過去十年間的經驗與教訓,所以Kubernetes
一經開源就一鳴驚人,并迅速稱霸容器領域。
Borg
就是一個噴氣式飛機的駕駛系統,非常的專業和高大上,他適用于谷歌這樣的大公司,它有幾百萬的機器。Kubernetes
是一個它的簡化版,它是一輛設計優良的轎車,它適合中小型公司,更方便的用它來調度自己的集群。
Kubernetes
是用于自動部署,擴展和管理容器化應用程序的開源系統,它將組成應用程序的容器組合成邏輯單元,以便于管理和服務發現。Kubernetes
源自谷歌15年生產環境的運維經驗,同時凝聚了社區的最佳創意和實踐。
Kubernetes
,構建在Docker技術之上,為跨主機的容器化應用提供資源調度、服務發現、高可用管理和彈性伸縮等一整套功能,它提供了完善的管理工具,涵蓋開發、部署測試、運維監控等各個環節。它的目標不僅僅是一個編排系統,更是提供一個規范,可以讓你來描述集群的架構,定義服務的最終狀態,Kubernetes
可以幫你將系統自動達到和維持在這個狀態。
亮點1: Kubernetes
以“一切以服務(Service)為中心,一切圍繞服務運轉”作為指導思想的創新型產品。它在功能和架構設計上始終遵循著這一指導思想,構建在Kubernetes
上的系統不僅可以獨立運行在物理機、虛擬機集群或企業私有云上,也可以被托管在公有云上。
亮點2: Kubernetes
是一個開放的開發平臺。與J2EE不同,它不局限于任何一種語言,沒有限定任何編程接口,所以不論是用Java、Go、C++還是Python編寫的程序,都可以被映射為Kubernetes
的Service,并通過標準的TCP通訊協議進行交互。此外,Kubernetes
平臺對現有的編程語言、編程框架、中間件沒有任何侵入性,做到了零侵入,因此現有的系統也很容易改造升級并遷移到Kubernetes
平臺之上。
亮點3: Kubernetes
的另一個亮點是自動化。在Kubernetes
的解決方案中,一個可以自我擴展、自我診斷,并且容易升級,在收到服務擴容的請求后,Kubernetes
會觸發調度流程,最終在選定的目標節點上啟動相應數據的服務實例副本,這些服務實例副本在啟動成功后會自動加入負載均衡器中并生效,整個過程無須額外的人工操作。另外,Kubernetes
會定時巡查每個服務的所有實例的可用性,確保服務實例的數量始終保持為預期的數量,當它發現某個實例不可用時,會自動重啟該實例或者其他節點上重新調度、運行一個新實例,這樣一個復雜的過程無須人工干預即可全部自動完成。
亮點4: Kubernetes
是一個完備的分布式系統支撐平臺。具備完備的集群管理能力,包括多層次的安全防護和準入機制、多租戶應用支撐能力、透明的服務注冊和服務發現機制、內建的智能負載均衡器、強大的故障發現和自我修復能力、服務滾動升級和在線擴容能力、可擴展的資源自動調度機制,以及多粒度的資源配額管理能力。同時,Kubernetes
提供了完善的管理工具,這些涵蓋了包括開發、部署測試、運維監控在內的各個環節。因此,Kubernetes
是一個全新的基于容器技術的分布式架構解決方案,并且是一個一站式的完備的分布式系統開發和支持平臺。
隨著容器化部署環境限制、語言差異、容器數量的龐大、負載均衡、故障檢測、故障修復等問題,倘若將過多的精力、時間放在這些地方,其工作量將會多大,將會讓很多企業、產品對容器望而止步。在容器化的時代,Kubernetes
足以免去上述面臨的問題,讓容器化使用變得的更加容易、輕松,只需花費更多的時間去完成業務功能的開發。
Kubernetes
特性如下:
Service拓撲: 基于集群拓撲的服務流量路由。可以讓一個服務基于集群的Node
拓撲進行流量路由。例如,一個服務可以指定流量是被優先路由到一個和客戶端在同一個Node
或者在同一可用區域的端點。
端點切片: Kubernetes 集群中網絡端點的可擴展跟蹤。
存儲編排: 自動掛載所選存儲系統,包括本地存儲、諸如 GCP 或 AWS 之類公有云提供商所提供的存儲或者諸如 NFS、iSCSI、Gluster、Ceph、Cinder 或 Flocker 這類網絡存儲系統。
Secret和配置管理: 部署和更新 Secrets 和應用程序的配置而不必重新構建容器鏡像,且不必將軟件堆棧配置中的秘密信息暴露出來。
批量執行: 除了服務之外,Kubernetes 還可以管理你的批處理和 CI 工作負載,在期望時替換掉失效的容器。
服務發現與負載均衡: 無需修改您的應用程序即可使用陌生的服務發現機制。Kubernetes 為容器提供了自己的 IP 地址和一個 DNS 名稱,并且可以在它們之間實現負載均衡。
自我修復:重新啟動失敗的容器,在節點死亡時替換并重新調度容器,殺死不響應用戶定義的健康檢查的容器,并且在它們準備好服務之前不會將它們公布給客戶端。
自動化上線和回滾: Kubernetes 會分步驟地將針對應用或其配置的更改上線,同時監視應用程序運行狀況以確保你不會同時終止所有實例。如果出現問題,Kubernetes 會為你回滾所作更改。你應該充分利用不斷成長的部署方案生態系統。
自動裝箱: 根據資源需求和其他約束自動放置容器,同時避免影響可用性。將關鍵性工作負載和盡力而為性質的服務工作負載進行混合放置,以提高資源利用率并節省更多資源。
IPv4/IPv6雙協議棧: 為 Pod 和 Service 分配 IPv4 和 IPv6 地址。
水平擴縮: 使用一個簡單的命令、一個UI或基于CPU使用情況自動對應用程序進行擴縮。
使用Kubernetes
的理由很多,最重要的理由是,IT行業從來都是由新技術驅動的。
當前,Docker容器化技術已經被很多公司采用,從單機走向集群已成為必然。云計算的蓬勃發展正在加速這一進程。Kubernetes
作為當前被業界廣泛認可和看好的基于Docker的大規模容器化分布式系統解決方案,得到了以谷歌為首的IT巨頭們的大力宣傳和維持推進。
2015年,谷歌聯合20多家公司一起建立了CNCF
(Cloud Native Computing Foundation,云原生計算基金會)開源組織來推廣Kubernetes
,并由此開創了云原生應用(Cloud Native Application)的新時代。作為CNCF“欽定”的官方云原生平臺,Kubernetes
正在顛覆應用程序的開發方式。
不妨從以下幾個方面來看看,你一定會喜歡上它的哦!
使用 Kubernetes
部署任何應用都是小菜一碟。只要應用可以打包成鏡像,能夠容器部署,Kubernetes
就一定能啟動它。
不管什么語言、什么框架寫的應用(如:Java, Python, Node.js),Kubernetes
都可以在任何環境中安全的啟動它,如:物理服務器、虛擬機、云環境。
如果你有換云環境的需求,例如從GCP到AWS,使用Kubernetes
的話,你就不用有任何擔心。
Kubernetes
完全兼容各種云服務提供商,例如 Google Cloud
、Amazon
、Microsoft Azure
,還可以工作在 CloudStack
, OpenStack
, OVirt
, Photon
, VSphere
等。
看下圖,左邊是4個虛擬機,黃色和藍色部分是運行的應用,白色部分是未使用的內存和處理器資源。
右邊,同樣的應用打包運行在容器中。
Kubernetes
如果發現有節點工作不飽和,便會重新分配pod
,幫助我們節省開銷,高效的利用內存、處理器等資源。
如果一個節點宕機了,Kubernetes
會自動重新創建之前運行在此節點上的pod
,在其他節點上運行。
網絡、負載均衡、復制等特性,對于Kubernetes
都是開箱即用的。
pod是無狀態運行的,任何時候有pod宕了,立馬會有其他pod接替它的工作,用戶完全感覺不到。
如果用戶量突然暴增,現有的pod規模不足了,那么會自動創建出一批新的pod,以適應當前的需求。
反之亦然,當負載降下來的時候,Kubernetes
也會自動縮減 pod 的數量。
你不必精通于Chef
和 Ansible
這類工具,只需要對 CI 服務寫個簡單的腳本然后運行它,就會使用你的代碼創建一個新的 pod,并部署到 Kubernetes
集群里面。
應用打包在容器中使其可以安全的運行在任何地方,例如你的 PC、一個云服務器,使得測試極其簡單。
Kubernetes
如此流行的一個重要原因是:應用會一直順利運行,不會被pod或節點的故障所中斷。
如果出現故障,Kubernetes
會創建必要數量的應用鏡像,并分配到健康的pod或節點中,直到系統恢復。
而且用戶不會感到任何不適。
一個容器化的基礎設施是有自愈能力的,可以提供應用程序的不間斷操作,即使一部分基礎設施出現故障。
Kubernetes
使得應用的啟動、遷移、部署變得簡單又安全。
不必擔心應用遷移后工作出現問題,也不用擔心一臺服務器無法應付突發的用戶量。
需要注意的是,你的應用最好使用微服務架構進行開發,因為微服務應用比單體應用更適合做容器化。
不要為了單純的使用Kubernetes
而引入,要看你的系統規模是否值得去用,否則可能適得其反,畢竟Kubernetes
的學習是需要一定成本。
參考文章:
http://www.mamicode.com/info-detail-1436432.html
https://yellow.systems/blog/why-you-should-use-kubernetes-in-your-next-project
“Kubernetes的概念和作用是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。