使用标签创建命名空间的kubectl命令

5
有没有一种方法可以使用kubectl创建只有一个标签的命名空间?
例如:
kubectl create ns <newnamespace> label=appid:foo12

与使用 kubectl apply -f <somefile> 相反

4个回答

7
这可能会对您有所帮助:
kubectl create namespace namespace_name
kubectl label namespaces namespace_name labelname=value --overwrite=true

事实上,您可以根据您的用例创建多个标签。 kubectl label namespaces namespace_name label1=value1 label2=value2 --overwrite=true - jack_t

4
感谢您的回复,虽然这是一个旧帖子,但我想分享一行代码的解决方案。
kubectl create namespace foo --dry-run=client -o json|jq '.metadata += {"labels":{"foo":"bar","bar":"foo"}}' | kubectl apply -f -

使用jq中的+=运算符(我今天在尝试解决同样的问题时才意识到)将一些任意的JSON标签添加到从create命令的干运行输出中,并通过管道传递给kubectl apply。

0
立即完成这个任务是不可能的,请查看kubectl help create ns手册。 但是有解决方案: 您可以使用kubectl创建命名空间,并立即使用kubectl label namespaces <newnamespace> label=appid:foo12进行标记,或者您可以使用kubectl生成yaml文件,在其中添加标签:kubectl create namespace demo --dry-run=client -o yaml 如果您真的非常渴望将所有内容都放在一个命令中,您可以内联修改JSON,例如。
kubectl create namespace demo --dry-run=client -o yaml | \
 sed  '/^metadata:/a\ \ labels: {"demo":"true"}' | kubectl apply -f - 

0

目前还没有直接在创建命名空间时设置标签的方法。首先创建一个命名空间,然后再为其添加标签。 在k8s版本“v1.20.15”之前,可以按以下方式添加标签:

**Create namespace and add label:**

    kubectl create namespace test
    
    kubectl label namespace test any_name=any_value 
   
    kubectl label namespace test food=delicous

更多信息:

kubectl label namespaces -h

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接