2.4.5 修改及删除对象

成功创建与Kubernetes 之上的对象也称为活动对象(live object),其配置信息(live object configuration)由API Server保存于集群状态存储系统etcd中,“kubectl get TYPE NAME -o yaml” 命令可以获取到相关的完整信息,而运行“kubectl edit” 命令可调用默认编辑器对活动对象的可配置属性进行编辑。例如,修改此前创建的 Service 对象 myapp 的类型为 ClusterIP,使用“kubectl edit service myapp” 命令打开编辑器界面后修改 type 属性的值为 ClusterIP,并删除 NodePort 属性,然后保存即可。对活动对象的修改将实时生效,但资源对象的有些属性并不支持运行时修改,此种情况下,编辑器将不允许保存退出。

有些命令是 kubectl edit 命令某一部分功能的二次封装,例如,kubectl scale 命令不过是专用于修改资源对象的 replicas 属性值而已,它也同样直接作用于活动对象。

不再有价值的活动对象可使用“kubectl delete”命令予以删除,需要删除 Service 对象 myapp 时,使用如下命令即可完成:

**[terminal]
**[delimiter $ ]**[command kubectl delete service myapp]
service "myapp" deleted

有时候需要清空某一类型下的所有对象,只需要将上面命令对象的名称换成 “--all” 选项便能实现。例如,删除默认名称空间中所有的 Deployment 控制器的命令如下:

**[terminal]
**[delimiter $ ]**[command kubectl delete deployment --all]
deployment.extensions "myapp" deleted
deployment.extensions "nginx-deployment" deleted

需要注意的是,受控于控制器的Pod对象再删除后会被重建,删除此类对象需要直接删除控制器对象。不过,删除控制器时若不想删除其Pod对象,可在删除命令上使用“--cascade=false”选项。

虽然直接命令式管理相关功能强大且适合用于操纵kubernetes资源对象,但其明显的缺点是缺乏操作行为以及待运行对象的可信源。另外,直接命令式管理资源对象存在较大的局限性,它们在设置资源对象属性方面提供的配置能力相当有限,而且还有不少资源并不支持命令操作创建,例如,用户无法创建带有多个容器的Pod对象,也无法为Pod对象创建存储卷。因此,管理资源对象更有效的方式是基于保存有对象配置信息的配置清单来进行。

results matching ""

    No results matching ""