什麼是 Kubernetes?

經常被形容為「雲端的作業系統」的 Kubernetes 是一個開源平台,可用於管理容器化應用程式和服務的叢集。2014 年,Google 工程師 Joe Beda、Brendan Burns 和 Craig McLuckie 進行開發,不久後便開始採用開源,Kubernetes 本身很快就成為蓬勃發展的雲端原生生態系統。現今,Kubernetes (在古希臘語中意指「舵手」或「飛行員」) 是由 Linux Foundation 的分支機構 Cloud Native Computing Foundation (CNCF) 管理。

Kubernetes 是 CNCF 第一個畢業專案,而且是史上最快速成長的開源專案之一。Kubernetes 目前已經超過 2,300 位提供者,廣泛採用了各種規模的企業,包括半數的 Fortune 100。

Kubernetes 101 - 金鑰條款

首先,以下是與 Kubernetes 相關的幾個主要術語。Kubernetes Standardized Glossary 頁面上提供更豐富的清單。您也可以運用 Kubernetes Cheat Sheet,其中包含常用的 kubectl 命令和旗標清單。

叢集

是一組單獨稱為節點的機器,用於執行由 Kubernetes 管理的容器化應用程式。

節點

是虛擬機器或實體機器。叢集是由主要節點與數個工作節點所組成。

雲端容器

是包含軟體及其相依性的影像。

Pod

是在 Kubernetes 叢集上執行的單一容器或一組容器。

部署

是管理以 Pod 代表之複製應用程式的物件。Pod 會部署在叢集的節點上。

複本

確保一次執行指定數量的 Pod 複本。

服務

說明如何存取由一組 Pod 代表的應用程式。服務一般說明連接埠和負載平衡器,並且可用來控制叢集的內部和外部存取。

什麼是 KubeCon?

KubeCon 是 Kubernetes 開發人員和使用者的年度會議。自 2015 年首屆 KubeCon 共有 500 位與會者以來,KubeCon 已發展成為雲端原生社群的重要事件。2019 年,美國加州聖地亞哥版的 KubeCon 吸引 12,000 名開發人員及網站可靠性工程師,他們正在慶祝 Kubernetes 雲端協調平台周圍蓬勃發展的開源生態系統。

什麼是 Kubernetes Container?

隨著開發人員越來越以不同雲端、測試環境、筆記型電腦、裝置、作業系統及平台部署各種運算環境的軟體,這讓軟體執行可靠的議題至關重要。這就是容器的用武之地:其將應用程式與其整個執行時期環境捆綁在一起。這種情況下,容器是一種虛擬化形式,因為其提供「泡泡」,可在其中包含正確的程式庫、相依性以及作業系統來執行應用程式。但容器比虛擬機器小,因為其僅包含應用程式需求的資源,僅此而已。

Kubernetes 與 Docker 的比較

雖然 Linux 容器自 2008 年起即存在,但是 2013 年 Docker 容器的興起才使其聲名大噪。同樣,對部署容器化應用程式 (包含執行所需一切內容的應用程式) 的興趣激增最終產生新問題:管理數千個容器。Kubernetes 會自動協調容器生命週期,將容器分散在代管基礎架構上。Kubernetes 會視需要縱向擴展或縮減資源。其可以佈建、排程、刪除以及監督容器的狀況。

Kubernetes 包含哪些元件?

Kubernetes 的主要元件為叢集、節點及控制平面。叢集包含節點。各節點至少包含一個工作機器。節點託管包含已部署應用程式元素的 Pod。控制平面可管理叢集中的節點與 Pod,通常可跨多部電腦取得高可用性。

什麼是 Kubernetes

控制平面包含下列項目:

  • Kubernetes API 伺服器:提供用於控制 Kubernetes 的程式設計介面 (API)
  • etcd:叢集資料的鍵值存放區
  • Kubernetes 計劃員:比對新的 Pod 與可用的節點
  • Kubernetes-controller-manager:執行多種流程來管理節點故障、控制複製、透過端點加入服務和 Pod,以及控制帳戶和存取憑證
  • Cloud-controller-manager:協助管理特定雲端供應商的 API,例如特定基礎架構路由和負載平衡

