1. 程式人生 > >Kubernetes的四種使用者部署場景

Kubernetes的四種使用者部署場景

Kubernetes可以作為容器編排引擎、PaaS或者作為雲原生應用的核心基礎架構被使用者部署到生產環境。這些用例並不是相互排斥的。DevOps可以委託基於Kubernetes的PaaS層完成整個應用生命週期的管理(ALM),也可以獨立部署Kubernetes管理CI/CD工具部署的應用。對於新應用程式可以使用Kubernetes管理微服務架構的雲原始應用,支援先進的場景,如滾動升級和金絲雀的部署。

這一部分將抓取頂級客戶使用Kubernetes的案例 。在此之前,讓我們仔細看一個企業的容器管理平臺的重要元件。

Kubernetes

企業容器管理平臺的構成部分

客戶需要安裝一套工具來有效地管理容器化應用程式的生命週期。它們構成容器管理平臺核心組成部分。這種模式的平臺變得越來越普遍,對於部署和管理生產級容器,至關重要。

作業系統

容器減少應用程式對底層作業系統的依賴性。執行容器的工作負載喜歡選擇輕量級的作業系統,像CoreOS和RedHat Atomic Host,降低基礎設施的管理成本。

容器引擎

容器引擎管理特定主機或節點上執行的容器的生命週期,編排工具和容器引擎共同排程管理叢集節點的容器。Docker和rkt是兩種容器引擎。

映象倉庫

映象倉庫是容器映象的儲存庫。執行時編排引擎可以通過映象倉庫安全訪問映象。Docker的Trusted Registry,CoreOS的Quay Enterprise和JFrog的Artifactory都是可選擇的映象倉庫。

映象安全

映象是容器平臺非常重要的基礎,需要掃描映象的脆弱性和潛在威脅。CoreOS的Clair、Twistlock和OpenSCAP可以用於映象掃描。

容器編排

這是管理容器工作負載的最重要部分。它提供分散式容器管理和容器排程服務。Kubernetes,Docker原生編排Swarm及Mesosphere DC/OS提供容器編排和容器管理。

分散式儲存

容器需要一種新的分散式儲存來管理有狀態的工作負載。產品如ClusterHQ、Portworx、Joyent Manta和Diamanti提供容器儲存。

監測

生產級工作負載需要不斷的檢視應用的狀態和健康。容器監測解決方案包括基礎設施監控和執行容器的監控。Datadog、Sysdig、Prometheus提供容器監控服務。

日誌

通過日誌分析,可以瞭解容器及其主機的效能、穩定性和可靠性。同任何生產的工作負載一樣,日誌是非常重要的。Splunk、Loggly、Logentries提供容器日誌服務。

程式碼管理

程式碼管理(SCM)通常用於維護程式碼版本,同時,對容器化工作負載(如:映象和Kubernetes物件)的版本也起著重要的作用。現有的SCM解決方案,如GitHub,Bitbucket和Gitlab,可以用於管理程式碼和容器化工作負載。

構建自動化

容器映象作為構建CI/CD管道的一部分。通過利用現有的工作流和建立自動化管道,客戶可以實現容器化應用的自動部署。專業CI/CD的工具,如Shippable,或現有的工具,像Jenkins,都可以用來擴充套件,作為容器化應用的自動化部署工具。

配置管理

傳統的配置管理工具已經擴充套件支援容器。客戶能混合和匹配容器化和虛擬化技術,使用統一的工具提供建立、配置、部署和管理應用程式。Chef、Puppet、Ansible和SaltStack已經增加了容器的支援,可以利用現有的playbooks和recipes管理容器化應用。

Kubernetes作為容器編排和管理工具

Kubernetes最常見的用法是管理生產級容器。客戶可以選擇部署開源版本的Kubernetes或使用商業版。部署目標可能是私有部署、公共雲或混合雲。

在這種情況下,客戶可以使用混合DevOps工具管理現有的應用和新的應用程式,並且,可以使用一組異構工具,如:管理映象倉庫、安全掃描、儲存、網路和自動化構建。Kubernetes整合現有的工具構造容器編排和容器管理工具。客戶可以使用商業版Kubernetes,如Tectonic,或企業分發版Canonical。

CoreOS Tectonic

CoreOS誕生於容器的時代。Tectonic是首個基於Kubernetes、端到端的企業容器編排引擎。CoreOS技術棧結合了Kubernetes,並做了安全增強。客戶獲得最新的更新以保持他們的基礎架構是最新的。

對比Kubernetes,Tectonic主要做了安全增強。分散式可信計算(DTC)通過密碼驗證客戶整個環境(從硬體到分散式叢集)的完整性。當企業執行Kubernetes在一個偏遠的、合作的基礎設施上。 新增叢集節點,驗證此節點為受信節點是很重要的。即使潛在的缺乏抵抗力的資料中心,DTC同樣能保證叢集的完整性。

同時,Tectonic在構建、儲存、部署容器過程中,集成了CoreOS私有映象倉庫Quay企業版。

Canonical

Canonical提供Ubuntu分發版,並通過提供商業版Kubernetes擠入容器編排市場。Canonical為客戶提供穩定的上游的Kubernetes釋出,以及獲得上游的Kubernetes分支的早期版本。主節點可以擴充套件獨立的工作節點。工作節點可以自動輕易的移值,從公有云、私有云和裸機到Google Container Engine。Canonical除了管理容器生命週期的功能外,還包括建立刪除使用者訪問、提供維護模式、 支援最新版本的升級。

Canonical包括如下元件:Kubernetes控制檯、基於Prometheus的監控系統(收集和處理系統量度)、基於ELK的日誌監控、Flannel容器網路、整合Ceph分散式儲存。

