新聞中心
簡(jiǎn)介
Kubernetes 是一個(gè)可移植的、可擴(kuò)展的開(kāi)源平臺(tái),用于管理容器化的工作負(fù)載和服務(wù),可促進(jìn)聲明式配置和自動(dòng)化。 Kubernetes 擁有一個(gè)龐大且快速增長(zhǎng)的生態(tài)系統(tǒng)。Kubernetes 的服務(wù)、支持和工具廣泛可用。

Kubernetes 這個(gè)名字源于希臘語(yǔ),意為“舵手”或“飛行員”。K8S 這個(gè)縮寫(xiě)是因?yàn)?nbsp;k 和 s 之間有八個(gè)字符的關(guān)系。 Google 在 2014 年開(kāi)源了 Kubernetes 項(xiàng)目。Kubernetes 建立在 Google 在大規(guī)模運(yùn)行生產(chǎn)工作負(fù)載方面擁有十幾年的經(jīng)驗(yàn) 的基礎(chǔ)上,結(jié)合了社區(qū)中最好的想法和實(shí)踐。
時(shí)光回溯
讓我們回顧一下為什么 Kubernetes 如此有用。
傳統(tǒng)部署時(shí)代:
早期,各個(gè)組織機(jī)構(gòu)在物理服務(wù)器上運(yùn)行應(yīng)用程序。無(wú)法為物理服務(wù)器中的應(yīng)用程序定義資源邊界,這會(huì)導(dǎo)致資源分配問(wèn)題。 例如,如果在物理服務(wù)器上運(yùn)行多個(gè)應(yīng)用程序,則可能會(huì)出現(xiàn)一個(gè)應(yīng)用程序占用大部分資源的情況, 結(jié)果可能導(dǎo)致其他應(yīng)用程序的性能下降。 一種解決方案是在不同的物理服務(wù)器上運(yùn)行每個(gè)應(yīng)用程序,但是由于資源利用不足而無(wú)法擴(kuò)展, 并且維護(hù)許多物理服務(wù)器的成本很高。
虛擬化部署時(shí)代:
作為解決方案,引入了虛擬化。虛擬化技術(shù)允許你在單個(gè)物理服務(wù)器的 CPU 上運(yùn)行多個(gè)虛擬機(jī)(VM)。 虛擬化允許應(yīng)用程序在 VM 之間隔離,并提供一定程度的安全,因?yàn)橐粋€(gè)應(yīng)用程序的信息 不能被另一應(yīng)用程序隨意訪(fǎng)問(wèn)。
虛擬化技術(shù)能夠更好地利用物理服務(wù)器上的資源,并且因?yàn)榭奢p松地添加或更新應(yīng)用程序 而可以實(shí)現(xiàn)更好的可伸縮性,降低硬件成本等等。
每個(gè) VM 是一臺(tái)完整的計(jì)算機(jī),在虛擬化硬件之上運(yùn)行所有組件,包括其自己的操作系統(tǒng)。
容器部署時(shí)代:
容器類(lèi)似于 VM,但是它們具有被放寬的隔離屬性,可以在應(yīng)用程序之間共享操作系統(tǒng)(OS)。 因此,容器被認(rèn)為是輕量級(jí)的。容器與 VM 類(lèi)似,具有自己的文件系統(tǒng)、CPU、內(nèi)存、進(jìn)程空間等。 由于它們與基礎(chǔ)架構(gòu)分離,因此可以跨云和 OS 發(fā)行版本進(jìn)行移植。
容器因具有許多優(yōu)勢(shì)而變得流行起來(lái)。下面列出的是容器的一些好處:
- 敏捷應(yīng)用程序的創(chuàng)建和部署:與使用 VM 鏡像相比,提高了容器鏡像創(chuàng)建的簡(jiǎn)便性和效率。
- 持續(xù)開(kāi)發(fā)、集成和部署:通過(guò)快速簡(jiǎn)單的回滾(由于鏡像不可變性),支持可靠且頻繁的 容器鏡像構(gòu)建和部署。
- 關(guān)注開(kāi)發(fā)與運(yùn)維的分離:在構(gòu)建/發(fā)布時(shí)而不是在部署時(shí)創(chuàng)建應(yīng)用程序容器鏡像, 從而將應(yīng)用程序與基礎(chǔ)架構(gòu)分離。
- 可觀(guān)察性:不僅可以顯示操作系統(tǒng)級(jí)別的信息和指標(biāo),還可以顯示應(yīng)用程序的運(yùn)行狀況和其他指標(biāo)信號(hào)。
- 跨開(kāi)發(fā)、測(cè)試和生產(chǎn)的環(huán)境一致性:在便攜式計(jì)算機(jī)上與在云中相同地運(yùn)行。
- 跨云和操作系統(tǒng)發(fā)行版本的可移植性:可在 Ubuntu、RHEL、CoreOS、本地、 Google Kubernetes Engine 和其他任何地方運(yùn)行。
- 以應(yīng)用程序?yàn)橹行牡墓芾恚禾岣叱橄蠹?jí)別,從在虛擬硬件上運(yùn)行 OS 到使用邏輯資源在 OS 上運(yùn)行應(yīng)用程序。
- 松散耦合、分布式、彈性、解放的微服務(wù):應(yīng)用程序被分解成較小的獨(dú)立部分, 并且可以動(dòng)態(tài)部署和管理 - 而不是在一臺(tái)大型單機(jī)上整體運(yùn)行。
- 資源隔離:可預(yù)測(cè)的應(yīng)用程序性能。
- 資源利用:高效率和高密度。
為什么需要 Kubernetes,它能做什么?
容器是打包和運(yùn)行應(yīng)用程序的好方式。在生產(chǎn)環(huán)境中,你需要管理運(yùn)行應(yīng)用程序的容器,并確保不會(huì)停機(jī)。 例如,如果一個(gè)容器發(fā)生故障,則需要啟動(dòng)另一個(gè)容器。如果系統(tǒng)處理此行為,會(huì)不會(huì)更容易?
這就是 Kubernetes 來(lái)解決這些問(wèn)題的方法! Kubernetes 為你提供了一個(gè)可彈性運(yùn)行分布式系統(tǒng)的框架。 Kubernetes 會(huì)滿(mǎn)足你的擴(kuò)展要求、故障轉(zhuǎn)移、部署模式等。 例如,Kubernetes 可以輕松管理系統(tǒng)的 Canary 部署。
Kubernetes 為你提供:
- 服務(wù)發(fā)現(xiàn)和負(fù)載均衡
Kubernetes 可以使用 DNS 名稱(chēng)或自己的 IP 地址公開(kāi)容器,如果進(jìn)入容器的流量很大, Kubernetes 可以負(fù)載均衡并分配網(wǎng)絡(luò)流量,從而使部署穩(wěn)定。
- 存儲(chǔ)編排
Kubernetes 允許你自動(dòng)掛載你選擇的存儲(chǔ)系統(tǒng),例如本地存儲(chǔ)、公共云提供商等。
-
自動(dòng)部署和回滾
你可以使用 Kubernetes 描述已部署容器的所需狀態(tài),它可以以受控的速率將實(shí)際狀態(tài) 更改為期望狀態(tài)。例如,你可以自動(dòng)化 Kubernetes 來(lái)為你的部署創(chuàng)建新容器, 刪除現(xiàn)有容器并將它們的所有資源用于新容器。
-
自動(dòng)完成裝箱計(jì)算
Kubernetes 允許你指定每個(gè)容器所需 CPU 和內(nèi)存(RAM)。 當(dāng)容器指定了資源請(qǐng)求時(shí),Kubernetes 可以做出更好的決策來(lái)管理容器的資源。
-
自我修復(fù)
Kubernetes 重新啟動(dòng)失敗的容器、替換容器、殺死不響應(yīng)用戶(hù)定義的 運(yùn)行狀況檢查的容器,并且在準(zhǔn)備好服務(wù)之前不將其通告給客戶(hù)端。
-
密鑰與配置管理
Kubernetes 允許你存儲(chǔ)和管理敏感信息,例如密碼、OAuth 令牌和 ssh 密鑰。 你可以在不重建容器鏡像的情況下部署和更新密鑰和應(yīng)用程序配置,也無(wú)需在堆棧配置中暴露密鑰。
Kubernetes 不是什么
Kubernetes 不是傳統(tǒng)的、包羅萬(wàn)象的 PaaS(平臺(tái)即服務(wù))系統(tǒng)。 由于 Kubernetes 在容器級(jí)別而不是在硬件級(jí)別運(yùn)行,它提供了 PaaS 產(chǎn)品共有的一些普遍適用的功能, 例如部署、擴(kuò)展、負(fù)載均衡、日志記錄和監(jiān)視。 但是,Kubernetes 不是單體系統(tǒng),默認(rèn)解決方案都是可選和可插拔的。 Kubernetes 提供了構(gòu)建開(kāi)發(fā)人員平臺(tái)的基礎(chǔ),但是在重要的地方保留了用戶(hù)的選擇和靈活性。
Kubernetes:
- 不限制支持的應(yīng)用程序類(lèi)型。 Kubernetes 旨在支持極其多種多樣的工作負(fù)載,包括無(wú)狀態(tài)、有狀態(tài)和數(shù)據(jù)處理工作負(fù)載。 如果應(yīng)用程序可以在容器中運(yùn)行,那么它應(yīng)該可以在 Kubernetes 上很好地運(yùn)行。
- 不部署源代碼,也不構(gòu)建你的應(yīng)用程序。 持續(xù)集成(CI)、交付和部署(CI/CD)工作流取決于組織的文化和偏好以及技術(shù)要求。
- 不提供應(yīng)用程序級(jí)別的服務(wù)作為內(nèi)置服務(wù),例如中間件(例如,消息中間件)、 數(shù)據(jù)處理框架(例如,Spark)、數(shù)據(jù)庫(kù)(例如,mysql)、緩存、集群存儲(chǔ)系統(tǒng) (例如,Ceph)。這樣的組件可以在 Kubernetes 上運(yùn)行,并且/或者可以由運(yùn)行在 Kubernetes 上的應(yīng)用程序通過(guò)可移植機(jī)制(例如, 開(kāi)放服務(wù)代理)來(lái)訪(fǎng)問(wèn)。
- 不要求日志記錄、監(jiān)視或警報(bào)解決方案。 它提供了一些集成作為概念證明,并提供了收集和導(dǎo)出指標(biāo)的機(jī)制。
- 不提供或不要求配置語(yǔ)言/系統(tǒng)(例如 jsonnet),它提供了聲明性 API, 該聲明性 API 可以由任意形式的聲明性規(guī)范所構(gòu)成。
- 不提供也不采用任何全面的機(jī)器配置、維護(hù)、管理或自我修復(fù)系統(tǒng)。
- 此外,Kubernetes 不僅僅是一個(gè)編排系統(tǒng),實(shí)際上它消除了編排的需要。 編排的技術(shù)定義是執(zhí)行已定義的工作流程:首先執(zhí)行 A,然后執(zhí)行 B,再執(zhí)行 C。 相比之下,Kubernetes 包含一組獨(dú)立的、可組合的控制過(guò)程, 這些過(guò)程連續(xù)地將當(dāng)前狀態(tài)驅(qū)動(dòng)到所提供的所需狀態(tài)。 如何從 A 到 C 的方式無(wú)關(guān)緊要,也不需要集中控制,這使得系統(tǒng)更易于使用 且功能更強(qiáng)大、系統(tǒng)更健壯、更為彈性和可擴(kuò)展。
本文名稱(chēng):創(chuàng)新互聯(lián)kubernetes教程:Kubernetes簡(jiǎn)介
文章位置:http://fisionsoft.com.cn/article/dhdoeoc.html


咨詢(xún)
建站咨詢(xún)
