16
運用容器和 KUBERNETES 推動數位化轉型 Kubernetes 如何管理容器化應用程式, 以提供商業價值 白皮書 2017 8

運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

運用容器和 KUBERNETES 推動數位化轉型Kubernetes 如何管理容器化應用程式, 以提供商業價值

白皮書 – 2017 年 8 月

Page 2: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

目錄

簡介 ............................................................................................................................................... 3

數位化轉型以及轉而採用容器化應用程式 .............................................................................. 3

雲端原生應用程式以及 12 要素應用程式 .....................................................................................4

提供軟體即服務的方法 ......................................................................................................................5

Kubernetes 簡要概觀 ............................................................................................................... 6

Kubernetes 物件模式 ......................................................................................................................7

維持目標狀態 .......................................................................................................................................7

Kubernetes 的商業價值 ........................................................................................................... 8

Kubernetes 可應用於雲端原生以及 12 要素應用程式 ...........................................................8

使用情境範例 ..................................................................................................................................... 10

VMware 提供的容器技術解決方案 ......................................................................................... 11

vSphere Integrated Containers ................................................................................................11

Wavefront by VMware ................................................................................................................ 13

Pivotal Container Service .......................................................................................................... 13

結論 ..............................................................................................................................................14

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 2

Page 3: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

簡介Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象可在幾乎任何一個位置執行,進而能簡化軟體的開發與部署作業。組織採用容器,就能向靈活的數位化企業轉型邁進重要的一大步,著重於加快提供創新的產品、服務和客戶經驗。企業能成為顛覆者,而不是被顛覆者。

不過容器還是有其技術管理難題,尤其是需要大規模部署和管理容器化應用程式時,而這就是 Kubernetes 能發揮效用之處。Kubernetes 會協調容器化應用程式,以便管理資源利用、錯誤處理、可用性、設定、延展性與目標狀態,並加以自動化。

本白皮書介紹 Kubernetes、說明其商業價值、探索其使用情境,並指出 Kubernetes 可以如何加快您所屬組織的數位化轉型。

數位化轉型以及轉而採用容器化應用程式根據《紐約時報》的報導,技術創新的勁勢正不斷加快擴張中。1 為了因應此趨勢,數位化轉型已是許多企業的既定目標,而採用數位計畫目前也已極為普遍。2

企業正如火如荼展開數位化轉型的理由很明顯:

• 建立新的應用程式,能以創新且引人入勝的方式吸引客戶。

• 改善營運,以更高的效率和較低的營運成本提供更好的產品與服務。

• 迅速順應市場情況和使用者偏好的變化,進而產生新的營收來源。

Gartner Research 指出:「未來將屬於能創造最具成效、最智慧化和自主型軟體解決方案的公司。」3 但是,建立有效自主型應用程式所需的要件,卻不像目標結果那麼清楚。

應用程式要在當今時代發揮成效,需要一個架構,能夠促進流暢、快速且回應敏捷的開發和部署,同時仍能維持既定型態的安全性、效能與成本效益。容器能為新型應用程式架構提供基礎,不但能支援數位化轉型,也能為創新奠定基礎。

DOCKER 容器的定義

在容器中,Docker 定義封裝及移植軟體

的標準格式,就像貨櫃定義貨運的標準一

樣。容器作為 Docker 映像的執行階段執

行個體,是由下列三個部分組成:

• Docker 映像

• 執行映像的環境

• 一組執行映像的操作說明

— 改編自 Docker 術語表

1 《IDC 公司預測:數位化轉型將在 2016 年成為主流》(Digital Transformation Going Mainstream in 2016, IDC Predicts),Steve Lohr,《紐約時報》,2015 年 11 月 4 日。

2 《新研究發現 IT 以外的投資是數位化轉型成功的關鍵》(New Research Finds Investment from Outside IT Is Key to Digital Transformation Success),摘自 Business Wire 公司,《紐約時報》,2017 年 5 月 11 日。

3 《IDC 公司預測:數位化轉型將在 2016 年成為主流》(Digital Transformation Going Mainstream in 2016, IDC Predicts),Steve Lohr,《紐約時報》,2015 年 11 月 4 日。

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 3

