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

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


咨詢
建站咨詢
