Kubernetes 對象管理

2022-05-30 15:27 更新

對象管理

?kubectl ?命令行工具支持多種不同的方式來創(chuàng)建和管理 Kubernetes 對象。 本文檔概述了不同的方法。 閱讀 Kubectl book 來了解 kubectl 管理對象的詳細信息。

管理技巧

應該只使用一種技術來管理 Kubernetes 對象?;旌虾推ヅ浼夹g作用在同一對象上將導致未定義行為。

管理技術 作用于 建議的環(huán)境 支持的寫者 學習難度
指令式命令 活躍對象 開發(fā)項目 1+ 最低
指令式對象配置 單個文件 生產項目 1 中等
聲明式對象配置 文件目錄 生產項目 1+ 最高

指令式命令

使用指令式命令時,用戶可以在集群中的活動對象上進行操作。用戶將操作傳給 ?kubectl ?命令作為參數或標志。

這是開始或者在集群中運行一次性任務的推薦方法。因為這個技術直接在活躍對象 上操作,所以它不提供以前配置的歷史記錄。

例子

通過創(chuàng)建 Deployment 對象來運行 nginx 容器的實例:

kubectl create deployment nginx --image nginx

權衡 

與對象配置相比的優(yōu)點:

  • 命令簡單,易學且易于記憶。
  • 命令僅需一步即可對集群進行更改。

與對象配置相比的缺點:

  • 命令不與變更審查流程集成。
  • 命令不提供與更改關聯(lián)的審核跟蹤。
  • 除了實時內容外,命令不提供記錄源。
  • 命令不提供用于創(chuàng)建新對象的模板。

指令式對象配置

在指令式對象配置中,kubectl 命令指定操作(創(chuàng)建,替換等),可選標志和 至少一個文件名。指定的文件必須包含 YAML 或 JSON 格式的對象的完整定義。

有關對象定義的詳細信息,請查看 API 參考。

Warning:

?replace ?指令式命令將現有規(guī)范替換為新提供的規(guī)范,并放棄對配置文件中 缺少的對象的所有更改。此方法不應與對象規(guī)約被獨立于配置文件進行更新的 資源類型一起使用。比如類型為 ?LoadBalancer ?的服務,它的 ?externalIPs ?字段就是獨立于集群配置進行更新。

例子

創(chuàng)建配置文件中定義的對象:

kubectl create -f nginx.yaml

刪除兩個配置文件中定義的對象:

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

通過覆蓋活動配置來更新配置文件中定義的對象:

kubectl replace -f nginx.yaml

權衡

與指令式命令相比的優(yōu)點:

  • 對象配置可以存儲在源控制系統(tǒng)中,比如 Git。
  • 對象配置可以與流程集成,例如在推送和審計之前檢查更新。
  • 對象配置提供了用于創(chuàng)建新對象的模板。

與指令式命令相比的缺點:

  • 對象配置需要對對象架構有基本的了解。
  • 對象配置需要額外的步驟來編寫 YAML 文件。

與聲明式對象配置相比的優(yōu)點:

  • 指令式對象配置行為更加簡單易懂。
  • 從 Kubernetes 1.5 版本開始,指令對象配置更加成熟。

與聲明式對象配置相比的缺點:

  • 指令式對象配置更適合文件,而非目錄。
  • 對活動對象的更新必須反映在配置文件中,否則會在下一次替換時丟失。

聲明式對象配置 

使用聲明式對象配置時,用戶對本地存儲的對象配置文件進行操作,但是用戶 未定義要對該文件執(zhí)行的操作。 ?kubectl ?會自動檢測每個文件的創(chuàng)建、更新和刪除操作。 這使得配置可以在目錄上工作,根據目錄中配置文件對不同的對象執(zhí)行不同的操作。

聲明式對象配置保留其他編寫者所做的修改,即使這些更改并未合并到對象配置文件中。 可以通過使用 ?patch ?API 操作僅寫入觀察到的差異,而不是使用 ?replace ?API 操作來替換整個對象配置來實現。

例子

處理 ?configs ?目錄中的所有對象配置文件,創(chuàng)建并更新活躍對象。 可以首先使用 ?diff ?子命令查看將要進行的更改,然后在進行應用:

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

遞歸處理目錄:

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

權衡

與指令式對象配置相比的優(yōu)點:

  • 對活動對象所做的更改即使未合并到配置文件中,也會被保留下來。
  • 聲明性對象配置更好地支持對目錄進行操作并自動檢測每個文件的操作類型(創(chuàng)建,修補,刪除)。

與指令式對象配置相比的缺點:

  • 聲明式對象配置難于調試并且出現異常時結果難以理解。
  • 使用 diff 產生的部分更新會創(chuàng)建復雜的合并和補丁操作。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號