Page 4: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

企業日漸採用容器技術。451 Research 公司最近一項研究剖析如何完美落實新興商業網路。4 採用容器的組織將容器視為建立和部署雲端原生應用程式以及十二要素應用程式的速成捷徑。

雲端原生應用程式以及 12 要素應用程式

Cloud Native Computing Foundation 是一項 Linux Foundation 專案,將雲端原生應用程式定義如下:5

1. 容器化 — 每個部分 (應用程式、處理序等) 是封裝在各自的容器內。這會增進可重現性、透明化和資源隔離。

2. 已動態協調好 — 會主動排定容器時程和管理容器,以達到最佳的資源利用率。

3. 微服務導向 — 應用程式已分段成微服務。此分段會大幅增加應用程式的整體靈活性以及可維護性。

Kubernetes 在上述定義的第二部分會排定容器時程和管理容器。在第三部分,

Kubernetes 和 Docker 會幫助實作微服務。

然而,關鍵要素還是容器本身,也就是在電腦或虛擬機上執行的處理序,而且具備自己的隔離自我描述應用程式、檔案系統和網路。容器會以可重現的方式封裝應用程式:能以最少的人力散發和重複使用。

Docker 容器是最廣泛部署的容器。會有一份名為 Dockerfile 的資訊清單,描述映像和其所有部分將如何在主機上的容器內執行。為了具體說明 Dockerfile 與映像之間的關係,在此舉一個例子:Dockerfile 將 MongoDB 安裝到在容器內執行的 Ubuntu 虛擬機上。以 # 開頭的單行是描述後續指令的註解行。

# MongoDB Dockerfile from https://github.com/dockerfile/mongodb# Pull base image.FROM dockerfile/ubuntu# Install MongoDB.RUN \ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 && \ echo ‘deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen’ > /etc/apt/sources.list.d/mongodb.list && \ apt-get update && \ apt-get install -y mongodb-org && \ rm -rf /var/lib/apt/lists/*# Define mountable directories.

4 《應用程式容器截至 2020 年將會有 $27 億美元的市場規模,代表這是一個小型但持續成長的 CloudEnabling 技術市場區隔》(Application containers will be a $2.7bn market by 2020, representing a small but high-growth segment of the CloudEnabling Technologies market),451 Research 公司,2017 年 1 月 10 日。

5 此定義是來自 Cloud Native Computing Foundation 公司的常見問題:https://www.cncf.io/about/faq/。

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 4

Page 5: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

VOLUME [“/data/db”]# Define working directory.

WORKDIR /data# Define default command.CMD [“mongod”]# Expose port 27017 for the process and port 28017 for httpEXPOSE 27017EXPOSE 28017

提供軟體即服務的方法

反觀,12 要素應用程式則是同樣由其處理序和系統屬性定義。這是一種開發軟體即服

務 (SaaS) 應用程式 (即 Web 應用程式) 的方法,通常會將應用程式部署在平台即服務 (PaaS) 上,例如 Pivotal Cloud Foundry。以下列出 12 要素以及每個要素的簡短說明:6

1. 用一個程式碼基底多次部署應用程式。程式碼基底會儲存在資料儲存器中,並且由 Git 這類版本控制系統隨著程式碼基底的修改加以管理,然後會從相同的程式碼基底,作為執行中的應用程式執行個體多次部署。因此,一次部署通常會在三種環境中執行:在每個開發人員的本機環境上、在一個接移環境內,以及在生產環境內。

2. 宣告和隔離相依性。應用程式不會暗自仰賴全系統的套裝軟體;而是會在一份宣告資訊清單上宣告相依性。明白宣告讓新的開發人員更容易設定其開發環境。

3. 將設定儲存在環境內,而不是程式碼內。針對會依部署而異的設定資訊,應用程式會將這些資訊儲存在環境變數內。環境變數是可針對每次部署分別管理的精密控制項,因此應用程式可輕易隨著時間延展到更多部署內。

