What is Kubernetes?

Kubernetes 已成為雲端原生軟體的標準,因為它與容器有關。 事實上,雲端原生運算基金會 (CNCF) 的最新調查發現, Kubernetes 在生產中的使用率已成長至 78% 。 然而,與任何在短時間內迅速流行的技術一樣,人們對 Kubernetes 是什麼以及 Kubernetes 和容器化帶來的安全考慮存在很多困惑。 舉個例子:在 CNCF 的同一項調查中,40% 的受訪者將安全性視為容器使用/部署的挑戰,38% 的受訪者將複雜性視為挑戰。

對於負責強化容器部署的安全工程師來說,絕對需要克服一個學習曲線。 為了幫助您快速上手,我們將了解 Kubernetes 是什麼、它是如何運作的,並探討一些基本的 Kubernetes 安全概念。

免費試用 Kubernetes 安全指南

What is Kubernetes?

Definition

Kubernetes 是一個用於編排和管理容器工作負載的平台(例如 Docker 容器)。 

自 2014 年首次發布以來,Kubernetes(一個開源 CNCF 畢業項目,其根源可追溯到 Google 的開發團隊)已成為開發營運和雲端原生圈子中最受歡迎的工具之一。

了解 Kubernetes 的前提是先了解容器。 簡而言之,容器是輕量級軟體包,包含應用程式運作所需的所有依賴項。 容器解決了應用程式在不同環境下可靠運行的問題。 由於容器重量輕、便於攜帶,因此越來越受歡迎,對於現代微服務和網路應用程式的發展至關重要。

雖然使用單一容器不需要太多的管理和編排,但大型應用程式需要能夠擴展。 現代開發團隊需要能夠自動化和擴展容器部署流程。 這就是 Kubernetes 等容器化工作負載管理工具的用武之地。 Kubernetes 提供了缺少的管理和編排。

在討論 Kubernetes 時,「管理和編排」這個詞經常被提及。 然而,這並沒有告訴我們太多具體細節。 簡單來說,這意味著 Kubernetes 能夠實現負載平衡、組態管理、儲存資源配置、自動資源分配(例如 每個容器的中央處理器和 RAM),以及容器部署的擴展或縮減。

Kubernetes vs Docker

關於 Docker 與 Kubernetes 的話題可能會有許多混淆。 然而,它實際上很簡單:

  • Docker 是一個用於建立和運行容器的平台。 它不是唯一的容器平台,但它是最受歡迎的。
  • Kubernetes 是一個管理多個容器的工具,包括 Docker 容器。
  • Docker 提供了一個具有與 Kubernetes 相同功能的工具,稱為 Swarm。

最後一點可能會導致一些混亂。 Docker 恰好提供了一個工具——Swarm——它提供了與 Kubernetes 類似的功能。 然而,Kubernetes 是迄今為止更流行的管理和編排工具。

重要的 Kubernetes 概念和術語

除了容器之外,在開始使用 Kubernetes 時還需要了解其他重要概念。 讓我們來看看一些關鍵術語:

  • K8s 。 這是 Kubernetes 的同義詞。 開發人員有時會透過獲取單字的第一個和最後一個字母以及它們之間的字母數量,並將其組合成單字的速記來創建流行術語的速記。 互通性變成“i14y”,在地化變成“l10n”,Kubernetes 變成“k8s”。
  • 豆莢。 這些是 Kubernetes 中可以部署的最小單元。 Pod 由一個或多個共享儲存和網路資源的容器以及運行容器的規格組成。
  • 工作負載。這些是 Kubernetes 運行的應用程式(實際上是 Pod 集)。 Kubernetes 根據配置的工作負載指示部署更新並擴充 pod。
  • 節點。 運行工作負載的運算「硬體」(例如 RAM 和中央處理器)稱為節點。 「硬體」可以是任何東西,從 Raspberry Pi 到虛擬機器再到實體伺服器,這裡的關鍵是運算資源來自節點。 有兩種主要類型的節點:運行工作負載的工作/minion 節點和管理一組工作/minion 節點的主節點。
  • 集群。 Kubernetes 叢集是一組節點。 在叢集中,工作節點運行工作負載,主節點控制工作節點執行的操作。

Kubernetes 有什麼用?

只要基礎設施即程式碼方法可以用於容器部署,Kubernetes 就可以有效發揮作用。 這意味著敏捷開發團隊和專注於開發營運實務的團隊通常會使用 Kubernetes 來協助自動化其持續整合/持續交付 (CI/CD) 管道。 此外,Kubernetes 還可以透過監控節點的運作狀況和資源利用率並根據需要進行擴展或縮減來幫助自動擴展雲端原生應用程式。

重要的 Kubernetes 安全概念

當然,雖然 Kubernetes 從自動化和可擴展性的角度增加了價值,但它也為安全團隊帶來了新的難題。 如何確保您的應用程式和服務安全部署? 像往常一樣,這首先要了解您的威脅模型和風險偏好,但有一些基礎知識可以幫助您入門。

  • 雲端原生安全的 4C – Kubernetes 提出了一種4 層雲端原生安全方法,稱為 4C:程式碼容器、叢集雲端/主機託管/企業資料中心。 在每一層,您都需要確保遵循安全最佳實務。 這在不同的層面上意味著不同的事情。 例如,確保程式碼強制對傳輸中的資料進行加密,並限制僅訪問必要的網路端口,禁止容器中的特權用戶,強化可配置的 Kubernetes 叢集元件,以及遵循雲端服務提供者的安全最佳實踐。
  • Pod 安全策略。 對於 Kubernetes Pod,有 3 種基本安全策略。 為了正確保護您的環境,您需要了解每種方法的可用性/安全性權衡,並採取相應的行動。
    • 享有特權。 最廣泛的權限等級。 此策略可能會導致已知的權限升級。
    • 基線/預設。 特權與受限之間的中間地帶。 防止已知的權限升級。
    • 受限制的。 根據 Kubernetes Pod 強化最佳實踐,這是 3 個基本策略中限制性最強的。
  • Pod 安全上下文。 Pod 的安全上下文在運行時配置其安全設定。 這涵蓋了存取控制、是否以特權運作、安裝唯讀檔案系統等面向。 您可能認為這聽起來很像 Pod 安全策略,而且它們確實是相關的。 安全上下文是運行時發生的情況,而安全性策略可讓您定義叢集中使用的上下文的參數。
  • 秘密。 基礎設施即程式碼工具很棒,但您可能不希望 OAuth 令牌或密碼位於 YAML 檔案中。 Secrets 是 Kubernetes 儲存此類敏感資訊的方式。

制定容器可見性和脆弱性掃描計劃也很重要,以確保快速修復問題並保持符合任何相關標準。 要開始容器脆弱性掃描和安全態勢評估,我們建議閱讀連續容器可見度和合規性 (PDF)

Kubernetes 的後續步驟

現在您已經了解了 Kubernetes 如何在高層工作——自動控制和管理容器部署——您可以採取後續步驟來安全地部署 k8s。 若要深入了解如何使用容器、Kubernetes 和無伺服器基礎架構實現安全性,請註冊觀看由雲端資安專家 Hillel Solow 舉辦的免費「如何將安全性分層到現代雲端應用程式」網路研討會

×
  反映意見
由於 Cookie 有其功能且可供我們用於資料分析和行銷等相關業務,本網站是有使用 Cookie 的。繼續瀏覽本網站即表示您同意我們使用 Cookie。若欲了解更多相關資訊,請參閱我們的 Cookie 聲明