k8s

kubectl create和kubectl apply的区别

kubectl create和kubectl apply都可以生成k8s对象。那么两者有什么区别呢。根据官方文档可以得出如下区别:
file

kubectl create:

  • 是祈使式命令,明确告诉k8s要创建的资源或者对象
  • 首先删除集群中现有的资源,然后重新根据yaml文件生成新的资源对象
  • yaml文件必须是完整的配置
  • yaml文件中的所有字段都会被create
  • 在没有改动yaml文件时,使用同一个yaml文件执行命令kubectl replace,将不会成功(fail掉),因为缺少相关改动信息。

kubectl apply

  • 是声明式命令,apply不告诉k8s具体要干什么,而是kubectl根据yaml文件自动探测要做哪些操作,如果不存在则create,如果存在则对比差异,进行更新。
  • 根据yaml文件中包含的字段,直接升级集群中的现有资源对象
  • yaml文件可以不完整,只写需要修改的字段
  • 只有要改动的字段才会被apply
  • 在只改动了yaml文件中的某些声明时,而不是全部改动,你可以使用kubectl apply

create创建已存在资源会报错:Error from server (AlreadyExists)。
file
apply未修改的资源时会提示unchanged。
file

分类: k8s
0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x