4. 連至支援型服務,例如資料庫或儲存系統,而不是將其納入程式碼內。應用程式會將這類服務視為可以藉由修改設定,與部署連結或中斷連結的資源。

5. 將建置和執行視為不同階段。程式碼基底的部署會經歷三個不同階段:建置、發行和執行階段。建置階段會將程式碼基底轉換成一個可執行檔 (也就是組建),然後發行階段會將組建與設定結合,以產生一個立即可在執行階段環境內執行的發行版本。

6. 將應用程式當做無狀態處理序來執行。這些處理序與其他處理序並無任何交集,而且必須持續存在的資料會儲存在以具狀態支援服務執行的資料庫內。

6 這十二要素的解釋是依據 Twelve-Factor App 網站上的說明。

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 5

Page 6: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

7. 利用連接埠繫結來開放服務。以 HTTP 為例,應用程式會繫結到一個連接埠,並在此連接埠上接聽傳入請求,然後將 HTTP 以服務形式匯出。

8. 藉由增加並行處理序進行水平擴充。應用程式處理工作負載的方式是將每種類型的工作指定到某一處理序類型。例如 Web 處理序會處理 HTTP 請求,而背景工作處理序則會管理背景工作。

9. 藉由可處置性確保耐用性。處理序具可處置性,可快速開始或停止,以確保可輕易變更或延展應用程式。

10. 讓開發和生產成為同級環境。應用程式是為持續部署所設計,讓開發人員能快速整合新的程式碼,並獨力將應用程式部署到生產環境內。生產和開發環境應盡可能類似。

11. 將日誌記錄作為事件串流來處理。應用程式既不會路由也不會儲存其日誌記錄的輸出串流,而是會將輸出串流作為資料串流寫入標準輸入內,執行環境會在其中收集輸入串流,並將其路由到像是 Hadoop 的工具或系統,在其中進行儲存或分析。

12. 執行一次性管理指令碼和工作,例如在與應用程式長期執行處理序所在環境相同的環境內,執行資料庫移轉。

容器和 Kubernetes 都會幫助滿足上述關鍵要素的層面。例如,容器在 12 要素應用程式中扮演關鍵角色:讓您能宣告和隔離相依性。容器也會藉由可處置性幫助確保耐用性,例如會快速開始,以及從容不迫地停止。許多其他要素則是由 Kubernetes 支援。

Kubernetes 簡要概觀Google 公司首創開發 Kubernetes。Google 公司用 Kubernetes 的前身 Borg,來啟始、排定時程、重新啟動和監控對外公開的應用程式 (例如 Gmail 和 Google 文件) 以及內部架構 (例如 MapReduce)。7 Kubernetes 以 Google 公司的原始系統為基礎,加上從 Borg 所獲得的經驗教訓發展而出的增強功能,是一個開放式原始碼容器協調作業系統,在您的資料中心、各種雲端以及混合資料中心內都可以運作。Kubernetes 會自動配置工作負載、重新啟動應用程式以及增加資源,以滿足需求。

以下簡單說明其運作方式。一個 Kubernetes 叢集包含一個主節點,以及數個背景工作節點。在此叢集上部署應用程式時,應用程式的元件會在背景工作節點上執行。主節點會管理此部署。

Kubernetes 包含下列元件:

• Kubernetes API• Kubernetes 指令行介面 kubectl• Kubernetes 控制平台

7 《Google 內部以 Borg 執行大規模叢集管理》(Large-Scale Cluster Management at Google with Borg),Research at Google,2015 年。

利用 KUBERNETES 管理容器化應用程式

Kubernetes 會協調分散式容器化應用程

式,以達到下列目的:

• 充分利用運算資源。

• 為排定時程提供原則。

• 維持目標狀態。

• 透過自動化處理錯誤和故障。

• 提供高可用性。

• 即時監控工作。

• 管理應用程式的設定。

• 進行動態延展,以因應需求改變。

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 6

Page 7: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

此控制平台包含在 Kubernetes 主節點以及每個背景工作節點上執行的處理序。例如,

