大家好,今天小编来为大家解答annotate是什么意思?用法、例句这个问题,k8s如何修改annotate注释很多人还不知道,现在让我们一起来看看吧!
1、虽然“kubectlannotate”将直接在对象上设置注释,但它不会在部署或Daemonset的更深嵌套的pod模板上设置注释。如果您想在不修改完整清单的情况下在pod模板(.spec.template.metadata.annotations)上快速设置注释,您可以使用“补丁”命令。举个简短的例子:
2、或者有时候你改了deployment又发现Pod的annotate始终没有变化,那么这个文档可能会帮到你
3、首先拉去镜像,创建Deployment在特定的namespace里面
4、dockerpullnginx:latest\n#createdeployment\nkubectlcreatenslex\nnamespace/lexcreated\n```yaml\napiVersion:apps/v1\nkind:Deployment\nmetadata:\nannotations:\ndeployment.kubernetes.io/revision:"1"\nname:nginx-app\nnamespace:lex\nspec:\nreplicas:1\nselector:\nmatchLabels:\napp:nginx-app\ntemplate:\nmetadata:\nlabels:\napp:nginx-app\nspec:\ncontainers:\n-image:nginx:latest\nimagePullPolicy:Always\nname:nginx-app\nports:\n-containerPort:80\nprotocol:TCP\nrestartPolicy:Always\n```\nkubectlapply-fnginx.yaml\ndeployment.apps/nginx-appcreated
现在查看下状态及对应的annotations
5、kubectlgetdeploymentnginx-app-o=jsonpath="{.metadata.annotations}"-nlex|jq
6、?~kubectlgetdeploymentnginx-app-o=jsonpath="{.metadata.annotations}"-nlex|jq\n{\n"deployment.kubernetes.io/revision":"1",\n"kubectl.kubernetes.io/last-applied-configuration":"{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"metadata\\":{\\"annotations\\":{\\"deployment.kubernetes.io/revision\\":\\"1\\"},\\"name\\":\\"nginx-app\\",\\"namespace\\":\\"lex\\"},\\"spec\\":{\\"replicas\\":1,\\"selector\\":{\\"matchLabels\\":{\\"app\\":\\"nginx-app\\"}},\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"app\\":\\"nginx-app\\"}},\\"spec\\":{\\"containers\\":[{\\"image\\":\\"nginx:latest\\",\\"imagePullPolicy\\":\\"Always\\",\\"name\\":\\"nginx-app\\",\\"ports\\":[{\\"containerPort\\":80,\\"protocol\\":\\"TCP\\"}]}],\\"res
Pod模板的注释为空
7、~kubectlgetdeploymentnginx-app-o=jsonpath="{.spec.template.metadata.annotations}"-nlex
现在,让我们在部署中使用“注释”命令。请注意,部署本身的注释被修改了,但pod模板注释没有修改。
8、kubectlannotatedeploymentnginx-app"splunk_id:lextest"-nlex\ndeployment.apps/nginx-appannotated
查看下结果
9、?~kubectlgetdeploymentnginx-app-o=jsonpath="{.metadata.annotations}"-nlex|jq\n{\n"deployment.kubernetes.io/revision":"1",\n"kubectl.kubernetes.io/last-applied-configuration":"{\\"apiVersion\\":\\"apps/v1\\",\\"kind\\":\\"Deployment\\",\\"metadata\\":{\\"annotations\\":{\\"deployment.kubernetes.io/revision\\":\\"1\\"},\\"name\\":\\"nginx-app\\",\\"namespace\\":\\"lex\\"},\\"spec\\":{\\"replicas\\":1,\\"selector\\":{\\"matchLabels\\":{\\"app\\":\\"nginx-app\\"}},\\"template\\":{\\"metadata\\":{\\"labels\\":{\\"app\\":\\"nginx-app\\"}},\\"spec\\":{\\"containers\\":[{\\"image\\":\\"nginx:latest\\",\\"imagePullPolicy\\":\\"Always\\",\\"name\\":\\"nginx-app\\",\\"ports\\":[{\\"containerPort\\":80,\\"protocol\\":\\"TCP\\"}]}],\\"restartPolicy\\":\\"Always\\"}}}}\\n",\n"splunk_id":"lextest"\n}
但pod模板的注释仍然为空
10、~kubectlgetdeploymentnginx-app-o=jsonpath="{.spec.template.metadata.annotations}"-nlex
要修改更深的pod模板注释,请使用“补丁”
11、这将在pod模板上设置深度注释,根本上是应用字段的问题
12、kubectlpatchdeploymentnginx-app-p'{"spec":{"template":{"metadata":{"annotations":{"sidecar.istio.io/inject":"false"}}}}}'-nlex
现在pod模板成功显示注释!
13、?~kubectlgetdeploymentnginx-app-o=jsonpath="{.spec.template.metadata.annotations}"-nlex|jq\n{\n"sidecar.istio.io/inject":"false"\n}\n也可以直接查看这个Pod的yaml\n?~kubectlgetpodnginx-app-c9cffdc55-dmvlg-nlex-oyaml|more\napiVersion:v1\nkind:Pod\nmetadata:\nannotations:\nsidecar.istio.io/inject:"false"
所以结论就是可以通过
14、Path方式来给deployment对应的spec.template应用annotation
15、如果您想删除pod模板注释,则不能像以前那样使用补丁,因为它使用的合并策略只能附加。但是,如果您使用jsonpatch规范,那么您可以指定“删除”操作。
16、?~kubectlpatchdeploymentnginx-app--type=json-p='[{"op":"remove","path":"/spec/template/metadata/annotations/sidecar.istio.io~1inject"}]'-nlex\ndeployment.apps/nginx-apppatched
在此查看下Pod模板注释现在又为空了
17、?~kubectlgetdeploymentnginx-app-o=jsonpath="{.spec.template.metadata.annotations}"-nlex|jq
要删除部署,请执行以下操作:我这个比较暴力直接删除namespace
18、?~kubectldeletenslex\nnamespace"lex"deleted
#Other
19、如果你调整了对应的deployment的字段,还是不能生效
20、kubectlscaledeploymentnginx-app--replicas=1-nlex
21、https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/replicaset/
好了,关于annotate是什么意思?用法、例句和k8s如何修改annotate注释的问题到这里结束啦,希望可以解决您的问题哈!