(轉)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會拋出錯誤。

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

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

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

轉自:https://blog.csdn.net/textdemo123/article/details/104400985


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM