Kubernetes(k8s) kubectl annotate常用命令

kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件。 可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig 参数来指定其它 kubeconfig 文件。本文主要介绍Kubernetes(K8s)中kubectl annotate常用命令。

1、kubectl annotate简介

kubectl annotate更新一个或多个资源上的注释。所有Kubernetes对象都支持用对象作为注释存储附加数据的能力。注释是键/值对,可以比标签大,包括任意字符串值,如结构化JSON。工具和系统扩展可以使用注释来存储它们自己的数据。

除非设置了--overwrite,否则试图设置已经存在的注释将失败。如果指定了--resource-version,且与服务器上的当前资源版本不匹配,则命令将失败。使用"kubectl api-resources"获取支持资源的完整列表。

2、kubectl annotate语法

kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

3、kubectl annotate命令

1)更新pod 'cjavapy'的注释'description'和值'my frontend' 

kubectl annotate pods cjavapy description='my frontend'

注意:如果相同的注释设置多次,只会应用最后一个值。

2)在"pod.json"中根据类型和名称更新一个pod

kubectl annotate -f pod.json description='my frontend'

3)用注释'description'和值'my frontend running nginx'更新pod 'cjavapy',覆盖任何现有值

kubectl annotate --overwrite pods cjavapy description='my frontend running nginx'

4)更新命名空间中的所有pod

kubectl annotate pods --all description='my frontend running nginx'

5)只有当资源从版本1开始没有变化时,才更新pod 'cjavapy'

kubectl annotate pods cjavapy description='my frontend running nginx' --resource-version=1

6)通过删除名为“description”的注释(如果它存在的话)来更新pod 'cjavapy'

kubectl annotate pods foo description-

4、选项说明

名称

简称

默认

用法

all

false

选择指定资源类型名称空间中的所有资源,

包括未初始化的资源。

all-namespaces

A

false

如果为true,

在所有名称空间中检查指定的操作。

allow-missing-template-keys

true

如果为true,当模板中缺少字段或映射键时,

忽略模板中的任何错误。

只适用于golang和jsonpath输出格式。

dry-run

none

必须为“none”、“server”或“client”。

如果客户端策略,则只打印将要发送的对象,

而不发送它。如果是服务器策略,

则提交服务器端请求而不持久化资源。

field-manager

kubectl-annotate

用于跟踪字段所有权的管理人员的名称。

field-selector

选择器(标签查询)进行筛选,

支持' = ',' == '和' != '(

例如, --field-selecto key1=value1,key2=value2)。

服务器只支持每种类型的有限数量的字段查询。

filename

f

[]

标识要更新注释的资源的文件的文件名、目录或URL。

kustomize

k

处理定制化目录。此标志不能与-f或-R一起使用。

list

false

如果为true,则显示给定资源的注释。

local

false

如果为true,注释将不会联系api-server,

而是在本地运行。

output

o

输出格式, 以下之一: json|yaml|name|

go-template|go-template-file|template|

templatefile|jsonpath|jsonpath-as-json|

jsonpath-file.

overwrite

false

如果为true,则允许覆盖注释,

否则拒绝覆盖现有注释的注释更新。

record

false

在资源注释中记录当前kubectl命令。

如果设置为false,则不记录该命令。

如果设置为true,则记录命令。如果未设置,

则默认仅在已有注释值时更新现有注释值。

recursive

R

false

递归处理-f, --filename中使用的目录。

当想要管理组织在同一目录中的相关清单时使用。

resource-version

如果非空,则只有当这是对象的当前资源版本时,

注释更新才会成功。仅在指定单个资源时有效。

selector

l

选择器(标签查询)进行筛选,

不包括未初始化的,

支持' = ',' == '和' != '。

(例如,-l key1 = value1, key2 = value2)。

show-managed-fields

false

如果为true,

则在以JSON或YAML格式打印对象时

保留managedFields。

template

当-o=go-template, -o=go-template-file时

要使用的模板文件的模板字符串或路径。

模板格式为golang templates [

http://golang.org/pkg/text/template/#pkg-overview

].

推荐阅读
cjavapy编程之路首页