3.5.2 声明式对象配置管理方式

陈述式对象配置管理机制中,同时指定的多个资源必须进行同一种操作,而且其replace命令是通过完全替换现有活动对象来进行资源的更新操作,对于生产环境来说,这并非理想的选择。声明式对象配置操作在管理资源对象时将配置信息保存于目标对象的注解中,并通过比较活动对象的当前配置、前一次管理操作时保存于注解中的配置,以及当前命令提供的配置生成更新补丁从而完成活动对象的补丁式更新操作。此类管理操作的常用命令有 apply 和 patch 等。

例如,创建 3.5.1 节中定义的主容器使用“kubernetes/myapp:v1”镜像的Pod资源对象,还可以使用如下命令进行:

**[terminal]
**[delimiter $ ]**[command kubectl apply -f pod-example.yaml]
pod/pod-example created

而更新对象的操作,可在直接修改原有资源清单文件后再次对其执行 apply 命令来完成,例如,修改Pod资源配置清单中的镜像文件为 “ikubernetes/myapp:v2”后再次执行如上的 apply 命令:

**[terminal]
**[delimiter $ ]**[command kubectl apply -f pod-example.yaml]
pod/pod-example configured

命令结果显示资源重新配置完成并且已经生效。事实上,此类操作也完全能够使用 patch 命令直接进行补丁操作。而资源对象的删除操作依然可以使用 apply 命令,但要同时使用 --prune 选项,命令的格式为kubectl apply -f <directory/> --prune -l <labels>。需要注意的是,此命令异常凶险,因为它将基于标签选择器过滤出所有符合条件的对象,并检查由 -f 指定的目录中是否存在某配置文件已经定义了相应的资源对象,那些不存在相应定义的资源对象将被删除。因此,删除资源对象的操作依然建议使用陈述式对象配置方式的命令“kubectl delete”进行,这样的命令格式操作目标明确且不易出现偏差。

results matching ""

    No results matching ""