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 操作。
posted @ 2020-08-26 16:54  sixinshuier  阅读(7200)  评论(0编辑  收藏  举报