Kubernetes 物件管理

kubectl 命令列工具支援多種不同的方式來建立和管理 Kubernetes 物件。本文件概述了不同的方法。有關透過 Kubectl 管理物件的詳細資訊,請閱讀 Kubectl 書籍

管理技術

管理技術操作推薦環境支援的作者學習曲線
命令式命令活躍物件開發專案1+最低
命令式物件配置單個檔案生產專案1中等
宣告式物件配置檔案目錄生產專案1+最高

命令式命令

使用命令式命令時,使用者直接在叢集中的活躍物件上操作。使用者將操作作為引數或標誌提供給 kubectl 命令。

這是開始或在叢集中執行一次性任務的推薦方式。由於此技術直接在活躍物件上操作,因此它不提供以前配置的歷史記錄。

示例

透過建立 Deployment 物件執行 Nginx 容器例項

kubectl create deployment nginx --image nginx

權衡

與物件配置相比的優勢

  • 命令以單個動作詞表示。
  • 命令只需一步即可對叢集進行更改。

與物件配置相比的缺點

  • 命令不與更改審查流程整合。
  • 命令不提供與更改相關的審計跟蹤。
  • 命令除了活躍狀態之外不提供任何記錄來源。
  • 命令不提供建立新物件的模板。

命令式物件配置

在命令式物件配置中,kubectl 命令指定操作(建立、替換等)、可選標誌和至少一個檔名。指定的檔案必須包含 YAML 或 JSON 格式的物件的完整定義。

有關物件定義的更多詳細資訊,請參閱 API 參考

示例

建立配置檔案中定義的物件

kubectl create -f nginx.yaml

刪除兩個配置檔案中定義的物件

kubectl delete -f nginx.yaml -f redis.yaml

透過覆蓋活躍配置來更新配置檔案中定義的物件

kubectl replace -f nginx.yaml

權衡

與命令式命令相比的優勢

  • 物件配置可以儲存在 Git 等原始碼控制系統中。
  • 物件配置可以與諸如在推送前審查更改和審計跟蹤之類的流程整合。
  • 物件配置提供了一個建立新物件的模板。

與命令式命令相比的缺點

  • 物件配置需要對物件模式有基本瞭解。
  • 物件配置需要額外編寫 YAML 檔案的步驟。

與宣告式物件配置相比的優勢

  • 命令式物件配置行為更簡單,更容易理解。
  • 截至 Kubernetes 1.5 版本,命令式物件配置更成熟。

與宣告式物件配置相比的缺點

  • 命令式物件配置最適合檔案,而不是目錄。
  • 對活躍物件的更新必須反映在配置檔案中,否則它們將在下次替換時丟失。

宣告式物件配置

使用宣告式物件配置時,使用者在本地儲存的物件配置檔案上操作,但使用者不定義對檔案執行的操作。建立、更新和刪除操作由 kubectl 自動按物件檢測。這使得可以在目錄上工作,其中不同的物件可能需要不同的操作。

示例

處理 configs 目錄中的所有物件配置檔案,並建立或修補活躍物件。你可以先 diff 檢視將要進行的更改,然後應用

kubectl diff -f configs/
kubectl apply -f configs/

遞迴處理目錄

kubectl diff -R -f configs/
kubectl apply -R -f configs/

權衡

與命令式物件配置相比的優勢

  • 即使未合併回配置檔案,直接對活躍物件所做的更改也會保留。
  • 宣告式物件配置更好地支援按物件操作目錄和自動檢測操作型別(建立、修補、刪除)。

與命令式物件配置相比的缺點

  • 宣告式物件配置在意外情況下更難除錯和理解結果。
  • 使用差異進行的區域性更新會建立複雜的合併和修補操作。

下一步

最後修改於 2022 年 1 月 8 日下午 6:09 PST:重新組織 Kubernetes 物件操作部分 (634c17f61c)