Kubernetes 會在主節點上執行數個處理序:API 伺服器、控制器、排程器以及 etcd。背景工作節點會執行「kubelet」處理序,與主節點和 Proxy 處理序進行通訊,以管理網路。

Kubernetes 物件模式

Kubernetes 系統的關鍵層面之一,就是其如何表示已部署容器化應用程式和工作負載的狀態。Kubernetes 會以「物件」,例如服務、命名空間和磁區,來表示狀態。這些物件的設定一般是依照物件規格,或是您為自己的叢集所建立的規格。

在 Kubernetes 物件模式中,機組的概念是最基本的可部署建構區塊。一個機組代表在一個 Kubernetes 叢集上以處理序形式執行的一個應用程式執行個體。在此便是採用 Docker 執行階段 — Docker 常作為 Kubernetes 機組內的執行階段使用。

Kubernetes 也包含控制器,會實作 Kubernetes 內邏輯的大多數部分。這些控制器提供像是複本集和具狀態集等功能。

維持目標狀態

Kubernetes 控制平台會管理上述所有物件的狀態,以確保物件符合您的目標狀態。您可以用一個 YAML 檔,為某項服務建立物件規格,以此方式指定目標狀態。以下舉一個範例:

apiVersion: v1kind: Servicemetadata: name: nginx-demo-service labels: app: nginx-demospec: type: NodePort ports: - port: 80 protocol: TCP name: http selector: app: nginx-demo---apiVersion: v1kind: ReplicationControllermetadata: name: nginx-demospec: replicas: 3

使用 KUBERNETES 的優勢

• 能透過有效率的資源利用,整合伺服器

並減少成本。

• 能透過自我修復和高可用性,從容不迫

地處理虛擬機故障。

• 能簡化並加快應用程式的部署、日誌記

錄與監控作業。

• 能自動延展容器和容器化應用程式。

• 能將應用程式從虛擬機分離,實現可移

轉性和彈性。

• 容易修改、更新、延展或重新部署服務或

應用程式,而且不會影響其他工作負載。

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 7

Page 8: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

template: metadata: labels: app: nginx-demo spec: containers: - name: nginx-demo image: myrepo/nginx ports: - containerPort: 80

當您透過 kubectl 指令行介面送出此檔到 Kubernetes 主節點時,Kubernetes 控制平台會依照此檔內的指示實作,藉由啟動和排定應用程式時程,讓此叢集的狀態符合您的目標狀態。Kubernetes 主節點和控制平台接著會協調此叢集的節點,這些節點可能是實際的伺服器或虛擬機,以此方式維持目標狀態。

此架構的核心是一個 API 伺服器,會管理系統的物件狀態。API 伺服器會與 Kubernetes 子元件或用戶端搭配運作,這些子元件或用戶端會建構為可組合型微服務,例如 YAML 檔內規定的複寫控制器。此複寫控制器會在故障發生時,將機組複本維持在目標狀態。

Kubernetes 的商業價值現在回到數位化轉型主題,Kubernetes 會利用上述架構來管理分散式叢集內的容器化應用程式。這些結果會有助於實現數位化轉型所代表的商業價值。

• 透過 Kubernetes,能輕鬆以更低的成本在公有雲、私有雲或混合雲中執行應用程式。

• Kubernetes 會加快應用程式開發和部署的速度。

• Kubernetes 會增進靈活性、彈性,以及順應變化的能力。

Kubernetes 可應用於雲端原生以及 12 要素應用程式

Kubernetes 會讓容器化應用程式以可大規模管理的方式運作。請回想雲端原生應用程式定義的第二個部分:雲端原生應用程式已動態協調好,能主動排定容器行程並加以管理,以達到最佳的資源利用率。Kubernetes 正是能做到這點。Kubernetes 會協調容器和其工作負載,以充分利用在叢集內構成節點的虛擬機和實體伺服器。

上述介紹過的 12 要素進一步說明 Kubernetes 如何精簡應用程式管理。一般而言,

Kubernetes 能部署和執行 12 要素應用程式。

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 8

Page 9: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

KUBERNETES 和容器如何精簡應用程式管理

要素 優點

1. 用一個程式碼基底多次部署應用程式。

