Kubernetes 與Docker

利用搭配效果更佳的容器技術,更快速地建置、傳遞應用程式及調整其規模。

Kubernetes 與Docker 的比較問題

談到 Kubernetes 與Docker 的比較時,通常會落入非此即彼的陷阱:我應該使用 Kubernetes 或 Docker?這就像是比較蘋果與蘋果派,常見的誤解是您必須兩者擇一。

若以「兩者搭配」的架構來提問,就比較容易了解 Kubernetes 與 Docker 有何不同。事實上,您不需要選擇,Kubernetes 和 Docker 基本上是不同的技術,適合搭配使用來建置、傳遞容器化應用程式及調整其規模。

Docker 與容器化的竄升

Docker 是開放原始碼技術,也是容器檔案格式,可將應用程式的部署自動化為可在雲端或內部部署執行之自給自足的可攜式容器。Docker, Inc. 雖然享有類似的名稱,但這家公司旨在開發可搭配 Microsoft 等雲端提供者在 Linux 和 Windows 上執行的開放原始碼 Docker 技術。

雖然隔離環境不是嶄新的概念,而且有其他類型的容器化軟體,但 Docker 在過去幾年來已成長為預設容器格式。Docker 提供執行階段環境的 Docker 引擎。該引擎可讓您在任何開發電腦上建置和執行容器,然後透過 Docker Hub 或 Azure Container Registry 等容器登錄儲存或共用容器映像。

隨著應用程式發展到跨多個伺服器部署的多個容器,操作方式也變得更加複雜。雖然 Docker 為封裝與分散容器化應用程式提供了開放標準,但可能很快就變得越來越複雜。如何協調和排程多個容器?應用程式中所有不同的容器如何彼此通訊?如何調整多個容器執行個體的規模?這正是為什麼您需要 Kubernetes 的協助。

Kubernetes 和容器協調流程

Kubernetes 是開放原始碼協調流程軟體,提供 API 來控制這些容器的執行方式和位置。該軟體可讓您執行 Docker 容器和工作負載,並協助您解決在調整跨多部伺服器部署之多個容器規模時的一些複雜作業。

Kubernetes 可讓您根據可用的計算資源及每個容器的資源需求,來協調虛擬機器的叢集並將容器排程在這些虛擬機器上執行。容器會分組為 Pod,即為 Kubernetes 的作業單位。這些容器和 Pod 可調整至您所需的狀態,而且您能夠管理其生命週期,以保持您的應用程式啟動並執行。

Kubernetes 與 Docker 有何不同?

雖然經常比較 Kubernetes 與 Docker,但更有可能比較 Kubernetes 與Docker Swarm。Docker Swarm 是著重於 Docker 容器叢集的 Docker 協調流程技術,已緊密整合到 Docker 生態系統,並使用自己的 API。

Kubernetes 與 Docker 的基本差異在於,Kubernetes 是在整個叢集內執行,而 Docker 則是在單一節點上執行。Kubernetes 的範圍比 Docker Swarm 更廣,而且可有效率地在生產環境中大規模地協調節點叢集。Kubernetes Pod (可包含 Kubernetes 生態系統中一或多個容器的排程單位) 會分散到多個節點,以提供高可用性。

Kubernetes 和 Docker - 搭配效果更佳

容器讓您只要撰寫一次程式碼,就能在任何地方執行;而 Kubernetes 則讓您有機會從單一控制平台,協調及管理您所有的容器資源。其有助於網路功能、負載平衡、安全性,以及在執行容器的所有 Kubernetes 節點之間調整規模。Kubernetes 也具有命名空間等內建隔離機制,可讓您依存取權限、預備環境等來分組容器資源。這些建構可讓 IT 人員更輕鬆地提供開發人員自助資源存取權,並可讓開發人員即使在最複雜的微服務架構上也能共同作業,而不需要模擬其開發環境中的整個應用程式。透過結合 DevOps 實務與容器及 Kubernetes,即可進一步啟用微服務架構的基準,以促進雲端-原生應用程式的快速傳遞和可調式協調流程。

