kubernetes: kubectl create與kubectl apply的區別

背景:
創建一個k8s資源的時候可以使用 kubectl create 也可以使用 kubectl apply,到底有什麼區別呢?
分析:
1.官方解釋
在這裏插入圖片描述
kubectl create和kubectl apply命令之間存在細微差別。

kubectl create命令可創建新資源。 因此,如果再次運行該命令,則會拋出錯誤,因爲資源名稱在名稱空間中應該是唯一的。

kubectl get pods
No resources found.

kubectl create -f pod.xml
pod/myapp-pod created

kubectl create -f pod.xml
Error from server (AlreadyExists): error when creating “pod.xml”: pods “myapp-pod” already exists
2) kubectl apply命令將配置應用於資源。 如果資源不在那裏,那麼它將被創建。 kubectl apply命令可以第二次運行,因爲它只是應用如下所示的配置。 在這種情況下,配置沒有改變。 所以,pod沒有改變。

kubectl delete pod/myapp-pod
pod “myapp-pod” deleted

kubectl apply -f pod.xml
pod/myapp-pod created

kubectl apply -f pod.xml
pod/myapp-pod unchanged
在kubectl create ,我們指定一個特定的動作,在這種情況下create ,因此它是必要的 。 在kubectl apply命令中,我們指定系統的目標狀態,並且不指定特定操作,因此聲明性 。 我們讓系統決定採取什麼行動。 如果資源不在那裏,它將創建它,如果資源在那裏,那麼它將配置應用於現有資源。

從執行的角度來看,如上所示,在kubectl create和kubectl apply之間第一次創建資源時沒有區別。 但是,第二次kubectl create會拋出錯誤。

我花了一些時間來解決它,但它現在有意義。

===============>>#2 票數:4
簡單來說,如果在單個文件上運行操作以創建資源,則create和apply基本相同。 但是, apply允許您在目錄下的多個文件上同時創建和修補。

還有一個apply於從目錄中刪除資源但在撰寫本文時它處於alpha狀態:

kubectl apply -f --prune -l your=label)
參考:
https://stackoverflow.com/questions/47369351/kubectl-apply-vs-kubectl-create

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章