摘要:提供用于獲取有關容器和容器組狀態的實時信息的服務,以及有關群集中開發人員操作的詳細信息。集群最高級別的抽象是指運行本身是集群應用程序的一組機器及其管理的容器,一個集群必須有一個,即命令和控制集群中所有其他機器的系統。
Docker容器改變了人們對開發、部署和維護軟件的思考方式,利用現代操作系統的本機隔離功能,容器支持類似于虛擬機的關注點分離,但是與基于虛擬機監控程序的虛擬機相比,它的開銷要小得多,部署的靈活性也要大得多。
容器非常輕巧靈活,它們產生了新的應用程序架構,新方法是將構成應用程序的不同服務打包到多帶帶的容器中,并在物理或虛擬機群集中部署這些容器。這就需要容器編排 - 一種自動化基于容器的應用程序的部署,管理,擴展,網絡和可用性的工具。
Kubernetes,這個源自Google的開源項目可以自動化大規模部署和管理多容器應用程序的過程,雖然Kubernetes主要使用Docker,但它也適用于符合容器圖像格式和運行時的Open Container Initiative(OCI)標準的任何容器系統。而且由于Kubernetes是開源的,對其使用方式的限制相對較少,任何想要運行容器的人都可以自由使用它。
一、Kubernetes VS Docker
Kubernetes不會取代Docker,但會增加它的功能,但是,Kubernetes 確實取代了Docker中出現的一些更高級別的技術。
其中一種技術是Docker Swarm,一個與Docker捆綁在一起的編排器,它仍然可以使用Swarm而不是Kubernetes,但Docker公司已經選擇讓Kubernetes成為Docker社區和Docker Enterprise版本的一部分。
并不是說Kubernetes是Swarm的直接替代品。Kubernetes比Swarm復雜得多,需要更多的工作才能部署,但同樣,這項工作旨在從長遠來看提供巨大的回報- 一個更易于管理,更具彈性的應用程序基礎架構。對于開發工作和較小的容器集群,Docker Swarm提供了一個更簡單的選擇。
二、Kubernetes 集裝箱管理
高級語言(如Python或C#)為用戶提供抽象和庫,以便他們可以專注于完成手頭的任務,而不是陷入內存管理的細節。
Kubernetes與容器編排的工作方式相同,它為管理容器組提供了高級抽象,允許Kubernetes用戶專注于他們期待的應用程序運行方式,而不是擔心具體的實現細節。他們需要的行為與提供它們的組件分離。
Kubernetes旨在自動化和簡化許多容器管理任務,它具備如下的關鍵功能:
Kubernetes部署了多容器應用程序
許多應用程序不僅存在于一個容器中,它們是由一堆容器構建,可能是一個數據庫,或是Web前端,也許是一個緩存服務器。微服務也是以這種方式構建的,通常為每個服務、Web協議和API繪制多帶帶的數據庫,以將服務聯系在一起。雖然將應用程序作為微服務來構建有長期的優勢,但它帶來了許多短期的繁重工作。
Kubernetes減少了實現此類應用程序所需的工作量,你告訴Kubernetes如何從一組容器中組成一個應用程序,Kubernetes處理將它們推出,保持它們運行并保持組件彼此同步的細節。
Kubernetes擴展了容器化應用程序
應用程序需要能夠上下調整以滿足需求,平衡傳入負載,并更好地利用物理資源。Kubernetes具備做所有這些事情的條件,并以自動化,不干涉的方式進行。
Kubernetes推出新版本的應用程序,無需停機
基于容器的應用程序開發工作流程的部分吸引力在于實現持續集成和交付,Kubernetes具有允許對新版本的容器映像進行優雅更新的機制,包括在出現問題時進行回滾。
Kubernetes提供網絡,服務發現和存儲
Kubernetes處理許多其他基于容器的應用程序的復雜細節,讓容器相互通信,處理服務發現以及為來自各種提供商(例如,亞馬遜的EBS)的容器提供持久存儲都通過Kubernetes及其API進行處理。
Kubernetes提供監視,日志記錄和調試
眾所周知,容器是不透明的。Kubernetes提供用于獲取有關容器和容器組狀態的實時信息的服務,以及有關群集中開發人員操作的詳細信息。
Kubernetes允許進行非破壞性自定義
Kubernetes集群可能需要調整其目標環境,但一些調整會使未來的升級變得困難。Kubernetes的本機功能之一,自定義資源定義,允許開發人員擴展和自定義Kubernetes的API,而不會破壞與Kubernetes庫存的兼容性。
Kubernetes在任何環境中運營
Kubernetes與特定的云環境或技術無關,它可以在任何支持容器的地方運行,這意味著公共云,私有堆棧,虛擬和物理硬件以及單個開發人員的筆記本電腦都是Kubernetes可以玩的地方。Kubernetes集群也可以運行上述任何組合。這甚至包括Windows和Linux系統的混合。
三、Kubernetes 如何運作
Kubernetes的架構利用了各種概念和抽象,其中一些是現有的,熟悉的概念的變體,但其他一些是Kubernetes特有的。
Kubernetes集群
最高級別的Kubernetes抽象(cluster)是指運行Kubernetes(本身是集群應用程序)的一組機器及其管理的容器,一個Kubernetes集群必須有一個master,即命令和控制集群中所有其他Kubernetes機器的系統。一個高可用性的Kubernetes集群在多臺機器上復制master的設施,但一次只有一個主控形狀運行作業調度程序和控制器管理器。
Kubernetes節點和pods
每個集群都包含Kubernetes節點,節點可以是物理機器或虛擬機,同樣,這個想法是抽象的:無論應用程序運行在什么地方,Kubernetes都會處理在那個底層上的部署。還可以確保某些容器僅在虛擬機上運行或僅在裸金屬上運行。
節點運行pods,這是可以創建或管理的最基本的Kubernetes對象,每個pod表示Kubernetes中應用程序或運行進程的單個實例,由一個或多個容器組成。Kubernetes開始、停止并將pod中的所有容器作為一個組復制。pods讓用戶關注應用程序,而不是容器本身。有關如何配置Kubernetes的詳細信息,從pods的狀態開始,保存在一個分布式鍵值存儲Etcd中。
根據需要在節點上創建和銷毀pods,以符合用戶在pod定義中指定的所需狀態。Kubernetes提供了一個稱為控制器的抽象概念,用于處理如何旋轉、展開和旋轉pods的物流。控制器有幾種不同的風格,這取決于所管理的應用程序的類型。例如,最近引入的“StatefulSet”控制器用于處理需要持久狀態的應用程序。另一種控制器,部署,用于向上或向下擴展應用程序,將應用程序更新為新版本,或者在出現問題時將應用程序回滾到已知的良好版本。
Kubernetes服務
因為pods根據需要生存和死亡,我們需要一個不同的抽象來處理應用程序生命周期。應用程序應該是一個持久化實體,即使運行構成應用程序的容器的pod本身不是持久的。為此,Kubernetes提供了一種稱為服務的抽象。
服務描述了如何通過網絡訪問給定的pod組(或其他Kubernetes對象),正如Kubernetes文檔所說,構成應用程序后端的pod可能會發生變化,但前端不應該知道或跟蹤它。服務使這成為可能。
Kubernetes內部的一些內容使圖片更加完美,該調度包裹了工作量,以使他們在整個資源平衡和使部署滿足應用程序定義的要求節點。所述控制器管理器保證了系統的應用程序,工作負載,狀態等-匹配ETCD的配置設置定義的期望的狀態。
重要的是要記住,容器使用的低級機制(如Docker本身)都不會被Kubernetes 取代。相反,為了保持應用程序大規模運行,Kubernetes提供了一組更大的抽象來使用它們。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/6242.html
摘要:近期,儀表盤和外部代理接連被發現存在安全問題。本文將更深入解讀這兩個安全漏洞的原理會對您的部署造成的影響以及相應的應對之策。在中,儀表盤作為每個集群環境的一部分包含在內但是,部署不受影響,因為充當了儀表盤的身份驗證授權和代理。 近期,Kubernetes儀表盤和外部IP代理接連被發現存在安全問題。針對這兩個漏洞,Kubernetes發布了相應的補丁版本供會受漏洞影響的用戶解決問題。本文...
摘要:中暴露服務訪問自己實現了一個,它本質上是包裝了,在真正創建負載均衡器上它會調用來創建自身的。 Kubernetes概述 最近的一年,kubernetes的發展如此閃耀,正被越來越多的公司采納用于生產環境的實踐。同時,我們可以在最著名的開發者問答社區StackOverflow上看到k8s的問題數量的增長曲線(2015.5-2016.5),開發者是用腳投票的,從這一點看也無疑證明了k8s的...
摘要:中暴露服務訪問自己實現了一個,它本質上是包裝了,在真正創建負載均衡器上它會調用來創建自身的。 Kubernetes概述 最近的一年,kubernetes的發展如此閃耀,正被越來越多的公司采納用于生產環境的實踐。同時,我們可以在最著名的開發者問答社區StackOverflow上看到k8s的問題數量的增長曲線(2015.5-2016.5),開發者是用腳投票的,從這一點看也無疑證明了k8s的...
摘要:在網絡管理上目前為止是最為缺失的一個環節,但這將在中有極大的改變。今天這篇帖子是由小組撰寫,描述中將加入網絡策略關于安全隔離多租戶。小組自去年年底以來一直頻繁開會,旨在給添加網絡策略,也收獲很多進展。 Kubernetes在網絡管理上目前為止是最為缺失的一個環節,但這將在1.3中有極大的改變。今天這篇帖子是由Network-SIG(Kubernetes Special Interest...
摘要:后端服務云幫將所有持久化存儲服務如數據庫緩存存儲消息系統等均看成是應用的附加資源,這些服務與應用是分開的,我們不建議將應用和后端服務放到一個應用中,這樣做違背了要素的設計原則。 云幫社區版開放免費下載半個月了,已經有不少小伙伴開始體驗了我們的云幫產品,但真正了解云幫運行機制以及產品設計思想的朋友并不多,本系列文檔從云幫的產品設計思路開始,逐步介紹云幫的技術架構以及各個特性的技術實現,中...
閱讀 3392·2021-09-22 15:17
閱讀 2740·2021-09-02 15:15
閱讀 1750·2019-08-30 15:54
閱讀 2001·2019-08-30 14:02
閱讀 2529·2019-08-29 16:58
閱讀 2988·2019-08-29 16:08
閱讀 1330·2019-08-26 12:24
閱讀 1653·2019-08-26 10:41