簡而言之,搭配使用 Kubernetes 和 Docker 可:

  • 讓您的基礎結構更強固,並讓您的應用程式保持高可用性。讓您的應用程式保持連線,即使部分節點離線也一樣。
  • 讓您的應用程式保持高延展性。如果您的應用程式漸漸開始有越來越多的負載,而且您必須擴充才能提供更佳的使用者體驗,只要啟動更多容器並將更多節點新增至您的 Kubernetes 叢集即可。

Kubernetes 與 Docker 合作。Docker 為封裝與分散容器化應用程式提供了開放標準。您可以使用 Docker 建置並執行容器,以及儲存並共用容器映像。使用者可以輕鬆地在 Kubernetes 叢集上執行 Docker 組建,但 Kubernetes 本身不是完整的解決方案。若要在生產環境中將 Kubernetes 最佳化,請實作其他工具和服務來管理安全性、治理、身分識別和存取,以及持續整合/持續部署 (CI/CD) 工作流程和其他 DevOps 實務。

生產環境中的 Kubernetes 和 Docker 方案架構

Simplify the deployment and management of Microservices based applicationsSimplify the deployment and management of Microservices based applications12345567778
  1. 概觀
  2. 流程

概觀

使用 AKS 簡化微服務型架構的部署和管理。AKS 可簡化水平調整、自我修復、負載平衡、祕密管理。

流程

  1. 1 開發人員使用 Visual Studio 這類 IDE 來認可 GitHub 的變更
  2. 2 Github 觸發 Azure DevOps 上的新組建
  3. 3 Azure DevOps 會將微服務封裝為容器,並推送至 Azure Container Registry
  4. 4 容器會部署至 AKS 叢集
  5. 5 使用者可透過應用程式和網站來存取服務
  6. 6 Azure Active Directory 可用來保護資源的存取
  7. 7 微服務會使用資料庫來儲存並擷取資訊
  8. 8 系統管理員可透過個別的管理入口網站進行存取
Secure DevOps for AKSDevOps and Kubernetes are better together. Implementing secure DevOps together with Kubernetes on Azure, you can achieve the balance between speed and security and deliver code faster at scale. Put guardrails around the development processes using CI/CD with dynamic policy controls and accelerate feedback loop with constant monitoring. Use Azure Pipelines to deliver fast while ensuring enforcement of critical policies with Azure Policy. Azure provides you real-time observability for your build and release pipelines, and the ability to apply compliance audit and reconfigurations easily.123456789
  1. 概觀
  2. 流程

概觀

DevOps 搭配 Kubernetes 是最佳組合。在 Azure 上實作安全的 DevOps 與 Kubernetes,不僅可以兼顧速度與安全性,還能快速大量交付程式碼。利用 CI/CD 搭配動態的原則控制,以及加快常態監視的反饋迴圈的速度,為開發流程設下保護欄。使用 Azure Pipelines 快速交付,搭配 Azure 原則確保重大原則的實施。Azure 除能讓您即時觀察管線建置與發佈的狀況,還能讓您輕鬆套用合規性稽核與重新設定。

流程

  1. 1 開發人員在相同 Kubernetes 叢集中快速逐一查看、 測試和偵錯應用程式的不同部分
  2. 2 在 Azure Pipelines 執行自動化建置和測試後, 程式碼會合併至 GitHub 存放庫
  3. 3 將容器會註冊在 Azure Container Registry 中
  4. 4 Kubernetes 叢集使用了以下工具部署: 由 Terraform 安裝的 Helm 圖表,會定義所需的應用程式資源和設定狀態
  5. 5 實施原則以控管 AKS 叢集的部署。
  6. 6 發行管線會以每個程式碼自動執行 預先定義的部署策略
  7. 7 原則實行和稽核會使用 Azure 原則,透過新 CI/CD 新增
  8. 8 已取得應用程式遙測、容器健康狀態監視與即時記錄分析 使用 Azure 監視器
  9. 9 見解可用來解決問題,或提供給下一個短期衝刺

利用 Azure 的 Kubernetes 優勢

Azure Kubernetes Service (AKS) 可讓您輕鬆部署及管理容器化應用程式。AKS 提供無伺服器 Kubernetes、整合的 CI/CD 體驗,以及企業級的安全性與治理。在單一平台集結您的開發與營運團隊,好整以暇地快速建置、提供及調整應用程式。

開始使用 Kubernetes 和 Docker