(Kubernetes)k8s和docker的關係

Kubernetes 是一個自動化部署、伸縮和操作應用程序容器的開源平臺。

使用 Kubernetes,你可以快速、高效地滿足用戶以下的需求:

快速精準地部署應用程序

即時伸縮你的應用程序

無縫展現新特徵

限制硬件用量僅爲所需資源

我們的目標是培育一個工具和組件的生態系統,以減緩在公有云或私有云中運行的程序的壓力。

Kubernetes 的優勢

可移動: 公有云、私有云、混合雲、多態雲

可擴展: 模塊化、插件化、可掛載、可組合

自修復: 自動部署、自動重啓、自動複製、自動伸縮

Google 公司於 2014 年啓動了 Kubernetes 項目。Kubernetes 是在 Google 的長達 15 年的成規模的產品級任務的經驗下構建的,結合了來自社區的最佳創意和實踐經驗。

容器優勢總結:

敏捷的應用創建與部署:相比虛擬機鏡像,容器鏡像的創建更簡便、更高效。

持續的開發、集成,以及部署:在快速回滾下提供可靠、高頻的容器鏡像編譯和部署(基於鏡像的不可變性)。

開發與運營的關注點分離:由於容器鏡像是在編譯/發佈期創建的,因此整個過程與基礎架構解耦。

跨開發、測試、產品階段的環境穩定性:在筆記本電腦上的運行結果和在雲上完全一致。

在雲平臺與 OS 上分發的可轉移性:可以在 Ubuntu、RHEL、CoreOS、預置系統、Google 容器引擎,乃至其它各類平臺上運行。

以應用爲核心的管理: 從在虛擬硬件上運行系統,到在利用邏輯資源的系統上運行程序,從而提升了系統的抽象層級。

鬆散耦聯、分佈式、彈性、無拘束的微服務:整個應用被分散爲更小、更獨立的模塊,並且這些模塊可以被動態地部署和管理,而不再是存儲在大型的單用途機器上的臃腫的單一應用棧。

資源隔離:增加程序表現的可預見性。

資源利用率:高效且密集。

爲什麼我需要 Kubernetes,它能做什麼?

至少,Kubernetes 能在實體機或虛擬機集羣上調度和運行程序容器。而且,Kubernetes 也能讓開發者斬斷聯繫着實體機或虛擬機的“鎖鏈”,從以主機爲中心的架構躍至以容器爲中心的架構。該架構最終提供給開發者諸多內在的優勢和便利。Kubernetes 提供給基礎架構以真正的以容器爲中心的開發環境。

Kubernetes 滿足了一系列產品內運行程序的普通需求,諸如:

協調輔助進程,協助應用程序整合,維護一對一“程序 – 鏡像”模型。

掛載存儲系統

分佈式機密信息

檢查程序狀態

複製應用實例

使用橫向莢式自動縮放

命名與發現

負載均衡

滾動更新

資源監控

訪問並讀取日誌

程序調試

提供驗證與授權

以上兼具平臺即服務(PaaS)的簡化和基礎架構即服務(IaaS)的靈活,並促進了在平臺服務提供商之間的遷移。

Kubernetes 是一個什麼樣的平臺?

雖然 Kubernetes 提供了非常多的功能,總會有更多受益於新特性的新場景出現。針對特定應用的工作流程,能被流水線化以加速開發速度。特別的編排起初是可接受的,這往往需要擁有健壯的大規模自動化機制。這也是爲什麼 Kubernetes 也被設計爲一個構建組件和工具的生態系統的平臺,使其更容易地部署、縮放、管理應用程序。

標籤(label)可以讓用戶按照自己的喜好組織資源。 註釋(annotation)讓用戶在資源裏添加客戶信息,以優化工作流程,爲管理工具提供一個標示調試狀態的簡單方法。

此外,Kubernetes 控制面板是由開發者和用戶均可使用的同樣的 API 構建的。用戶可以編寫自己的控制器,比如 調度器(scheduler),使用可以被通用的命令行工具識別的他們自己的 API。

這種設計讓大量的其它系統也能構建於 Kubernetes 之上。

Kubernetes 不是什麼?

Kubernetes 不是傳統的、全包容的平臺即服務(Paas)系統。它尊重用戶的選擇,這很重要。

Kubernetes:

並不限制支持的程序類型。它並不檢測程序的框架 (例如,Wildfly),也不限制運行時支持的語言集合 (比如, Java、Python、Ruby),也不僅僅迎合 12 因子應用程序,也不區分 應用 與 服務 。Kubernetes 旨在支持儘可能多種類的工作負載,包括無狀態的、有狀態的和處理數據的工作負載。如果某程序在容器內運行良好,它在 Kubernetes 上只可能運行地更好。

不提供中間件(例如消息總線)、數據處理框架(例如 Spark)、數據庫(例如 mysql),也不把集羣存儲系統(例如 Ceph)作爲內置服務。但是以上程序都可以在 Kubernetes 上運行。

沒有“點擊即部署”這類的服務市場存在。

不部署源代碼,也不編譯程序。持續集成 (CI) 工作流程是不同的用戶和項目擁有其各自不同的需求和表現的地方。所以,Kubernetes 支持分層 CI 工作流程,卻並不監聽每層的工作狀態。

允許用戶自行選擇日誌、監控、預警系統。( Kubernetes 提供一些集成工具以保證這一概念得到執行)

不提供也不管理一套完整的應用程序配置語言/系統(例如 jsonnet)。

不提供也不配合任何完整的機器配置、維護、管理、自我修復系統。

另一方面,大量的 PaaS 系統運行在 Kubernetes 上,諸如 Openshift、Deis,以及 Eldarion。你也可以開發你的自定義 PaaS,整合上你自選的 CI 系統,或者只在 Kubernetes 上部署容器鏡像。

因爲 Kubernetes 運營在應用程序層面而不是在硬件層面,它提供了一些 PaaS 所通常提供的常見的適用功能,比如部署、伸縮、負載平衡、日誌和監控。然而,Kubernetes 並非鐵板一塊,這些默認的解決方案是可供選擇,可自行增加或刪除的。

而且, Kubernetes 不只是一個編排系統 。事實上,它滿足了編排的需求。 編排 的技術定義是,一個定義好的工作流程的執行:先做 A,再做 B,最後做 C。相反地, Kubernetes 囊括了一系列獨立、可組合的控制流程,它們持續驅動當前狀態向需求的狀態發展。從 A 到 C 的具體過程並不唯一。集中化控制也並不是必須的;這種方式更像是編舞。這將使系統更易用、更高效、更健壯、複用性、擴展性更強。

Kubernetes 這個單詞的含義?k8s?

Kubernetes 這個單詞來自於希臘語,含義是 舵手 或 領航員 。其詞根是 governor 和 cybernetic。 K8s 是它的縮寫,用 8 字替代了“ubernete”。

本文轉自CSDN-(Kubernetes)k8s和docker的關係

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章