Canonical使用現有的基礎設施和DevOps工具,規範優化了Kubernetes執行。執行Canonical的OpenStack客戶、裸機框架的(MAAS)服務、DevOps工具Juju,都可以輕易整合Kubernetes。

Kubernetes作為一個私有PaaS平臺

客戶部署PaaS主要規範了部署和部署環境。通過使用基於Kubernetes的PaaS,他們將在同一個平臺上管理傳統業務應用軟體和新的容器化應用。Kubernetes已被傳統的PaaS供應商採用,給企業客戶提供端到端的平臺。基於核心容器能力,這些PaaS產品提供完整的生命週期管理容器應用。

PaaS供應商添加了額外的功能,如應用分發、訊息路由、服務代理、容量規劃、整合日誌。PaaS沒有暴露底層基礎設施,是面向開發者提供通用平臺。PaaS層試圖抽象Kubernetes的複雜性、簡化工作流。

在基於Kubernetes的PaaS平臺中,Apprenda和紅帽OpenShift是領先的。他們提供商業支援Kubernetes。其他Kubernetes的PaaS平臺,包括AppsCode和Eldarion Cloud,他們釋出做為公共雲服務。

Apprenda

Apprenda是一個企業PaaS平臺,針對微軟.NET客戶和java應用程式,提供一個有效的應用部署架構。該平臺設計目標是面向開發和運維團隊,為現有的私有部署的企業應用提供PaaS功能。

近日,Apprenda擁抱Docker和Kubernetes,解決傳統與新應用軟體的差距。客戶將能夠混合和匹配DevOps過程,對於.net應用、還是java應用程式、或容器應用,提供通用的DevOps過程。

開發者和運維團隊可以使用現有的CI/CD工具維持舊的應用程式以及Kubernetes應用。雖然Apprenda PaaS不是開源軟體,但通過hooks和REST API,它能夠整合到其他平臺。部署在Kubernetes應用程式,為傳統的.NET或java應用程式提供標準協議。

Apprenda是一個策略驅動的PaaS平臺,運維團隊通過定義粒度策略,管理應用釋出、監控、合規性和安全性。這種方法滿足企業客戶的目標,作為現有的應用程式門戶,並考慮包括容器應用。它允許部署、安全和合規策略集中定義和管理。同時在可擴充套件的平臺上,讓開發團隊專注於應用程式開發。

Red hat OpenShift

紅帽的OpenShift是基於Kubernetes開源企業級PaaS平臺的領先者。Google之後,紅帽的OpenShift工程師是對Kubernetes專案最活躍的貢獻者。

同其他競爭者一樣,紅帽早期OpenShift平臺是一個定製化的平臺實現,後來,採用了開發者工具Docker和Kubernetes,OpenShift轉移到基於Kubernetes引擎的PaaS平臺。

OpenShift提煉Kubernetes基礎結構,它是面向開發者經驗的平臺,它提供了一套使用者介面連線Git,及專有的紅帽企業Linux(RHEL)工具,Docker和Kubernetes。開發者通過已有的Git工具或者整合的映象倉庫與平臺互動。該平臺包括一個Source-to-Image (S2I)工具,能轉變開發程式碼變成執行的Docker容器,並保留Docker映象分層結構。紅帽基於 Kubernetes新增企業級特性,如專案、使用者和組、多租戶功能。在同一叢集中,多部門或業務單元能部署不同的應用,並達到資源隔離。OpenShift還提供了應用程式日誌的全面檢視,包括實時日誌、構建日誌和部署日誌。

DevOps團隊可以使用熟悉的Docker和Kubernetes工具管理平臺。OpenShift配有內建策略管理工具,著眼於使用者認證和管理內建的映象倉庫。

Kubernetes作為雲原始基礎架構

業內人士對雲原生應用的定義雖然沒有確切的共識,但大多數人同意,雲原始應用可以被定義為新的應用程式,打包成容器、微服務架構、執行在彈性基礎架構、並通過敏捷DevOps流程管理。雲原生應用與十二因子應用的原則是緊密一致的。

不是每個容器應用都是一個雲原生應用。Kubernetes用來部署和管理容器應用程式。同時,Kubernetes可以管理雲原生應用程式的生命週期。客戶可以選擇Kubernetes作為部署平臺的首選,設計、開發、測試、部署和管理雲原生應用程式。

雲原生應用被部署在現有的基礎設施或PaaS的Kubernetes叢集上。儘管與上面定義的場景重疊,這種情況適用於組織構建應用,他們不需要與現有的遺留應用程式互動。

雲原生應用程式可以利用Kubernetes先進的功能,如滾動更新、金絲雀部署、水平pod和叢集伸縮。Kubernetes作為雲原生應用的基礎架構,仍是在不斷髮展,值得指出的是,這對許多使用者和組織具有戰略價值。

Kubernetes作為雲原生應用的基礎架構包括如下專案:Intel和CoreOS的Stackanetes專案。Stackanetes是基於kurbernetes的OpenStack。它提供了高可用性、自愈、OpenStack IaaS的全部特徵,並且提供Kubernetes自動化部署和管理。該專案的技術預覽將在巴塞羅那OpenStack大會上釋出。

深入淺出學習etcd

etcd為分散式系統提供可靠、高效的配置管理服務,在Docker、Kubernetes、Mesos等平臺中扮演了越來越重要的角色。作為2013年開始的專案,它還很年輕,官方文件中缺乏實現上全面、系統的介紹,本課程深入淺出地介紹了etcd的實現,併為運維和二次開發提供了系統的指導和建議。

系列文章:

文章來自微信公眾號:Docker