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

管理技巧
應(yīng)該只使用一種技術(shù)來管理 Kubernetes 對象?;旌虾推ヅ浼夹g(shù)作用在同一對象上將導(dǎo)致未定義行為。
| 管理技術(shù) | 作用于 | 建議的環(huán)境 | 支持的寫者 | 學(xué)習(xí)難度 |
|---|---|---|---|---|
| 指令式命令 | 活躍對象 | 開發(fā)項目 | 1+ | 最低 |
| 指令式對象配置 | 單個文件 | 生產(chǎn)項目 | 1 | 中等 |
| 聲明式對象配置 | 文件目錄 | 生產(chǎn)項目 | 1+ | 最高 |
指令式命令
使用指令式命令時,用戶可以在集群中的活動對象上進行操作。用戶將操作傳給 ?kubectl ?命令作為參數(shù)或標(biāo)志。
這是開始或者在集群中運行一次性任務(wù)的推薦方法。因為這個技術(shù)直接在活躍對象 上操作,所以它不提供以前配置的歷史記錄。
例子
通過創(chuàng)建 Deployment 對象來運行 nginx 容器的實例:
kubectl create deployment nginx --image nginx
權(quán)衡
與對象配置相比的優(yōu)點:
- 命令簡單,易學(xué)且易于記憶。
- 命令僅需一步即可對集群進行更改。
與對象配置相比的缺點:
- 命令不與變更審查流程集成。
- 命令不提供與更改關(guān)聯(lián)的審核跟蹤。
- 除了實時內(nèi)容外,命令不提供記錄源。
- 命令不提供用于創(chuàng)建新對象的模板。
指令式對象配置
在指令式對象配置中,kubectl 命令指定操作(創(chuàng)建,替換等),可選標(biāo)志和 至少一個文件名。指定的文件必須包含 YAML 或 JSON 格式的對象的完整定義。
有關(guān)對象定義的詳細信息,請查看 API 參考。
Warning:
?
replace?指令式命令將現(xiàn)有規(guī)范替換為新提供的規(guī)范,并放棄對配置文件中 缺少的對象的所有更改。此方法不應(yīng)與對象規(guī)約被獨立于配置文件進行更新的 資源類型一起使用。比如類型為 ?LoadBalancer?的服務(wù),它的 ?externalIPs?字段就是獨立于集群配置進行更新。
例子
創(chuàng)建配置文件中定義的對象:
kubectl create -f nginx.yaml
刪除兩個配置文件中定義的對象:
kubectl delete -f nginx.yaml -f redis.yaml
通過覆蓋活動配置來更新配置文件中定義的對象:
kubectl replace -f nginx.yaml
權(quán)衡
與指令式命令相比的優(yōu)點:
- 對象配置可以存儲在源控制系統(tǒng)中,比如 Git。
- 對象配置可以與流程集成,例如在推送和審計之前檢查更新。
- 對象配置提供了用于創(chuàng)建新對象的模板。
與指令式命令相比的缺點:
- 對象配置需要對對象架構(gòu)有基本的了解。
- 對象配置需要額外的步驟來編寫 YAML 文件。
與聲明式對象配置相比的優(yōu)點:
- 指令式對象配置行為更加簡單易懂。
- 從 Kubernetes 1.5 版本開始,指令對象配置更加成熟。
與聲明式對象配置相比的缺點:
- 指令式對象配置更適合文件,而非目錄。
- 對活動對象的更新必須反映在配置文件中,否則會在下一次替換時丟失。
聲明式對象配置
使用聲明式對象配置時,用戶對本地存儲的對象配置文件進行操作,但是用戶 未定義要對該文件執(zhí)行的操作。 ?kubectl ?會自動檢測每個文件的創(chuàng)建、更新和刪除操作。 這使得配置可以在目錄上工作,根據(jù)目錄中配置文件對不同的對象執(zhí)行不同的操作。
聲明式對象配置保留其他編寫者所做的修改,即使這些更改并未合并到對象配置文件中。 可以通過使用 ?
patch?API 操作僅寫入觀察到的差異,而不是使用 ?replace?API 操作來替換整個對象配置來實現(xiàn)。
例子
處理 ?configs ?目錄中的所有對象配置文件,創(chuàng)建并更新活躍對象。 可以首先使用 ?diff ?子命令查看將要進行的更改,然后在進行應(yīng)用:
kubectl diff -f configs/
kubectl apply -f configs/
遞歸處理目錄:
kubectl diff -R -f configs/
kubectl apply -R -f configs/
權(quán)衡
與指令式對象配置相比的優(yōu)點:
- 對活動對象所做的更改即使未合并到配置文件中,也會被保留下來。
- 聲明性對象配置更好地支持對目錄進行操作并自動檢測每個文件的操作類型(創(chuàng)建,修補,刪除)。
與指令式對象配置相比的缺點:
- 聲明式對象配置難于調(diào)試并且出現(xiàn)異常時結(jié)果難以理解。
- 使用 diff 產(chǎn)生的部分更新會創(chuàng)建復(fù)雜的合并和補丁操作。
網(wǎng)站欄目:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes對象管理
鏈接分享:http://www.dlmjj.cn/article/dhijeop.html


咨詢
建站咨詢