Kubernetes 能為一個機組指定一套規格,其中包含一個容器映像參考,以此方式用一個程式碼基底多次部署應用程式。

2. 宣告和隔離相依性。 容器能表達相依性。

3. 將設定儲存在環境內,而不是程式碼內。

您可以將應用程式設定的各個層面儲存在 Kubernetes 環境內。例如,ConfigMaps 會依照映像的指示,建構分別的設定構件。

4. 連至支援型服務,例如資料庫,而不是將其納入程式碼內。

Kubernetes 讓您能將資料庫等支援型服務部署在分別的容器內,然後集中管理所有這些容器化元件,以確保可用性和效能。

5. 將建置和執行視為不同階段。

例如,您可以用 Jenkins (與 Kubernetes 分開的管道自動化伺服器) 來建置應用程式,然後用 Kubernetes 來執行 Docker 映像。

6. 將應用程式當做無狀態處理序來執行。

Kubernetes 會讓執行無狀態應用程式變得簡單。例如,在應用程式執行時,Kubernetes 會讓各個狀態在 etcd 資料儲存區內能各自獨立。Kubernetes 也讓您能附加持續性儲存裝置。例如,定義某一機組的規格檔可能會需要一個持續型磁區;如果此機組停擺,取代的機組會連至同一個持續型磁區。

7. 利用連接埠繫結來開放服務。

Kubernetes 包含用於開放連接埠服務的設定選項。在上述出現的 nginx 範例 YAML 檔中,nginx 網頁伺服器便是繫結到連接埠 80,並以服務形式對外開放。

8. 藉由增加並行處理序進行水平擴充。

Kubernetes 會增加更多機組,藉此延展應用程式。例如,Kubernetes 能利用複寫控制器,一次增加多個機組。

9. 藉由可處置性確保耐用性。

在 Kubernetes 內執行的容器會被視為可變動,可隨選或依照排程停止和取代容器。

10. 讓開發和生產成為同級環境。

Kubernetes 環境會讓開發和生產程式碼接受相同方式的嚴格測試。例如,可以用 Kubernetes 一次部署兩個機組,一個機組包含生產環境,另一個機組包含接移環境,如此一來就會讓接移和生產環境實際上成為同級環境。此外,容器內規定的環境會在開發和生產環境內維持一致。

11. 將日誌記錄作為事件串流來處理。

Kubernetes 讓您能存取容器的標準輸出,如此一來就能利用自選的工具,例如 VMware vRealize® Log Insight™,將容器的輸出作為資料串流來處理。

12. 將管理工作作為一次性處理序來執行。

您可以為應用程式容器組成的機組排定時程,使用不同進入點來執行不同的處理序,例如以指令碼來移轉資料庫。

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 9

Page 10: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

使用情境範例以下簡短的個案研究說明以 Kubernetes 管理容器的高階使用情境。

一家大都會區內的計程車公司因共乘服務而持續流失乘客,該公司在當地市場一度稱霸市佔率,如今卻岌岌可危。該公司需要轉型為能夠與共乘服務公司競爭的數位化企業。為了達到此目標,該公司想開發自己的行動應用程式,以具成本效益的方式在其不大的資料中心內執行此應用程式,並且希望能提供創新服務。

此外,該計程車公司依然保有幾個優勢:知名且歷史悠久的當地品牌,以及司機準時、有禮且安全的聲譽。

在新聘的開發人員開發行動應用程式的同時,該計程車公司也利用市售硬體和虛擬化進行資料中心現代化改造。為了充分利用其小型資料中心的資源,以及將成本降到最低,該公司計畫在虛擬機上的 Docker 容器內執行這個新的應用程式。Kubernetes 將會協調此容器化應用程式。

在推行此應用程式,以及在該公司的計程車內外進行廣告宣傳之後,此應用程式即旗開得勝。為了因應此應用程式使用量的波動,該公司透過 Kubernetes 動態地擴充執行此應用程式的容器數。例如,當此應用程式的指標達到預先定義的臨界值時,表示使用量高 (一般是在上下班時段發生),該公司的開發營運團隊便會利用 Kubernetes 的機組自動水平擴充功能,自動調整到最大容器數,讓系統能因應需求。反觀,在凌晨 4 點時,會減少容器數,以便彈性因應此時段的低需求,進而節約資源。

