1. 程式人生 > 實用技巧 >kubectl create / replace 與kubectl apply 的區別

kubectl create / replace 與kubectl apply 的區別

kubectl create / replace

以ngnix 的 nginx.yaml為例:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

使用 kubectl create 命令在 Kubernetes 裡建立這個 Deployment 物件:

kubectl create -f nginx.yaml

當我們想要修改映象的時候,除了使用kubectl edit /kubectl set image ,我們還可以使用修改nginx.yaml檔案。然後使用 kubectl replace 來觸發更新。

kubectl replace -f nginx.yaml

對於上面這種先 kubectl create,再 replace 的操作,我們稱為命令式配置檔案操作。

kubectl apply

我們還可以通過 kubectl apply 建立deployment

kubectl apply -f nginx.yaml

如果修改映象,我們只需要修改nginx.yaml檔案,然後執行

kubectl apply -f nginx.yaml

kubectl create / replace 與kubectl apply 的區別

  • kubectl replace 的執行過程,是使用新的 YAML 檔案中的 API 物件,替換原有的 API 物件
  • kubectl apply,則是執行了一個對原有 API 物件的 PATCH 操作。