k8s之kubectl create和kubectl apply的区别
本文一起看下kubectl create和kubectl apply的区别。
·
写在前面
本文一起看下kubectl create和kubectl apply的区别。
1:声明式和命令式
从声明式和命令式来划分的话,kubectl create是属于命令式,即就是要create 某API对象,但kubectl apply是声明式,只是声明了一个yaml文件,只要达到期望的状态就行,并不指定具体做什么操作。
2:多次执行
如果是多次执行的话,kubectl create是不行的,此时会报资源名称已存在错误,如下:
dongyunqi@mongodaddy:~/k8s$ cat create.yml # 第一次创建成功
apiVersion: v1
kind: ConfigMap
metadata:
name: maria-cm
data:
DATABASE: 'db'
USER: 'wp'
PASSWORD: '123'
ROOT_PASSWORD: '123'
dongyunqi@mongodaddy:~/k8s$ kubectl create -f create.yml
configmap/maria-cm created
dongyunqi@mongodaddy:~/k8s$ kubectl create -f create.yml # 第二次再创建就提示存在了
Error from server (AlreadyExists): error when creating "create.yml": configmaps "maria-cm" already exists
但是kubectl apply是可以的,如下:
dongyunqi@mongodaddy:~/k8s$ kubectl delete configmap maria-cm # 先将前面创建的删除,避免影响测试
configmap "maria-cm" deleted
dongyunqi@mongodaddy:~/k8s$ kubectl apply -f create.yml # 第一次创建成功
configmap/maria-cm created
dongyunqi@mongodaddy:~/k8s$ kubectl apply -f create.yml # 第二次提示没有变化
configmap/maria-cm unchanged
dongyunqi@mongodaddy:~/k8s$ cat create.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: maria-cm
data:
DATABASE: 'db'
USER: 'wp'
PASSWORD: '1234' # 从123修改为1234,试文件发生变化
ROOT_PASSWORD: '123'
dongyunqi@mongodaddy:~/k8s$ kubectl apply -f create.yml # 修改yaml配置后提示重新配置,即update了
configmap/maria-cm configured
写在后面
参考文章列表:
更多推荐
已为社区贡献2条内容
所有评论(0)