此行動應用程式會建立叫車請求與地點的關聯性。該計程車公司會採集這些資料,再加上該公司長久以來對此城市的生活型態瞭若指掌,就能將車子派至最佳地點載到招車乘客,以此方式主動攔截一些向競爭對手叫車的請求。此外,由於該公司將此應用程式的日誌記錄作為事件串流來處理,因此能日夜動態地執行此策略,派車到高需求地點承載招車乘客。

由於該公司是以容器實作此應用程式,所以開發人員能每日推行新變更。此應用程式收集到的資料能幫助該公司準確指出應開發的新功能,並快速進行創新,以集中發揮該公司的實力,例如辨識常客,以及推行回饋方案,以留住這些常客。

該公司的技術靈活性、容器化應用程式以及 Kubernetes 的協調作業等商業優點能帶來一大競爭優勢:

• Kubernetes 內的排定時程原則為該公司提供所需的彈性,能以具成本效益的方式,使用其不大但目前已現代化改造的資料中心,動態地因應需求。

• 錯誤和故障均由 Kubernetes 自動處理,這為該公司人數不多的開發營運人員減少了疑難排解上的要求。

• 能順暢地修改此應用程式和其功能,幫助該公司擁有更高的靈活性,並且能更巧妙運用該公司對當地生活型態的瞭解,戰勝規模較大但在地性不足的競爭對手。

為開發人員提供的優點

容器和 Kubernetes 的商業價值不僅限於

公司整體或資訊長辦公室。開發人員也會

喜歡容器,因為容器讓開發人員的工作更

輕鬆、讓開發過程更愉快,並且讓工作有

更具成效。

• 可移轉性:容器讓開發人員能選擇部署

應用程式的方式和位置。

• 速度:容器會加快測試等工作流程以反

覆作業的速度。

• 持續整合/持續部署管道:Kubernetes 和容器能支援持續整合與持續部署。

• 彈性:開發人員能隨時隨地在自己的筆記

型電腦上用自己喜歡的工具編寫程式碼。

• 第 13 個要素:容器和 Kubernetes 已被

視為潮流技術。開發人員對於採用這些

技術抱持高度意願。

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 1 0

Page 11: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

• 容器和 Kubernetes 讓執行此應用程式變得更加簡單且成本更低。

• 由於開發營運團隊能輕鬆將容器從測試環境移轉到生產環境,因此會加快新功能的開發和部署速度。

VMware 提供的容器技術解決方案The Hackett Group 公司在最近一份標題為《消弭 2017 年數位化轉型信心差距》

(Closing the Digital Transformation Confidence Gap in 2017) 的報告中,對 180 多家大型公司的高階主管進行問卷調查。該報告發現,受調者「對於數位化轉型可能為企業帶來的影響抱持高度期待,以及不看好企業執行數位化轉型的能力」,在這兩方面之間有極大的信心差距。The Hackett Group 公司指出,這些發現證明 IT 需要投資於必要工具,並採用快速開發應用程式的技術,例如靈活的流程。8

VMware 提供的雲端原生解決方案能幫助您以具成本效益的方式快速讓容器投入生產,進而提高您執行數位化轉型的能力。

在虛擬機上執行容器也會為容器化應用程式多增加一層有益的安全性,尤其是在執行第三型雲端原生應用程式的情況下,即微服務。一份 Docker 安全性白皮書指出:「將 Docker 容器和虛擬機一起部署,能將一整組的服務相互隔離,然後在虛擬機主機內加以分組。」9

將容器和虛擬機一起部署,會讓應用程式有兩層隔離,這種方法非常適合有多租戶和多種工作負載的雲端式環境。這份 Docker 安全性白皮書也指出:「Docker 容器與虛擬化技術相得益彰,不但能保護虛擬機本身,還能為主機提供深層防禦。」

