摘要:是谷歌內(nèi)部為解決這個問題所做的工作的產(chǎn)物,它為管理容器如何在整個集群中運(yùn)行提供了一個單一的框架。在云中使用服務(wù)在許多云中作為標(biāo)準(zhǔn)問題項提供,盡管它在谷歌云平臺,中最突出地表現(xiàn)為本地特性。使用,運(yùn)行控制平面,將重點(diǎn)部署將用于所需配置的容器。
每一項創(chuàng)新都會帶來新的復(fù)雜性。容器使以一種方便的、可移植的形式打包和運(yùn)行應(yīng)用程序成為可能,但至少要說以規(guī)模管理容器是一個挑戰(zhàn)。
Kubernetes是谷歌內(nèi)部為解決這個問題所做的工作的產(chǎn)物,它為管理容器如何在整個集群中運(yùn)行提供了一個單一的框架。它提供的服務(wù)通常集中在catch all術(shù)語“協(xié)調(diào)”下,但這涵蓋了很多領(lǐng)域:調(diào)度容器、容器之間的服務(wù)發(fā)現(xiàn)、跨系統(tǒng)的負(fù)載平衡、滾動更新、回滾、高可用性等等。
使用Kubernetes發(fā)行版
Kubernetes誕生于管理Linux容器。但是,對于Kubernetes 1.5,Kubernetes也支持Windows服務(wù)器容器,盡管Kubernetes控制平面必須繼續(xù)在Linux上運(yùn)行。當(dāng)然,借助虛擬化,可以在任何平臺上開始使用Kubernetes。
如果選擇在自己的硬件或虛擬機(jī)上運(yùn)行Kubernetes,一種常見的方法是獲得打包的Kubernetes分發(fā),它通常將上游Kubernetes位與其他部分(容器注冊表、網(wǎng)絡(luò)、存儲、安全性、日志記錄、監(jiān)控、連續(xù)集成管道等)結(jié)合在一起以完成TE部署。此外,Kubernetes發(fā)行版通常可以安裝并運(yùn)行在任何虛擬機(jī)基礎(chǔ)設(shè)施中:AmazonEC2、Azure虛擬機(jī)、Google計算引擎、OpenStack等。
另一種方法是在傳統(tǒng)的Linux發(fā)行版上運(yùn)行Kubernetes,盡管這通常會帶來更多的管理開銷和手工操作。例如,Red Hat Enterprise Linux在其軟件包存儲庫中有Kubernetes,但甚至Red Hat也建議僅用于測試和實(shí)驗。Red Hat Stack建議用戶通過OpenShift PaaS使用Kubernetes,而不是手工拼湊一些東西,因為OpenShift現(xiàn)在使用Kubernetes作為自己的本地編排器。
許多傳統(tǒng)的Linux發(fā)行版為建立Kubernetes和其他大型軟件棧提供了特殊的工具。例如,Ubuntu提供了一個名為conjure-up的工具,可以用來在云和裸機(jī)實(shí)例上部署Kubernetes的上游版本。Canonical還提供了Microk8s,一個通過快照包系統(tǒng)安裝的Kubernetes版本。
在云中使用Kubernetes服務(wù)
Kubernetes在許多云中作為標(biāo)準(zhǔn)問題項提供,盡管它在谷歌云平臺(Google Cloud Platform,GCP)中最突出地表現(xiàn)為本地特性。GCP提供兩種運(yùn)行Kubernetes的主要方法。最方便和緊密集成的方法是通過google Kubernetes引擎,它允許運(yùn)行Kubernetes的命令行工具來管理創(chuàng)建的集群。
或者,可以使用Google計算引擎設(shè)置計算集群并手動部署Kubernetes。此方法需要更重的提升,但允許對容器引擎進(jìn)行不可能的自定義。如果剛開始使用容器,請使用容器引擎。稍后,在想嘗試一些更高級的東西之后,比如定制版的Kubernetes或自己修改版本,可以部署運(yùn)行Kubernetes發(fā)行版的VM。
對于Amazon,最初必須通過在EC2中部署計算集群來運(yùn)行Kubernetes。這仍然是一個選擇,但Amazon現(xiàn)在為Kubernetes(EKS)提供彈性集裝箱服務(wù)。使用EKS,Amazon運(yùn)行控制平面,將重點(diǎn)部署將用于所需配置的容器。EKS還運(yùn)行標(biāo)準(zhǔn)的上游版Kubernetes。一個聰明的特性是Kubernetes與AWS組合的其余部分的集成。AWS服務(wù)在EKS中顯示為Kubernetes本機(jī)自定義資源定義,因此對AWS或Kubernetes的任何更改都不會破壞這種連接。
許多Kubernetes發(fā)行版附帶了在AWS和其他地方設(shè)置的詳細(xì)說明。例如,Red Hat OpenShift可以通過交互式安裝程序或腳本安裝在一臺或多臺主機(jī)上,或者使用TerraForm“基礎(chǔ)設(shè)施即代碼”配置工具。或者,Kubernetes的kops工具可以用于在AWS上提供一個通用虛擬機(jī)集群,并支持Google Cloud Engine,VMware vSphere和其他正在開發(fā)的云。
Microsoft Azure通過Azure Kubernetes服務(wù)支持Kubernetes。在這里由Azure管理Kubernetes主節(jié)點(diǎn),而通過資源管理器模板或TerraForm創(chuàng)建集群。如果希望同時控制主節(jié)點(diǎn)和代理節(jié)點(diǎn),則可以始終在Azure虛擬機(jī)上安裝Kubernetes分發(fā)版。這就是說,AKS的一個關(guān)鍵優(yōu)勢是,不需要為主節(jié)點(diǎn)的使用付費(fèi),只需為代理付費(fèi)。
在各種環(huán)境(云環(huán)境或其他環(huán)境)中提供基本Kubernetes集群的一種快速方法是在任何地方使用一個名為Kubernetes的項目。此腳本適用于Google計算引擎、Microsoft Azure、VMware vSphere(需要vCenter)和OpenStack。在每種情況下,Kubernetes Anywhere都為設(shè)置提供一定程度的自動化。
使用MiniKube在本地運(yùn)行Kubernetesetes
如果只在本地環(huán)境(如開發(fā)機(jī)器)中運(yùn)行Kubernetes,而不需要整個Kubernetes enchilada,那么有幾種方法可以設(shè)置“剛好足夠”的Kubernetes以供使用。
一個由Kubernetes開發(fā)團(tuán)隊本身提供的是MiniKube。運(yùn)行它,將在選擇的虛擬化主機(jī)中部署單節(jié)點(diǎn)Kubernetes集群。MiniKube有一些先決條件,但它們都很容易在MacOS、Linux或Windows上實(shí)現(xiàn)。
運(yùn)行Kubernetes演示應(yīng)用程序
一旦運(yùn)行了Kubernetes,就可以開始部署和管理容器了。可以通過使用許多基于容器的應(yīng)用程序演示中的一個來輕松進(jìn)入容器操作。以一個現(xiàn)有的基于容器的應(yīng)用程序演示為例,自己組裝它,看看它是如何組成的,部署它,然后逐步修改它,直到它接近對您有用的東西。如果選擇了MiniKube來找到自己的立足點(diǎn),可以使用hello MiniKube教程在單節(jié)點(diǎn)Kubernetes演示安裝中創(chuàng)建一個包含簡單node.js應(yīng)用程序的Docker容器。
一旦你有了這個想法,你就可以在自己的容器中進(jìn)行交換,并練習(xí)部署這些容器。下一步是部署一個類似于在生產(chǎn)中使用的示例應(yīng)用程序,并熟悉更高級的Kubernetes概念,例如pods(一個或多個包含應(yīng)用程序的容器)、服務(wù)(pods的邏輯集)、副本集(在機(jī)器故障時提供自愈)和部署(appli陽離子版本控制)。
舉個例子,打開wordpress/mysql示例應(yīng)用程序的引擎,將看到更多關(guān)于如何將這些組件部署到Kubernetes中并運(yùn)行它們的說明。還將看到生產(chǎn)級Kubernetes應(yīng)用程序使用的許多概念的實(shí)現(xiàn)細(xì)節(jié)。將學(xué)習(xí)如何設(shè)置持久性卷以保留應(yīng)用程序的狀態(tài),如何通過服務(wù)向彼此和外部世界公開pods,如何將應(yīng)用程序密碼和API密鑰存儲為機(jī)密,等等。
weaveworks有一個示例應(yīng)用程序sock shop,它展示了如何使用微服務(wù)模式來組成Kubernetes中的應(yīng)用程序。對于熟悉底層技術(shù)的人來說,sock shop將是最有用的——node.js、go-kit和spring-boot,但是核心原則是要超越特定的框架并說明云本地技術(shù)。
如果你瀏覽了wordpress/mysql應(yīng)用程序,并設(shè)想有一個預(yù)先烘焙的Kubernetes應(yīng)用程序可以滿足你的需求,那么你可能是對的。Kubernetes有一個名為helm的應(yīng)用程序定義系統(tǒng),它提供了打包、版本和共享Kubernetes應(yīng)用程序的方法。許多流行的應(yīng)用程序(gitlab、wordpress)和應(yīng)用程序構(gòu)建塊(mysql、nginx)通過Kubeapps門戶網(wǎng)站很容易獲得helm“圖表”。
使用Kubernetes管理容器
Kubernetes通過強(qiáng)大的抽象(如pods和服務(wù))簡化了容器管理,同時通過標(biāo)簽和名稱空間等機(jī)制提供了很大的靈活性,這些機(jī)制可用于分離pods、服務(wù)和部署(如開發(fā)、分段和生產(chǎn)工作負(fù)載)。
如果采用上述其中一個示例并在多個命名空間中設(shè)置不同的實(shí)例,那么可以練習(xí)對每個命名空間中的組件進(jìn)行獨(dú)立于其他名稱空間的更改。然后,可以使用部署來允許這些更新在給定名稱空間的pods中逐步展開。
下一步是學(xué)習(xí)如何通過管理基礎(chǔ)設(shè)施的工具來驅(qū)動Kubernetes。例如,Puppet有一個模塊,用于創(chuàng)建和操作Kubernetes中的資源。同樣,HashiCorp的地形對Kubernetes作為一種資源的支持也越來越大。如果您計劃使用這樣的資源管理器,請注意,不同的工具可能會給表帶來非常不同的假設(shè)。例如,puppet和terraform默認(rèn)分別使用可變和不可變的基礎(chǔ)設(shè)施。這些哲學(xué)和行為上的差異可以決定它有多容易或有多困難。
本文翻譯自Serdar Yegulalp(InfoWorld資深作家)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/5854.html
摘要:該公司剛剛宣布了一個計劃,意在取代現(xiàn)有的發(fā)行版。這甚至可能幫找到一個新方向。為了解決這個問題,我們在上增加了一個名為的新功能。總體而言,整個過程呈現(xiàn)如下建立包括,以及一個的基礎(chǔ)架構(gòu)。 這是 TCP CLOUD 聯(lián)合創(chuàng)始人 & 前 CTO Jakub Pavlik 于 2017 年 7 月 9 日發(fā)布于 www.mirantis.com 的文章。本文主要介紹了 Virtlet 及其未來與...
摘要:背景中有的概念,其中對它的管理有點(diǎn)松散。鏡像是文件系統(tǒng)層次的根,任何被掛載到鏡像中的特定目錄上。中的每個容器必須獨(dú)立指定每個的位置。當(dāng)一個由于某種原因從節(jié)點(diǎn)上移除,中的數(shù)據(jù)也會被永久刪除。 容器中的磁盤文件是易失的,這給運(yùn)行在容器中的大型應(yīng)用帶來了一些麻煩。首先,當(dāng)一個容器崩潰,kubelet會重啟它,但是之前存儲的文件會丟失 - 容器以一個初始的狀態(tài)重建。第二,當(dāng)在一個Pod中運(yùn)行多...
摘要:的調(diào)度機(jī)制組件調(diào)度器會將調(diào)度到資源滿足要求并且評分最高的上。這個特性的設(shè)計初衷是為了替代,并擴(kuò)展更強(qiáng)大的調(diào)度策略。和完全相同,以進(jìn)行強(qiáng)制的約束。軟規(guī)則除了,,還有一條軟規(guī)則配置后,沒有相關(guān)污點(diǎn)策略的會盡量避免調(diào)度到該上。 k8s的調(diào)度機(jī)制 scheduler組件 k8s調(diào)度器會將pod調(diào)度到資源滿足要求并且評分最高的node上。我們可以使用多種規(guī)則比如:1.設(shè)置cpu、內(nèi)存的使用要求;...
摘要:宋體是面向內(nèi)部基于打造的容器服務(wù)平臺,旨在提升內(nèi)部研發(fā)效率,幫助改善規(guī)范研發(fā)流程。宋體作為容器編排框架,可以減輕配置部署管理和監(jiān)控大規(guī)模容器應(yīng)用的負(fù)擔(dān)。宋體核心原理宋體解釋不得不提中兩個最具價值的理念聲明式和控制器模式。KUN(Keep UCloud Nimble)是面向 UCloud 內(nèi)部、基于 Kubernetes 打造的容器服務(wù)平臺,旨在提升內(nèi)部研發(fā)效率,幫助改善、規(guī)范研發(fā)流程。在 K...
摘要:注意事項用容器和編排工具運(yùn)行介紹了一些額外注意事項數(shù)據(jù)庫是有狀態(tài)的。尤其,在副本集合中,一個節(jié)點(diǎn)必須被用來執(zhí)行和命令。名字叫做的被配置用來確保的單個實(shí)例是一直在運(yùn)行的。 想要在你的手提電腦上嘗試MongoDB嗎?執(zhí)行一個命令,然后擁有一個輕量級,獨(dú)立的沙箱;再執(zhí)行一個命令,刪除你完成之后所有的痕跡。是不是需要一個在多個環(huán)境中都跟你的應(yīng)用程序堆棧一樣的應(yīng)用程序?創(chuàng)建一你自己的容器鏡像,然...
閱讀 770·2023-04-25 20:47
閱讀 2534·2019-08-30 15:53
閱讀 947·2019-08-26 14:05
閱讀 893·2019-08-26 11:59
閱讀 1678·2019-08-26 11:43
閱讀 1679·2019-08-26 10:57
閱讀 1355·2019-08-23 18:23
閱讀 2638·2019-08-23 12:57