主頁 > 軟體設計 > 什么是 Kubernetes?

什么是 Kubernetes?

2021-02-03 10:41:30 軟體設計

Kubernetes 是一個可移植的、可擴展的開源平臺,用于管理容器化的作業負載和服務,可促進宣告式配置和自動化, Kubernetes 擁有一個龐大且快速增長的生態系統,Kubernetes 的服務、支持和工具廣泛可用,

名稱 Kubernetes 源于希臘語,意為“舵手”或“飛行員”,Google 在 2014 年開源了 Kubernetes 專案, Kubernetes 建立在 Google 在大規模運行生產作業負載方面擁有十幾年的經驗 的基礎上,結合了社區中最好的想法和實踐,

時光回溯

讓我們回顧一下為什么 Kubernetes 如此有用,

傳統部署時代:

早期,組織在物理服務器上運行應用程式,無法為物理服務器中的應用程式定義資源邊界,這會導致資源分配問題, 例如,如果在物理服務器上運行多個應用程式,則可能會出現一個應用程式占用大部分資源的情況, 結果可能導致其他應用程式的性能下降, 一種解決方案是在不同的物理服務器上運行每個應用程式,但是由于資源利用不足而無法擴展, 并且組織維護許多物理服務器的成本很高,

虛擬化部署時代:

作為解決方案,引入了虛擬化,虛擬化技術允許你在單個物理服務器的 CPU 上運行多個虛擬機(VM), 虛擬化允許應用程式在 VM 之間隔離,并提供一定程度的安全,因為一個應用程式的資訊 不能被另一應用程式隨意訪問,

虛擬化技術能夠更好地利用物理服務器上的資源,并且因為可輕松地添加或更新應用程式 而可以實作更好的可伸縮性,降低硬體成本等等,

每個 VM 是一臺完整的計算機,在虛擬化硬體之上運行所有組件,包括其自己的作業系統,

容器部署時代:

容器類似于 VM,但是它們具有被放寬的隔離屬性,可以在應用程式之間共享作業系統(OS), 因此,容器被認為是輕量級的,容器與 VM 類似,具有自己的檔案系統、CPU、記憶體、行程空間等, 由于它們與基礎架構分離,因此可以跨云和 OS 發行版本進行移植,

容器因具有許多優勢而變得流行起來,下面列出的是容器的一些好處:

  • 敏捷應用程式的創建和部署:與使用 VM 鏡像相比,提高了容器鏡像創建的簡便性和效率,
  • 持續開發、集成和部署:通過快速簡單的回滾(由于鏡像不可變性),支持可靠且頻繁的 容器鏡像構建和部署,
  • 關注開發與運維的分離:在構建/發布時而不是在部署時創建應用程式容器鏡像, 從而將應用程式與基礎架構分離,
  • 可觀察性不僅可以顯示作業系統級別的資訊和指標,還可以顯示應用程式的運行狀況和其他指標信號,
  • 跨開發、測驗和生產的環境一致性:在便攜式計算機上與在云中相同地運行,
  • 跨云和作業系統發行版本的可移植性:可在 Ubuntu、RHEL、CoreOS、本地、 Google Kubernetes Engine 和其他任何地方運行,
  • 以應用程式為中心的管理:提高抽象級別,從在虛擬硬體上運行 OS 到使用邏輯資源在 OS 上運行應用程式,
  • 松散耦合、分布式、彈性、解放的微服務:應用程式被分解成較小的獨立部分, 并且可以動態部署和管理 - 而不是在一臺大型單機上整體運行,
  • 資源隔離:可預測的應用程式性能,
  • 資源利用:高效率和高密度,

為什么需要 Kubernetes,它能做什么?

容器是打包和運行應用程式的好方式,在生產環境中,你需要管理運行應用程式的容器,并確保不會停機, 例如,如果一個容器發生故障,則需要啟動另一個容器,如果系統處理此行為,會不會更容易?

這就是 Kubernetes 來解決這些問題的方法! Kubernetes 為你提供了一個可彈性運行分布式系統的框架, Kubernetes 會滿足你的擴展要求、故障轉移、部署模式等, 例如,Kubernetes 可以輕松管理系統的 Canary 部署,