vSphere Integrated ContainersVMware vSphere Integrated Containers 是一個建置在 VMware vSphere 上的全方位容器解決方案,會在您的 VMware 軟體定義的資料中心內同時執行現代化和傳統工作負載,並且提供企業級網路、儲存、安全性、效能和能見度。

vSphere Integrated Containers 支援 Docker 容器,讓您能立即使用容器技術,以提高開發人員生產力和商業靈活性。此解決方案能幫助您的組織藉由部署容器化應用程式,轉型為數位化企業,並進行資料中心現代化改造。

8 《儘管對雲端、分析、機器人流程自動化、機器認知與行動等技術所引領的數位化轉型抱持高度期待,但是 IT 和其他商業服務領域看到的卻是低執行能力》(Despite High Expectations for Digital Transformation Led by Cloud, Analytics, Robotic Process Automation, Cognitive & Mobile, IT & Other Business Services Areas See Low Capability to Execute),The Hackett Group 公司,2017 年 3 月 16 日。註冊之後即可下載此研究版本,請至:http://www.thehackettgroup.com/research/2017/social-media/key17it/。

9 《容器安全性簡介》(Introduction to Container Security),Docker 白皮書,Docker.com。

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 1 1

Page 12: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

架構概觀

以下圖表說明 vSphere Integrated Containers 的高階架構。

NSX ESXi vSAN

虛擬容器主機 Docker 容器主機

佈建/排定時程

實體基礎架構

Sec

urity

/ M

icro

-seg

men

tatio

n 登

安全

管理

C

Docker 引擎

Linux Kernel

C C

Linux Kernel

C

Linux Kernel

C

Linux Kernel

C

圖 1:vSphere Integrated Containers 的高階架構

此架構為您提供兩種容器部署模式:

• 虛擬容器主機:vSphere Integrated Containers 能充分利用 vSphere 的原生架構來佈建容器。vSphere Integrated Containers 會將每個容器映像部署為一個虛擬機,以此方式將 vSphere 的可用性和效能功能延伸到容器化工作負載,包括 VMware HA、vMotion 和 Distributed Resource Scheduler。此外,開發人員也可以使用 Docker API。

• Docker 容器主機:開發人員可以自行隨選佈建原生 Docker 容器主機,並在 vSphere 上執行。vSphere Integrated Containers 提供一個無需票證的環境,讓開發人員能使用 Docker 工具,同時也讓 IT 團隊能治理和掌控整個基礎架構。

元件 vSphere Integrated Containers 的每個元件都是一項開放式原始碼專案:

• vSphere Integrated Containers Engine:此引擎是 vSphere 的容器執行階段,讓軟體工程師能在容器內開發容器化應用程式,並將容器化應用程式連同傳統虛擬機式工作負載部署在 vSphere 叢集上。

• Harbor:Harbor 是一個儲存和散發容器映像的企業級私有容器登錄工具,能延伸 Docker 的開放式原始碼散發功能,以及身分識別管理、角色型存取控制與稽核等這類企業功能。

• Admiral:Admiral 是一個容器管理入口網站,為開發營運團隊和其他人員提供佈建和管理容器的使用者介面。例如,Admiral 能顯示容器執行個體相關指標。雲端管理員能管理容器主機,並將治理原則套用在容器的使用上,包括容量配額。

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 1 2

Page 13: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

功能

vSphere Integrated Containers 包含一個整合身分識別管理的統一管理入口網站,能安全地佈建容器。開發人員和開發營運團隊能隨選建立 Docker 容器主機,以滿足各自的需求。

這個結果讓應用程式開發團隊能建置、測試和部署容器化應用程式。此解決方案支援靈活開發做法和開發營運方法,例如持續整合與持續部署 (CI/CD)。

Wavefront by VMwareWavefront® by VMware 能有效率地大規模監控容器。Wavefront 平台包含控制面板,能為開發營運團隊提供即時能見度,以瞭解容器化應用程式和 Kubernetes 叢集的運作與效能。

