【问题标题】:Add some labels to a deployment?为部署添加一些标签?
【发布时间】:2021-01-24 16:09:57
【问题描述】:

我是 K8S 的初学者,我对 kubernetes 的标签有疑问。在 youtube 视频上(In french here),我看到了:

该人使用这些命令创建三个部署并运行命令kubectl get deployment 然后kubectl get deployment --show-labels

kubectl run monnginx --image nginx --labels "env=prod,group=front"
kubectl run monnginx2 --image nginx --labels "env=dev,group=front"
kubectl run monnginx3 --image nginx --labels "env=prod,group=back"
root@kubmaster:# kubectl get deployments
NAME            READY        UP-TO-DATE AVAILABLE      AGE
monnginx         1/1             1          1          46s
monnginx2        1/1             1          1          22s
monnginx3        1/1             1          1          10s
      
root@kubmaster:# kubectl get deployments --show-labels
NAME            READY        UP-TO-DATE AVAILABLE      AGE   LABELS
monnginx         1/1             1          1          46s   env=prod,group=front
monnginx2        1/1             1          1          22s   env=dev,group=front 
monnginx3        1/1             1          1          10s   env=prod,group=back
      

目前,如果我尝试做同样的事情:

root@kubermaster:~ kubectl run mynginx --image nginx --labels "env=prod,group=front"
pod/mynginx created

root@kubermaster:~ kubectl run mynginx2 --image nginx --labels "env=dev,group=front"
pod/mynginx2 created

root@kubermaster:~ kubectl run mynginx3 --image nginx --labels "env=dev,group=back"
pod/mynginx3 created

当我尝试命令 kubectl get deployments --show-labels 时,输出是:

No resources found in default namespace.

但是如果我尝试kubectl get pods --show-labels,输出是:

NAME       READY   STATUS    RESTARTS   AGE     LABELS
mynginx    1/1     Running   0          2m39s   env=prod,group=front
mynginx2   1/1     Running   0          2m32s   env=dev,group=front
mynginx3   1/1     Running   0          2m25s   env=dev,group=back

如果我按照视频中的每个步骤进行操作,则可以在部署上添加一些标签...但是命令 kubectl create deployment 不接受标志 --labels :

Error: unknown flag: --labels

有人解释我为什么会出现这个错误以及如何放置一些标签?

非常感谢!

【问题讨论】:

  • 您正在运行一个 pod 并试图获取 deplpyment ......这是正确的。注意你的命令的输出:pod/mynginx created你创建了一个名为mynginxpod...你可以阅读更多关于here的区别
  • 您可以简单地运行 kubctl run my-app --iamge nginx --replicas 3 --labels tier=frontend kubctl apply 没有 --labels 选项,但您可以使用 kubctl run 允许 --labels

标签: kubernetes label


【解决方案1】:

因为$ kubectl create deployment 不支持--labels 标志。但是您可以使用 $ kubectl label 为您的部署添加标签。

例子:

# Update deployment 'my-deployment' with the label 'unhealthy' and the value 'true'.
$ kubectl label deployment my-deployment unhealthy=true
  
# Update deployment 'my-deployment' with the label 'status' and the value 'unhealthy', overwriting any existing value.
$ kubectl label --overwrite deployment my-deployment status=unhealthy

它也适用于其他 Kubernetes 对象。

格式: kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N

【讨论】:

    【解决方案2】:

    我认为问题有所不同。

    在 Kubernetes 1.17 之前,命令 kubectl run 创建了一个部署。
    从 Kubernetes 1.18 开始,kubectl run 命令会创建一个 pod。

    Release Notes 的 Kubernetes 1.18

    kubectl run has removed the previously deprecated generators, along with flags 
    unrelated to creating pods. kubectl run now only creates pods. See specific 
    kubectl create subcommands to create objects other than pods. (#87077, 
    @soltysh) [SIG Architecture, CLI and Testing]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 2012-05-12
      相关资源
      最近更新 更多