Bulk Action

简介

顾名思义,Bulk Action 是一个用于进行批量操作的插件。 它使用 kubectl bulk <resourceType> [<parameters>] [action] [<fields>] 形式的命令,对指定资源的字段进行批量操作。

这个插件是使用 Shell 脚本通过大量的 grepsed 完成操作的,对完整资源并无认识,因此操作还是具有一定的危险性的,请慎重使用写操作。

基本用法

get

这个命令用于读取特定对象的指定字段值。

例如获取所有 Deployment 中的特定字段的内容:

$ kubectl bulk-action deploy get image
image fields are getting
image: dustise/flaskapp
image: dustise/flaskapp
- image: dustise/sleep
- image: dustise/sleep

上面的输出内容中,也能很清晰的分辨出 sh 的操作痕迹。推测 labels 这种字段就无法获取了:

$ kubectl bulk-action deploy get labels
labels fields are getting
labels:
labels:
...

list

这个命令是 bulk-action 的缺省操作,用 yaml 的形式列出所有指定类型的资源。

create

根据目前的资源,经过一定的替换之后生成新资源。

例如复制一个 Deployment

$ kubectl bulk-action deploy create name sleep-v2 sleep-v3
creating new resource with changing name: sleep-v2 to name: sleep-v3 for all  deploy
deployment.extensions/sleep-v3 created
Error from server (AlreadyExists): deployments.extensions "flaskapp-v1" already exists
Error from server (AlreadyExists): deployments.extensions "flaskapp-v2" already exists
Error from server (AlreadyExists): deployments.extensions "sleep-v1" already exists

前面说过,这个工具的操作是通过 grep sed 等完成的,因此这里的情况就比较有趣:sleep-v2 被替换生成新的 Deployment,其它 Deployment 不包含这段文本,因此无效。

delete

选择指定资源执行删除操作,例如删除所有的 Service

这个操作相当危险。 这里有个 bug,可以 mv ~/.krew/bin/kubectl-bulk_action ~/.krew/bin/kubectl-bulk 来纠正。

update

Create 类似,不过这里调用的是 kubectl replace

结论

古怪的功能,危险的操作。非常不建议采用。

参考链接

  • 项目地址:https://github.com/emreodabas/kubectl-plugins
上一页
下一页