Kubernetes 為你提供:

  • 服務發現和負載均衡

    Kubernetes 可以使用 DNS 名稱或自己的 IP 地址公開容器,如果進入容器的流量很大, Kubernetes 可以負載均衡并分配網路流量,從而使部署穩定,

  • 存盤編排

    Kubernetes 允許你自動掛載你選擇的存盤系統,例如本地存盤、公共云提供商等,

  • 自動部署和回滾

    你可以使用 Kubernetes 描述已部署容器的所需狀態,它可以以受控的速率將實際狀態 更改為期望狀態,例如,你可以自動化 Kubernetes 來為你的部署創建新容器, 洗掉現有容器并將它們的所有資源用于新容器,

  • 自動完成裝箱計算

    Kubernetes 允許你指定每個容器所需 CPU 和記憶體(RAM), 當容器指定了資源請求時,Kubernetes 可以做出更好的決策來管理容器的資源,

  • 自我修復

    Kubernetes 重新啟動失敗的容器、替換容器、殺死不回應用戶定義的 運行狀況檢查的容器,并且在準備好服務之前不將其通告給客戶端,

  • 密鑰與配置管理

    Kubernetes 允許你存盤和管理敏感資訊,例如密碼、OAuth 令牌和 ssh 密鑰, 你可以在不重建容器鏡像的情況下部署和更新密鑰和應用程式配置,也無需在堆疊配置中暴露密鑰,

Kubernetes 不是什么

Kubernetes 不是傳統的、包羅萬象的 PaaS(平臺即服務)系統, 由于 Kubernetes 在容器級別而不是在硬體級別運行,它提供了 PaaS 產品共有的一些普遍適用的功能, 例如部署、擴展、負載均衡、日志記錄和監視, 但是,Kubernetes 不是單體系統,默認解決方案都是可選和可插拔的, Kubernetes 提供了構建開發人員平臺的基礎,但是在重要的地方保留了用戶的選擇和靈活性,

Kubernetes:

  • 不限制支持的應用程式型別, Kubernetes 旨在支持極其多種多樣的作業負載,包括無狀態、有狀態和資料處理作業負載, 如果應用程式可以在容器中運行,那么它應該可以在 Kubernetes 上很好地運行,
  • 不部署源代碼,也不構建你的應用程式, 持續集成(CI)、交付和部署(CI/CD)作業流取決于組織的文化和偏好以及技術要求,
  • 不提供應用程式級別的服務作為內置服務,例如中間件(例如,訊息中間件)、 資料處理框架(例如,Spark)、資料庫(例如,mysql)、快取、集群存盤系統 (例如,Ceph),這樣的組件可以在 Kubernetes 上運行,并且/或者可以由運行在 Kubernetes 上的應用程式通過可移植機制(例如, 開放服務代理)來訪問,
  • 不要求日志記錄、監視或警報解決方案, 它提供了一些集成作為概念證明,并提供了收集和匯出指標的機制,
  • 不提供或不要求配置語言/系統(例如 jsonnet),它提供了宣告性 API, 該宣告性 API 可以由任意形式的宣告性規范所構成,
  • 不提供也不采用任何全面的機器配置、維護、管理或自我修復系統,
  • 此外,Kubernetes 不僅僅是一個編排系統,實際上它消除了編排的需要, 編排的技術定義是執行已定義的作業流程:首先執行 A,然后執行 B,再執行 C, 相比之下,Kubernetes 包含一組獨立的、可組合的控制程序, 這些程序連續地將當前狀態驅動到所提供的所需狀態, 如何從 A 到 C 的方式無關緊要,也不需要集中控制,這使得系統更易于使用 且功能更強大、系統更健壯、更為彈性和可擴展,

https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/

  • 查閱 Kubernetes 組件
  • 開始 Kubernetes 入門?

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/255888.html

標籤:其他

上一篇:關于年度述職報告總結雜語

下一篇:2021年的今天,如何成為一名專業的前端工程師?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more