自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

多種云服務(wù)模式下,Kubernetes的優(yōu)秀實(shí)踐

原創(chuàng)
云計(jì)算
本文討論在多種云服務(wù)的模式下,成功部署和運(yùn)行 Kubernetes 群集的關(guān)鍵操作難點(diǎn)與優(yōu)秀實(shí)踐。

【51CTO.com原創(chuàng)稿件】本文討論在多種云服務(wù)的模式下,成功部署和運(yùn)行 Kubernetes 群集的關(guān)鍵操作難點(diǎn)與最佳實(shí)踐。

根據(jù) 2018 年云計(jì)算狀況報(bào)告顯示:如今 81% 的企業(yè)都使用了多種云服務(wù)的模式,他們通過采用公有云服務(wù)、現(xiàn)代基礎(chǔ)構(gòu)造平臺、以及公/私有云的持續(xù)混合,在快速、靈活地調(diào)整自身規(guī)模和容量的同時(shí),能夠更快地給客戶提供價(jià)值。

實(shí)際上,根據(jù) IDC 的最新數(shù)據(jù), 2018 年第一季度,全球服務(wù)器出貨量同比增加了 20.7%,高達(dá) 270 萬臺,整體收入則增長了 38.6% ,這是連續(xù)第三個(gè)季度達(dá)到兩位數(shù)的增長。

[[236964]]

另一個(gè)令人振奮的趨勢是:容器的出現(xiàn)為應(yīng)用組件的打包和管理提供了最佳的實(shí)現(xiàn)方式。Kubernetes 也已被廣泛地接受為部署和操作容器化應(yīng)用的最佳方案。而且,Kubernetes 的關(guān)鍵價(jià)值就在于它能夠協(xié)助標(biāo)準(zhǔn)化多種云供應(yīng)商所提供的服務(wù)功能。

當(dāng)然,上述優(yōu)勢也帶來了一定的復(fù)雜性。容器雖然解決了 DevOps 的相關(guān)問題,但同時(shí)也引入了一個(gè)新的、需要管理的抽象層。

由于 Kubernetes 本身就是一個(gè)需要管理的分布式應(yīng)用,因此它只能解決運(yùn)營上的部分問題,而非全部。

我們將在本文中討論多種云服務(wù)的模式下,成功部署和運(yùn)行 Kubernetes 群集的關(guān)鍵操作難點(diǎn)與最佳實(shí)踐。

總的說來,我們所持的觀點(diǎn)是:IT運(yùn)營團(tuán)隊(duì)?wèi)?yīng)當(dāng)為多個(gè)內(nèi)部其他團(tuán)隊(duì)構(gòu)建出一套企業(yè)級的 Kubernetes 整體策略。

使用最佳的基礎(chǔ)設(shè)施

與傳統(tǒng)的內(nèi)部基礎(chǔ)設(shè)施供應(yīng)商相同,所有云服務(wù)供應(yīng)商都能夠提供存儲(chǔ)和網(wǎng)絡(luò)等方面的服務(wù)。

在考慮多種云服務(wù)模式的策略時(shí),我們值得注意的是:到底是使用各個(gè)供應(yīng)商所提供的現(xiàn)有功能?或是要用到一個(gè)抽象層。

雖然這兩種方法都可行,但是您應(yīng)當(dāng)謹(jǐn)慎地盡量最小化抽象層、且使用供應(yīng)商自己提供的方案。

例如:不要在AWS中運(yùn)行覆蓋網(wǎng)絡(luò)(overlay network,譯者注:是一種面向應(yīng)用層,而不必或減少考慮網(wǎng)絡(luò)層與物理層的網(wǎng)絡(luò)協(xié)議),而最好去使用 AWS 提供的 Kubernetes CNI (容器網(wǎng)絡(luò)接口,Container Network Interface)插件,為 Kubernetes 提供原生的網(wǎng)絡(luò)功能。

此方法還可以使用諸如安全組和 IAM (譯者注:身份識別與訪問管理,Identity and Access Management)等其他服務(wù)。

管理自己的Kubernetes版本

