節點映像檔

本頁說明適用於 Google Kubernetes Engine 節點的節點映像檔。如要瞭解如何選擇節點映像檔,請參閱指定節點映像檔

總覽

建立 GKE 叢集或節點集區時,您可以選擇要在每個節點上執行的作業系統映像檔。您也可以升級現有的叢集,以使用不同的節點映像檔類型。

可用的節點映像檔

GKE 為您的叢集提供下列節點映像檔選項:

Container-Optimized OS

Container-Optimized OS 節點映像檔是以最新版本的 Linux kernel 為基礎,並已經過最佳化處理來提高節點安全性。在 Google 團隊的支援下,這個映像檔可以快速修補以確保安全性,相關功能日後也會不斷更新。與其他映像檔相較之下,Container-Optimized OS 映像檔提供的支援、安全性和穩定性都更勝一籌。

Ubuntu

Ubuntu 節點映像檔已經過驗證,符合 GKE 節點映像檔的條件。如果您的節點需要 XFS、CephFS 或 Debian 套件的支援,請使用 Ubuntu 節點映像檔。

Containerd 節點映像檔

Containerd 是 Docker 的重要基石,也是 Docker 的核心執行階段元件。有兩個 OS 映像檔 (cos_containerdubuntu_containerd) 把 Containerd 做為直接與 Kubernetes 整合的主要容器執行階段。

如要針對節點進行偵錯或疑難排解,您可以利用專為 Kubernetes 容器執行階段建構的可攜式指令列工具 (crictl) 與 Containerd 互動。crictl 支援檢視容器和映像檔、讀取記錄檔,以及在容器中執行指令等常用功能。如需完整的支援功能和使用資訊,請參閱 crictl 使用手冊

擁有 Containerd 的 Container-Optimized OS (cos_containerd)

cos_containerd是 Container-Optimized OS 映像檔的變體,擁有 Containerd 來做為直接與 Kubernetes 整合的容器執行階段。

cos_containerd 需要 Kubernetes 版本 1.14.3 或較新的版本。

詳情請參閱使用擁有 Containerd 的 Container-Optimized OS

擁有 Containerd 的 Ubuntu (ubuntu_containerd)

ubuntu_containerd 是 Ubuntu 映像檔的變體,它會把 Containerd 當做容器執行階段來使用。

ubuntu_containerd 需要 Kubernetes 版本 1.14.3 或較新的版本。

節點映像檔的比較

接下來的幾個小節會從作業的方面比較 Container-Optimized OS 與 Ubuntu 節點映像檔,這些方面包括:

  • 軟體套件管理
  • 系統初始化
  • 記錄收集
  • 檔案系統版面配置
  • 儲存空間驅動程式支援

軟體套件管理員

coscos_containerd 節點映像檔使用內建 Docker (Containerd) 容器執行階段支援的最小根檔案系統,而該檔案系統也可做為在主機上安裝軟體的軟體套件管理工具。Ubuntu 映像檔使用 Aptitude 套件管理工具

管理 Container-Optimized OS 上的軟體

Container-Optimized OS 映像檔並不提供套件管理軟體,例如 apt-get。您無法利用傳統的機制在節點上任意安裝軟體,而是要建立包含所需軟體的容器映像檔。

Container-Optimized OS 包含僅供偵錯用途的 CoreOS 工具箱,讓您能安裝及執行常見的偵錯工具,例如 pingpsmiscpstree

如要進一步瞭解如何為 Container-Optimized OS 節點偵錯,請參閱 Container-Optimized OS 使用指南

管理 Ubuntu 上的軟體

Ubuntu 映像檔已預先安裝 Aptitude 套件管理工具。您可以使用 apt-get 指令,在這些映像檔上安裝套件。舉例來說,如要安裝 ceph 套件:

sudo apt-get update
sudo apt-get install ceph

系統初始化

在系統初始化的過程中,Container-Optimized OS 和 Ubuntu 節點映像檔都使用 systemd 管理系統資源及服務。

這兩種節點映像檔都使用 systemd 服務檔案來定義節點上的 services,以及使用 systemd.targets 來藉由依附元件為啟動目標分組。

記錄收集

Container-Optimized OS 和 Ubuntu 節點映像檔都使用 systemd-journald 收集整個系統的記錄檔。

檢視 Container-Optimized OS 及 Ubuntu 上的記錄檔

如要檢視採用 Container-Optimized OS 或 Ubuntu 節點映像檔的節點上的記錄檔,您必須使用 journalctl 指令。舉例來說,如要查看 Docker Daemon 記錄檔:

sudo journalctl -u docker

如要查看 kubelet 記錄:

sudo journalctl -u kubelet

檔案系統版面配置

Ubuntu 節點映像檔使用標準 Linux 檔案系統版面配置。

