文章转发自 https://wghdr.top,更多文章请跳转。

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