從 Docker 到 Kubernetes

從 Docker 到 Kubernetes

容器無疑已成為近年來的技術流行語。容器化技術的出現與崛起,以及由此衍生的微服務架構、DevOps 和雲原生概念,對軟體行業產生了深遠影響。

容器帶來許多優點。其全面的封裝性、便利的部署方式,以及輕量級的啟動與調度,促成了它們的廣泛採用。搭配編排系統後,無論系統多複雜,容器都能簡化應用程式的管理與迭代。此外,容器化應用展現出絕佳的移植性,能在任何具備相容容器執行環境的平台中順暢運作。

輕量級容器與彈性雲端運算可謂相得益彰。容器對多樣化執行環境的適應力與快速啟動能力,結合動態雲端擴展的巨大資源彈性,讓雲端上的容器化應用能在短時間內擴展至數千個實例。因此,雲端是容器化應用運作與擴展的理想平台。

在 Docker 獲得廣泛認可之前,雲端服務供應商便已開始探索並運用類似容器的技術。雲端的多租戶特性需要環境隔離,這使得雲端供應商既是容器化的使用者,也是受益者。雖然有些廠商選擇專有解決方案,但並非所有廠商都直接擁抱 Docker。

例如,AWS Elastic Beanstalk 曾使用私有的類似容器技術來隔離 Web 應用程式。隨後,它開始支援以 Docker 容器打包的應用程式。

隨著 Docker 的崛起,各大公有雲廠商一致開始提供標準化的容器相關 PaaS 服務,並持續強化這些服務。追溯容器 PaaS 的演進,可以清楚看到不同的發展階段。

最初,雲端容器平台的重點在於讓 Docker 容器在雲端順暢執行。這些服務主要協助使用者建立底層虛擬機器叢集,減輕手動管理虛擬機器的負擔。然而,隨著容器化應用日益複雜,編排需求應運而生。於是,廠商開始推出並強化自家的容器編排解決方案。

在編排框架競逐的時代,有些廠商採取多管齊下的策略。例如,Microsoft 的 Azure Container Service 同時支援 Docker Swarm、Apache Mesos (DC/OS) 與 Kubernetes。另一些廠商,如 AWS 的 Elastic Container Service (ECS),則選擇專有編排方式,以強化與現有雲端服務的整合。

如同我們所知,Kubernetes 最終在編排框架之戰中勝出,成為事實上的標準。雲端廠商迅速調整方向,優先支援雲端上的 Kubernetes,並推出專屬的 Kubernetes 服務,例如 AWS Elastic Kubernetes Service (EKS) 與 Azure Kubernetes Service (AKS)。同樣地,阿里雲也逐步在其容器服務中淘汰 Swarm 支援,專注於 Kubernetes 版本 (ACK)。

雲端對容器技術的支援與容器生態系同步演進,雲端廠商在其中扮演著重要的參與者與推動者角色。例如,Google Cloud 上的 Google Kubernetes Engine (GKE) 可謂「生於斯、長於斯」,始終是雲端 Kubernetes 服務的標竿。

相較於自行架設的 Kubernetes 叢集,雲端 Kubernetes 服務具有多項顯著優勢。

首先,由於雲端的多租戶特性,許多雲端 Kubernetes 服務無需使用者佈建 Master 節點。使用者只需建立並支付 Worker 節點的費用,而雲端平台則提供並管理 Master 節點,從而降低資源消耗與營運成本。

其次,Kubernetes 雖然複雜,但其抽象設計極為出色,能實現廣泛且靈活的擴展。雲端廠商在此領域投入甚多,使其平台上的各種 IaaS 與 PaaS 元件能與 Kubernetes 生態系緊密整合。

例如,在常用於引導外部流量的 Ingress Controller 領域,已有雲端負載平衡器的控制器實作,如 AWS ALB Ingress Controller 與 Azure AKS Application Gateway Ingress Controller。這些控制器會建立對應的 PaaS 服務實例,以服務 Kubernetes 叢集。

此外,在 StorageClass 層級——Kubernetes 中用於定義動態儲存磁碟區配置策略——可以指定使用雲端區塊儲存服務,依需求佈建並掛載持續性儲存。

從架構靈活性的角度來看,雲端 Kubernetes 服務還帶來另一項優點:多叢集部署。

由於建立 Kubernetes 叢集的門檻降低,如果業務單位之間的相依性低,可以為每個單位建立獨立的 Kubernetes 叢集。這種做法能增強隔離性,並允許不同叢集獨立擴展。

從 Docker 到 Kubernetes,容器生態系的持續演進迎來了雲原生技術的浪潮。開發者並非孤軍奮戰於學習與接納容器技術的過程。雲端運算廠商也競相將自己定位為執行容器的最佳平台,推出琳瑯滿目的容器相關服務,以吸引容器使用者上雲。

有趣的是,容器與廠商積極推廣的某些雲端服務之間存在著微妙的關係。其中存在著競爭與替代的成分。

這類似於某些 PaaS 功能可以用 IaaS 來實現,容器憑藉其卓越的建構自由度與便捷的打包部署機制,能夠部分取代雲端中某些可重用的元件。此外,容器可以作為更大系統的一部分進行編排,成為減輕供應商鎖定效應的手段。

儘管容器可能對特定雲端服務構成潛在威脅,雲端運算再次展現了其技術中立性。雲端平台公開擁抱並支援容器的執行,甚至將其定位為重點發展服務。賦予使用者選擇權,正是雲端包容性的體現。

Novita AI 是全方位的雲端平台,助力您的 AI 抱負。整合 API、無伺服器、GPU 實例——您所需的經濟有效工具。無需基礎設施,免費開始,讓您的 AI 願景成真。

推薦閱讀:

  1. 揭開 Kubernetes 排程之謎:深入探討 Predicates 與 Priorities
  2. 您需要了解的 Docker 知識