Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 通过“kubectl”创建对象时应用注释`_Kubernetes_Google Kubernetes Engine_Kubectl - Fatal编程技术网

Kubernetes 通过“kubectl”创建对象时应用注释`

Kubernetes 通过“kubectl”创建对象时应用注释`,kubernetes,google-kubernetes-engine,kubectl,Kubernetes,Google Kubernetes Engine,Kubectl,我的问题主要在标题中。我想知道在Kubernetes中通过kubectl创建对象时是否有方法应用注释 我会给你更多的背景知识。我正在GKE上创建一个内部负载平衡器。要使负载平衡器成为内部的,您需要在GKE上向服务添加以下注释:cloud.google.com/load-balancer-type:“internal” 但是,在公开部署时,我可以选择仅将其设置为LoadBalancer类型: $kubectl expose deploy nginx--端口80--类型LoadBalancer 在创

我的问题主要在标题中。我想知道在Kubernetes中通过kubectl创建对象时是否有方法应用注释

我会给你更多的背景知识。我正在GKE上创建一个内部负载平衡器。要使负载平衡器成为内部的,您需要在GKE上向服务添加以下注释:
cloud.google.com/load-balancer-type:“internal”

但是,在公开部署时,我可以选择仅将其设置为LoadBalancer类型:

$kubectl expose deploy nginx--端口80--类型LoadBalancer

在创建服务时,是否有一种方法可以动态应用注释

编辑

我尝试了以下命令,看起来很简洁:

kubectl expose deploy nginx --port 80 --type LoadBalancer --overrides '{ "metadata": { "annotations": { "cloud.google.com/load-balancer-type": "Internal" } } }'
。。。但我得到了以下错误,我不知道如何解释:

error: unable to convert the internal object type *core.Service to Unstructured without providing a preferred version to convert to.

这就是is的来源:

“Kubectl expose”以及其他Kubectl子命令没有包含注释的必要选项。Kubectl有通用子命令“annotate”,但并不总是非常适用。因此,在大多数情况下,YAML清单是唯一可行的方法。

我不确定这是否是您要寻找的,但它是有效的,而且是一条线性的

kubectl expose deploy nginx --port 80 --type LoadBalancer -oyaml --dry-run > file; sed -i 's/creationTimestamp: null/annotations:\n    cloud.google.comload-balancer-type: "Internal"/g' file
我知道这不是最好最干净的方式

编辑:

在命令中添加更多细节

它公开了一个部署
nginx
,其端口和类型与您指定的相同
-oyaml
以yaml格式输出,
--dry run
仅打印而不执行


然后
sed
creationTimestamp:null
替换为
annotations
,并在新的一行中添加
cloud.google.com/load-balancer-type:“Internal”

这并不是我想要的,但它可以完美地工作。谢谢