Wavefront 服務能針對容器和 Kubernetes 叢集上的資料進行測量、建立關聯性和分析。其控制面板會顯示微服務效能和資源利用率的相關資料,幫助您識別問題,以及將應用程式最佳化。例如,這類資料有助於決定延展容器環境的方式以及時間。如需詳細資訊,請查看 VMware 與 Wavefront 頁面。

Pivotal Container ServiceVMware® Pivotal Container Service 提供生產級 Kubernetes,讓企業能透過可靠的方式在私有雲和公有雲上部署、執行和運作現代化與傳統應用程式。Pivotal Container Service 是以開放式原始碼專案 Kubo 為依據,會提供高可用性、進階安全性和高效營運,讓企業能縮短產品上市時間、提高開發人員生產力,以及降低營運成本。

為了提供快速將微服務和容器化工作負載投入生產的途徑,Pivotal Container Service 會在 VMware vSphere 上或在 VMware 軟體定義的資料中心內,建立一個統一的虛擬化和容器基礎架構。

元件

Pivotal Container Service 包含下列元件:

• 生產級 Kubernetes。

• BOSH:這是一個開放式原始碼系統,能統一小型和大型雲端軟體的發行版本工程設計、部署和生命週期管理。此系統極適合用於大型分散式系統,能以零停機時間到極短停機時間的效能,執行監控、故障復原和軟體更新。BOSH 支援多家基礎架構即服務供應商,包括 VMware vSphere、Google Cloud Platform、Amazon Amazon Elastic Compute Cloud (EC2) 以及 OpenStack。

微服務的優點

微服務與容器結合,日漸成為開發新應用

程式的首選架構型態。此架構會將應用程

式的功能分成一組小型、離散、非集中

化、目標導向的流程,每個流程皆可獨立

開發、測試、部署、置換和擴充。

• 能提升模組化功能

• 更容易開發和測試應用程式

• 能將開發平行化:一個團隊能在其他團隊

處理其他服務時,獨立開發和部署服務

• 能支援持續的程式碼重構,隨著時間提

高微服務的效益

• 能推動持續整合與持續部署的模式

• 提高延展性

• 能簡化元件升級作業

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 1 3

Page 14: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

• VMware ESXi™:ESXi 是領先業界的專用裸機虛擬化管理程序,直接安裝在實體伺服器上,因而能分割到不同虛擬機內。

• VMware NSX®:這項運用現代化應用程式架構的網路虛擬化技術會為 Kubernetes 叢集提供重要網路功能。

結論在 VMware 基礎架構上建置和部署容器化應用程式,會幫助實現數位化轉型,進而創造商業價值。VMware 解決方案會提高開發人員生產力、商業靈活性、IT 彈性以及應用程式延展性。此結果會幫助您順應市場變化,並縮短應用程式上市時間。

深入瞭解...

如要暸解 VMware 的解決方案能如何幫助

您建置、執行和管理雲端原生應用程式,請

造訪:cloud.vmware.com/cloud-native-apps

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 1 4

Page 15: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

運用容器和 KUBERNETES 推動數位化轉型

白皮書 | 1 5

Page 16: 運用容器和 KUBERNETES 推動數位化轉型 - VMware · 簡介 Kubernetes 會管理容器。容器會將應用程式和其相依性封裝為一個可散發映像,此映象

VMware, Inc. 3401 Hillview Avenue Palo Alto CA 94304 USA Tel 877-486-9273 Fax 650-427-5001 www.vmware.com 台北市 110 信義路五段七號台北 101 大樓 57 樓 C 室 電話 +886-2-8758-2804 傳真 +886-2-8758-2708 www.vmware.com/twCopyright © 2017-2018 VMware, Inc. 版權所有。本產品係受美國及國際之版權及智慧財產權相關法律保護。VMware 產品係受 http://www.vmware.com/tw/download/patents.html 上所列之一或多項專利的保護。 VMware 係 VMware, Inc. 在美國和/或其他管轄區域的註冊商標或商標。此處所提及的所有其他標誌和名稱,可能分別為其相關公司的商標。 文件編號:VMW_17Q3_WP_Driving-Digital-Transformation-with Kubernetes_FINAL2_081617 08/17