K8s 創(chuàng)建資源的兩種方式
在 K8s 中,創(chuàng)建資源有兩種方式:
-
直接使用? kubectl run
?命令創(chuàng)建 -
使用? kubectl create/apply
?命令從 YAML 文件創(chuàng)建
在本文中,我將通過示例解釋這兩種方法,以及它們分別應(yīng)該在何時(shí)使用。
kubectl run
kubectl run
?命令在 pod 中創(chuàng)建并運(yùn)行特定的鏡像。例如:

如果您對(duì)這個(gè)新 pod 執(zhí)行?kubectl describe
?命令,您將看到:

請(qǐng)注意,Labels
?是?run=nginx
。
您還可以在?run
?命令中指定環(huán)境變量,例如:

如果您現(xiàn)在執(zhí)行?kubectl describe nginx
,就可以看到我們剛剛提供的新環(huán)境變量:

通常,kubectl run
?命令用于一些簡(jiǎn)單、直觀和快速的任務(wù),它適用于 ad-hoc(點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)模式)的測(cè)試或?qū)嶒?yàn)。
kubectl kubectl create/apply
kubectl create/apply
?命令基于給定的配置文件。該配置文件具有以下特點(diǎn):
-
配置文件描述了應(yīng)用程序最終將達(dá)到的 Whatstate。 -
配置文件提供創(chuàng)建資源的模板,可以重復(fù)部署。 -
部署可以像代碼一樣進(jìn)行管理。 -
適用于正式的、跨環(huán)境的、大規(guī)模的部署。 -
需要熟悉配置文件的語法才能使用此方法。
讓我們?cè)倏匆粋€(gè)例子。我們將創(chuàng)建相同的 nginx pod,這一次,讓我們通過 YAML 文件來完成:

不用在意 Deployment 文件語法,我將在另一篇文章中討論 K8s Deployment。
讓我們使用?kubectl create
?命令來創(chuàng)建資源:
您還可以使用?
kubectl apply
?命令:
可以看到,create
?和?apply
?命令都可以用來創(chuàng)建資源,但是二者有什么區(qū)別呢?
kubectl create 與 kubectl apply
讓我們談?wù)?create
?和?apply
?之間的區(qū)別。
create
此命令將告訴 K8s API 服務(wù)器,您要?jiǎng)?chuàng)建、刪除或替換一個(gè)或多個(gè)資源。以更簡(jiǎn)化的方式,這意味著您可以從頭開始創(chuàng)建一個(gè)全新的對(duì)象。或者,它通過定義需求對(duì)任何現(xiàn)有對(duì)象進(jìn)行一些更改。
apply
此命令意味著通過在給定的 YAML 文件中聲明您確切需要的內(nèi)容來更改已經(jīng)存在的對(duì)象。
為了演示,讓我們使用 nginx Deployment 文件。首先,讓我們創(chuàng)建資源:

現(xiàn)在,假設(shè)我們要向 pod 添加一個(gè) label,將 label 更新為:

如果再次運(yùn)行?create
?命令:

即使 YAML 文件略有不同,您也會(huì)收到?“nginx” 已存在的錯(cuò)誤。
那如果你運(yùn)行?kubectl apply
?呢?讓我們?cè)囈辉嚕?/p>

現(xiàn)在讓我們描述一下資源:

您可以看到應(yīng)用了新的?labels
?是?env=prod
。
現(xiàn)在我們了解了?kubectl create
?和?kubectl apply
?之間的區(qū)別,您可能想知道應(yīng)該使用哪一個(gè)?
在?kubectl create
?命令中,我們指定了一個(gè)特定行為,也就是?create
,因此它是一種更具命令式的方法。在?kubectl apply
?命令中,我們指定系統(tǒng)的目標(biāo)狀態(tài),而不指定一個(gè)特定的行為,因此它是更具聲明性的方法。我們讓系統(tǒng)決定采取什么行動(dòng)。如果資源不存在,它將創(chuàng)建它,如果資源存在,則它將配置應(yīng)用于現(xiàn)有資源。
簡(jiǎn)單來說,如果對(duì)單個(gè)文件運(yùn)行一個(gè)操作來創(chuàng)建資源,create
?和?apply
?基本是相同的。但是,apply
?允許您在一個(gè)目錄中的多個(gè)文件上同時(shí)創(chuàng)建和修補(bǔ)。
我希望你喜歡這個(gè)小知識(shí)分享,我會(huì)在下一篇文章中見到你!
鏈接:https://medium.com/geekculture/k8s-two-ways-to-create-resources-26380aedddd7
(版權(quán)歸原作者所有,侵刪)