Container-Optimized OS 節點映像檔檔案系統版面配置經過最佳化,以強化節點安全性。開機磁碟的空間分成三種類型的分區:

  • 根分區,以唯獨模式掛接
  • 有狀態分區,可寫入且為有狀態
  • 無狀態分區,可寫入,但內容在重新開機後會遺失

當您使用 Container-Optimized OS 時,如果您執行自己的服務,且該服務對於容器外部的檔案系統版面配置有特定需求,那您就得多留意分區的問題。

使用 Container-Optimized OS 檔案系統

以下是 Container-Optimized OS 節點映像檔檔案系統中的路徑清單,以及各個路徑的屬性和建議用法:

路徑 屬性 用途
/
  • 唯讀
  • 可執行
根檔案系統會以唯讀模式掛接,以維持自己的完整性。核心會在啟動期間驗證根檔案系統的完整性,並在發現錯誤時拒絕啟動。
/home
/var
  • 可寫入
  • 不可執行
  • 有狀態
這些路徑是用來儲存會在開機磁碟的生命週期內持續存在的資料。這些路徑均掛接自 /mnt/stateful_partition。
/var/lib/google
/var/lib/cloud /var/lib/docker /var/lib/kubelet /var/lib/toolbox
  • 可寫入
  • 可執行
  • 有狀態
這些路徑分別是 Compute Engine 套件 (例如帳戶管理工具服務)、cloud-init、Docker、Kubelet 及工具箱的工作目錄。
/etc
  • 可寫入
  • 不可執行
  • 無狀態
  • tmpfs
/etc 通常會保存您的設定 (例如透過 cloud-init 定義的 systemd 服務)。我們建議您將想要的執行個體狀態擷取到 中,因為執行個體在剛建立及剛重新啟動時會套用 。
/tmp
  • 可寫入
  • 不可執行
  • 無狀態
  • tmpfs
/tmp 通常是做為臨時儲存空間,因此請勿用來存放永久性的資料。
/mnt/disks
  • 可寫入
  • 可執行
  • 無狀態
  • tmpfs
您可以在 /mnt/disks 底下的目錄中掛接 Persistent Disk。

儲存空間驅動程式支援

每個節點映像檔支援的儲存空間外掛程式種類都有所不同。下列詞彙可用於說明節點映像檔對於特定儲存空間驅動程式的支援狀態:

  • 是 - 全面測試/支援:這個儲存空間外掛程式受到完整支援,且已通過系統利用指定的節點映像檔進行的全面測試。
  • 是 - 有限測試:這個儲存空間外掛程式可與指定節點映像檔搭配使用,但並未經過全面測試,且可能會發生意外行為。在 Container-Optimized OS 中,系統最終會為這些外掛程式進行全面測試並提供完整支援。
  • 不支援:這個儲存空間外掛程式未經過測試,也未曾與指定的節點映像檔搭配使用,且 GKE 無法提供任何功能保證。目前沒有任何有關這個儲存空間外掛程式的測試計劃。
  • :由於節點 OS 或 Google Cloud Platform 的固有限制,這個儲存空間外掛程式無法與指定的節點映像檔搭配使用。

以下表格說明每個 GKE 節點映像檔如何支援一些常用的儲存空間外掛程式。

磁碟區類型 是否可在 Container-Optimized OS (cos) 中運作? 是否可在 Ubuntu 中運作?
Google Compute Engine
Persistent Disk (EXT4 或 XFS)
是 - 全面測試/支援
(不支援 XFS)。
是 - 全面測試/支援
NFSv3 是 - 全面測試/支援 是 - 全面測試/支援
NFSv4 是 - 全面測試/支援 是 - 全面測試/支援
CephFS 是 - 有限測試
(根據預設,系統不會安裝驅動程式,因此您必須安裝 ceph 用戶端,我們建議您透過 DaemonSet 來進行)。
Cinder
光纖通道
Flocker 不支援 不支援
iSCSI
RBD

修改節點 VM

當系統重新建立節點之後,您之前對於該節點 VM 的開機磁碟所做的修改便會失效。系統會在手動升級自動升級自動修復自動調整資源配置的期間重新建立節點。此外,系統也會在您啟用需要重新建立節點的功能時重新建立節點,這些功能包括 GKE 沙箱節點內瀏覽權限,以及受防護的節點等等。

如要讓節點在重新建立之後沿用您之前所做的修改,請使用 DaemonSet

我們不建議您管理節點映像檔所提供的重要軟體,例如核心或容器執行階段 (無論是 containerd 還是 docker)。節點映像檔都已通過廣泛的測試,而修改節點映像檔所提供的重要軟體將會讓節點處於未知且不穩定的狀態。

節點映像檔版本資訊

Container-Optimized OS

Google 為 Container-Optimized OS 提供內容詳盡的說明文件:

Ubuntu

Google 會定期更新適用於叢集節點的 Ubuntu 映像檔。請參閱版本資訊以取得這些更新的相關資訊,包括列出預設安裝套件的資訊清單連結。

後續步驟