節點元件包括:

  • kubelet:檢查容器是否在 Pod 中執行
  • Kubernetes 網路代理伺服器:維護網路規則
  • Docker、容器或其他類型的容器程式執行時期

Kubernetes 有哪些優點?

使用容器時,您可以確信應用程式已與執行所需的一切捆綁在一起。不過,當您新增容器 (通常包含微服務) 時,可以使用 Kubernetes 自動管理和分配這些容器。

藉助 Kubernetes,組織可以:

自動調整 視需求將部署向上或向下撥號。
探索服務 透過 DNS 或 IP 位址尋找容器化服務。
餘額載入 分配網路流量以穩定部署。
管理儲存 選擇本機或雲端儲存。
控制版本 選擇您想要執行的容器類型,以及使用新的影像或容器資源取代何種容器。
維護安全性 安全更新與特定容器影像相關的密碼、OAuth 憑證及 SSH 金鑰。

使用 Kubernetes 有何挑戰?

儘管 Kubernetes 是高度相容的,但可以支援任何類型的應用程式,這很難理解和使用。Kubernetes 在某些 CNCF 成員提到備註的情況下,並未永遠為指定的工作負載提供正確的解決方案。這就是為什麼 Kubernetes 生態系統包含許多組織建立以解決特定工作負載問題的相關雲端原生工具。

Kubernetes 會部署容器 (非原始程式碼),且無須建置應用程式。如需記錄日誌、中介軟體、監督、組態、CI/CD 及其他許多生產環境活動,您需要額外工具。也就是說,Kubernetes 具延伸性,且已證明適用於從噴氣機到機器學習的各種案例。事實上,包括 Oracle、Google、Amazon Web Services 等雲端供應商已透過 Kubernetes 的獨家擴充能力建立託管 Kubernetes,這是可降低複雜性的服務,並提高開發人員產能。

什麼是託管 Kubernetes?

雲端原生和 Kubernetes 改變 AgroScout 支援架構的方式。

我們的 Cloud Infrastructure Kubernetes Engine 為適合開發人員的受控服務,您能夠將容器化應用程式部署至雲端。當您的開發團隊想要可靠建立、部署及管理雲端原生應用程式時,請使用 Kubernetes Engine。您可以指定應用程式所需的運算資源,而 Kubernetes Engine 可在現有雲端基礎架構租用中佈建這些資源。

雖然您不需要使用受控 Kubernetes 服務,但 Kubernetes Engine 是一種簡單方式,可透過 Oracle Cloud Infrastructure 的控制、安全性及可預測的效能,讓您輕鬆執行高可用性叢集。Kubernetes Engine 支援裸機和虛擬機器作為節點,而且經過 CNCF 認證。您可以輕鬆取得所有 Kubernetes 更新,並與 CNCF 生態系統相容,無須額外作業。


Kubernetes 生態系統和社群

Oracle 是雲端原生運算基金會 (CNCF) 的白金會員,支援數十種軟體開發專案 (依成熟度進行組織)。畢業的專案 (Kubernetes、PrometheusEnvoyCoreDNScontainerdFluentdJaegerVitessTUFHelm) 對於雲端原生開發來說都是非常寶貴的。

如何開始使用 Kubernetes

Kubernetes 的支援專案生態系統非常龐大,支援專案遍及整個環境。這場景可能令人生畏,尋找簡單問題的答案可能會讓您陷入困境。但是,此路徑的前幾個步驟非常簡單,您可以視需要輪流瀏覽進階概念。瞭解如何:

  • 使用 Docker 和 Kubernetes 設定本機開發環境
  • 使用 Helidon 建立簡單的 Java 微服務
  • 運用 Docker 將微服務構建到容器影像中
  • 在本機 Kubernetes 叢集部署微服務
  • 擴大或縮小叢集的微服務

適合開發人員的 Kubernetes

開發人員若想要啟動第一個 Kubernetes 專案,便可以在開發者入口網站中查看,瞭解如何使用雲端殼層在 Kubernetes 上建置第一個 Arm 應用程式或部署 Kubernetes 叢集的位置。


OCI 上的 Kubernetes 簡介 (8:32)