Kubernetes 是一個(gè)快速推進(jìn)的項(xiàng)目,它每三月都有一個(gè)更新版本的發(fā)布。因此您需要決定的是:由供應(yīng)商為您測試和管理 Kubernetes 的各個(gè)發(fā)布版本,還是希望允許自己的團(tuán)隊(duì)直接使用那些版本。

凡事都有利弊兩面值得考慮。如果您使用供應(yīng)商去管理 Kubernetes,那么他們會(huì)帶來額外的測試和驗(yàn)證方面的幫助。

當(dāng)然,云原生計(jì)算基金會(huì)(Cloud Native Computing Foundation,CNCF )的 Kubernetes 社區(qū)本身就具有成熟的開發(fā)、測試與發(fā)布流程。

Kubernetes 項(xiàng)目是由一個(gè)特殊興趣小組(Special Interest Groups,SIGs)所管理, Release SIG (https://github.com/kubernetes/sig-release#mission)負(fù)責(zé)通過各種流程,來確保每個(gè)新版本的質(zhì)量和穩(wěn)定性。

CNCF還為各個(gè)供應(yīng)商提供了 Kubernetes 軟件一致性(https://www.cncf.io/certification/software-conformance/)計(jì)劃,以證明他們的軟件能與 Kubernetes 的各個(gè) API 實(shí)現(xiàn) 100% 兼容。

對于企業(yè)內(nèi)部而言,我們最好將穩(wěn)定的版本使用到生產(chǎn)環(huán)境之中。但是,有些團(tuán)隊(duì)可能需要具有 pre-GA (譯者注:pre-General Availability, 發(fā)布正式版本之前)功能的群集。

因此,最好的辦法就是:讓團(tuán)隊(duì)靈活地選擇多種經(jīng)過驗(yàn)證的 Upstream 版本,或者讓他們根據(jù)需要去嘗試新的版本,但是需要風(fēng)險(xiǎn)自擔(dān)。

根據(jù)策略來規(guī)范群集的部署

安裝 Kubernetes 群集時(shí),我們需要做出如下重要的決定:

  • 版本:要使用的 Kubernetes 組件版本。
  • 網(wǎng)絡(luò):要使用的網(wǎng)絡(luò)技術(shù),通過 CNI (Container Networking Interface ,容器網(wǎng)絡(luò)接口, https://github.com/containernetworking/cni)插件來配置。
  • 存儲(chǔ):要使用的存儲(chǔ)技術(shù),通過  CSI (Container Storage Interface ,容器存儲(chǔ)接口,https://github.com/container-storage-interface/spec)插件來配置。
  • 入口:入口控制器(Ingress Controller)可被用于負(fù)載平衡器,以及將各種外部請求反向代理到您的不同應(yīng)用服務(wù)上。
  • 監(jiān)控:可用于監(jiān)控群集中 Kubernetes 組件和工作負(fù)載的加載項(xiàng)。
  • 日志記錄:一種集中式日志方案,可用于從群集的 Kubernetes 組件和應(yīng)用負(fù)載中收集、聚合并轉(zhuǎn)發(fā)日志到集中式日志記錄系統(tǒng)中。
  • 其他加載項(xiàng):其他需要作為群集的一部分運(yùn)行的服務(wù),如 DNS 和安全組件。

雖然我們可以對每一次群集的安裝執(zhí)行上述決策,但是如果能將它們作為群集安裝的模板或策略錄入下來的話,對于我們之后的重用來說則會(huì)更為高效。

例如,我們可以用到 Terraform 腳本(https://www.terraform.io/docs/providers/kubernetes/index.html)或 Nirmata 集群策略(http://nirmata-documentation.readthedocs.io/en/latest/Clusters.html)。

一旦群集安裝被予以自動(dòng)化,它就可以作為高級工作流的一部分進(jìn)行調(diào)用。例如:根據(jù)服務(wù)目錄,執(zhí)行自助服務(wù)的調(diào)配請求。

提供端對端的安全

對于容器和 Kubernetes 的安全性,我們需要考慮如下方面:

  • 鏡像掃描:在容器鏡像運(yùn)行之前,我們必須進(jìn)行各種漏洞的掃描。因此,在允許鏡像進(jìn)入企業(yè)的專用存儲(chǔ)表之前,該步驟可以作為持續(xù)交付(Continuous Delivery)管道的一部分予以實(shí)施。
  • 鏡像來源:除了對鏡像進(jìn)行漏洞掃描之外,我們還應(yīng)當(dāng)只允許那些“受信任”的鏡像進(jìn)入正在運(yùn)行的群集環(huán)境之中。
  • 主機(jī)與群集掃描:除了對鏡像實(shí)施安全控制,我們也應(yīng)對群集節(jié)點(diǎn)執(zhí)行掃描。通過運(yùn)用 CIS(Center for Internet Security)的各種安全基線( https://www.cisecurity.org/benchmark/kubernetes/),對 Kubernetes 進(jìn)行例行安全加固就是一種最佳的實(shí)踐。
  • 分割與隔離:雖說多租戶環(huán)境并非是硬性要求,但是通過在多個(gè)異構(gòu)的工作負(fù)載之間共享群集,著實(shí)能夠提高效率并節(jié)省成本。Kubernetes 為隔離(如:命名空間和網(wǎng)絡(luò)策略)和管理資源的開銷(如:資源配額)提供了相應(yīng)的構(gòu)造。
  • 身份管理:在典型的企業(yè)部署中,用戶標(biāo)識由一個(gè)集中式目錄所提供。因此,無論我們在何處部署群集,都應(yīng)當(dāng)通過聯(lián)合用戶標(biāo)識的控制,以方便實(shí)現(xiàn)一致性的管控與應(yīng)用。
  • 訪問控制:雖然 Kubernetes 并沒有用戶的概念,但是它對指定的角色和權(quán)限能夠提供豐富的控制。群集可以用到各種默認(rèn)的角色、以及指定了權(quán)限集的自定義角色。重要的是:同一個(gè)企業(yè)內(nèi)部的所有群集都應(yīng)當(dāng)使用通用的角色定義,和跨集群的管理方法。

雖然上述每一項(xiàng)安全實(shí)踐都可以被單獨(dú)地使用,但是我們還是應(yīng)該全面地審查和規(guī)劃那些跨多種云供應(yīng)商時(shí)的安全策略。

我們可以通過使用諸如 AquaSec、Twistlock 等安全解決方案,以及其他與 Nirmata、OpenShift 等平臺相結(jié)合的措施來實(shí)現(xiàn)。

集中應(yīng)用管理

與安全性相同,在 Kubernetes 的群集上管理各種應(yīng)用也需要具有集中且一致性的方案。Kubernetes 提供了一整套可用于定義和操作不同應(yīng)用程序的構(gòu)造。

由于確實(shí)具有一些應(yīng)用程序的內(nèi)置理念,因此它能夠靈活地支持不同的應(yīng)用類型,并允許在 Kubernetes 上以不同的方式構(gòu)建出不同的應(yīng)用平臺。

當(dāng)然,Kubernetes 的應(yīng)用管理平臺也提供了一些通用的屬性和功能。下面列舉了對 Kubernetes 工作負(fù)載予以集中式應(yīng)用管理所需要考慮的方面:

應(yīng)用程序建模與定義

用戶需要通過定義其應(yīng)用的組件,從而在現(xiàn)有組件的基礎(chǔ)上撰寫出新的應(yīng)用。用戶可以通過 Kubernetes 的聲明性,來定義系統(tǒng)的目標(biāo)狀態(tài)。

Kubernetes 的工作負(fù)載 API 提供了幾種構(gòu)造,來定義所需的資源狀態(tài)。

例如:我們可以使用部署來建模出無狀態(tài)的工作負(fù)載組件。這些定義通常被寫成一組 YAML 或 JSON 的清單。當(dāng)然,開發(fā)人員也可以運(yùn)用諸如 Git 之類的版本控制系統(tǒng)(Version Control System,VCS)來組織和管理這些清單。

開發(fā)人員只需定義和管理應(yīng)用清單中的一些部分,而其他部分則可以由運(yùn)營團(tuán)隊(duì)來指定操作的策略和特定的運(yùn)行環(huán)境。因此,我們可以將應(yīng)用清單理解為在部署和更新之前所動(dòng)態(tài)地生成的一個(gè)管道。

Helm 是一款輔助 Kubernetes 進(jìn)行包管理的工具。它能夠方便地對應(yīng)用進(jìn)行分組、版本控制、部署和更新。

Kubernetes 應(yīng)用平臺必須分別從開發(fā)和運(yùn)營的不同關(guān)注點(diǎn)出發(fā),提供簡單的方法來建模、組織和構(gòu)造應(yīng)用清單、以及 Helm Charts。

而平臺還必須提供對不同定義的驗(yàn)證,以便盡早捕獲各種常見的錯(cuò)誤,同時(shí)還能以簡單方法重用那些應(yīng)用的定義。

應(yīng)用程序運(yùn)營環(huán)境管理

應(yīng)用程序在完成建模與驗(yàn)證之后,就需要被部署到群集之中。由于我們的最終目標(biāo)是在不同的工作負(fù)載中重用這些群集,以提高效率和節(jié)約成本。因此,我們最好將應(yīng)用程序的運(yùn)行環(huán)境與群集進(jìn)行解耦,并將通用的策略和控制應(yīng)用到環(huán)境之中。

由于 Kubernetes 允許使用命名空間和網(wǎng)絡(luò)策略來創(chuàng)建虛擬群集,因此 Kubernetes 的應(yīng)用平臺應(yīng)當(dāng)能夠方便地利用這些構(gòu)造,來創(chuàng)建具有邏輯分割與隔離、以及資源控制的環(huán)境。

變更管理

在多數(shù)情況下,運(yùn)行環(huán)境具有持久性,因此我們需要以可控方式對其進(jìn)行變更。而這些變更往往源自編譯系統(tǒng)或交付管道中的上游環(huán)境。

Kubernetes 應(yīng)用平臺需要為 CI/CD(持續(xù)集成和持續(xù)交付)工具提供各種集成,并監(jiān)控外部存儲(chǔ)庫的更改。

一旦檢測到變更,它們就應(yīng)當(dāng)根據(jù)不同環(huán)境下變更管理的策略,對其進(jìn)行驗(yàn)證和處理。當(dāng)然,用戶也可審查變更、接受更改、或完全依賴自動(dòng)化的更新進(jìn)程。

應(yīng)用程序監(jiān)視

不同的應(yīng)用程序會(huì)被運(yùn)行在多個(gè)環(huán)境、和多種群集之中。從監(jiān)控的角度而言,我們需要設(shè)法給傳遞的消息去噪,從而能聚焦到應(yīng)用程序的實(shí)例之上。

因此,我們需要將應(yīng)用程序的指標(biāo)、狀態(tài)和事件關(guān)聯(lián)到運(yùn)行環(huán)境的構(gòu)造上。

同時(shí),Kubernetes 應(yīng)用平臺還須將監(jiān)控與自動(dòng)化的細(xì)粒度標(biāo)簽相集成,以便用戶深入地查看到任何環(huán)境中的應(yīng)用實(shí)例。

應(yīng)用程序日志記錄

與監(jiān)控類似,日志數(shù)據(jù)也需要將應(yīng)用的定義和運(yùn)行環(huán)境信息相關(guān)聯(lián),并且能夠被任何應(yīng)用組件所訪問到。Kubernetes 應(yīng)用平臺必須能夠?qū)Σ煌\(yùn)行組件上的日志進(jìn)行流轉(zhuǎn)和聚合。

如果您用到了集中式日志系統(tǒng),那么就必須對應(yīng)用予以必要的標(biāo)記,以便將日志從不同的應(yīng)用與環(huán)境中分離出來,同時(shí)也能實(shí)現(xiàn)跨團(tuán)隊(duì)與用戶的訪問管理。

警報(bào)與通知

為了實(shí)現(xiàn)服務(wù)級別的管理,我們必須能夠根據(jù)任何指標(biāo)數(shù)值、狀態(tài)變更或不同條件,來自定義警報(bào)。同樣,我們可以根據(jù)相關(guān)性來區(qū)分出需要立即采取行動(dòng)與可以延遲處置的警報(bào)。

例如:如果同一應(yīng)用程序被部署運(yùn)行在多個(gè)環(huán)境(如開發(fā)測試、暫存和生產(chǎn)環(huán)境)中,我們就必須能定義只在生產(chǎn)工作負(fù)載上被觸發(fā)的警報(bào)規(guī)則。 

Kubernetes 應(yīng)用平臺必須具備環(huán)境和應(yīng)用的感知能力,從而提供對細(xì)粒度警報(bào)規(guī)則的定義和管理。

遠(yuǎn)程訪問

由于云服務(wù)環(huán)境是動(dòng)態(tài)的,而容器又將這種動(dòng)態(tài)提升到了新的水平。因此,一旦有問題被檢測和報(bào)告,我們就必須能夠快速地訪問到系統(tǒng)中那些受到影響的組件。

而 Kubernetes 應(yīng)用平臺則必須提供一種方法,能在運(yùn)行的容器中啟動(dòng) shell ,訪問容器運(yùn)行環(huán)境的詳細(xì)信息,而不必通過 VPN 和 SSH 去訪問各種云服務(wù)的實(shí)例。

事件管理

通常在 Kubernetes 的應(yīng)用中,有可能會(huì)出現(xiàn)容器的退出和重啟。這種退出可能是正常工作流(如升級)的一部分,也可能是由于內(nèi)存不足等錯(cuò)誤所造成的。

Kubernetes 應(yīng)用平臺必須能夠識別故障,并捕獲故障的所有詳細(xì)信息,進(jìn)而采取離線的分析與排障。

總結(jié)

容器和 Kubernetes 使得企業(yè)能夠利用一組通用的行業(yè)最佳實(shí)踐,來對跨多種云服務(wù)的應(yīng)用程序進(jìn)行操作和管理。

所有主流的云服務(wù)供應(yīng)商和應(yīng)用平臺,都相繼承諾可以支持 Kubernetes 了。

在他們之中,有以“開發(fā)人員提供代碼工件,平臺負(fù)責(zé)其余部分”為模式的平臺即服務(wù)(Platform-as-a-Service,PaaS)方案;也有以“開發(fā)人員提供容器鏡像,平臺負(fù)責(zé)其余部分”為模式的容器即服務(wù)(Container-as-a-Service,CaaS)方案;還有以“開發(fā)人員只需提供功能函數(shù),平臺負(fù)責(zé)其余部分”為模式的功能即服務(wù)(Functions-as-a-Service,F(xiàn)aaS)方案。可以說,Kubernetes 已成為了新的云原生操作系統(tǒng)。

因此,在開發(fā)多種云服務(wù)模式的 Kubernetes 策略時(shí),企業(yè)必須周全地考慮到:他們希望如何去使用基礎(chǔ)架構(gòu)服務(wù)、如何管理 Kubernetes 的組件版本、如何設(shè)計(jì)與管理Kubernetes群集、如何定義公共安全層、以及如何管理好應(yīng)用。

原文標(biāo)題:Best Practices for Multi-Cloud Kubernetes作者:Jim Bugwadia

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2018-07-13 09:05:13

KubernetesDevOps云計(jì)算

2022-09-01 08:50:22

kubernetes容器

2021-03-11 14:33:28

Kubernetes開源容器

2021-03-01 19:24:13

Kubernetes備份容器

2019-11-27 10:55:36

云遷移云計(jì)算云平臺

2021-06-08 10:26:10

云計(jì)算云計(jì)算產(chǎn)業(yè)云應(yīng)用

2023-02-07 15:33:16

云遷移數(shù)據(jù)中心云計(jì)算

2023-09-11 13:29:00

微服務(wù)架構(gòu)

2019-05-21 10:45:44

Docker架構(gòu)容器

2021-05-18 08:00:00

Kubernetes容器進(jìn)程

2022-12-26 07:52:33

DockerfileFROM命令

2019-04-23 11:55:26

FinOps成本優(yōu)化云計(jì)算

2022-11-30 15:28:55

2022-04-07 09:30:00

自動(dòng)化LinodeKubernetes

2024-01-22 12:46:00

KubernetesAPI接口

2020-03-16 08:48:18

Kubernetes容器云原生

2023-07-03 12:09:38

云日志云服務(wù)

2021-11-10 13:38:05

云計(jì)算云計(jì)算環(huán)境云應(yīng)用

2021-07-02 10:59:39

云計(jì)算云計(jì)算環(huán)境云應(yīng)用

2019-11-20 10:32:39

云計(jì)算安全技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號