向部署添加一些标签?

Rub*_*b1K 9 label kubernetes

我是 K8S 的初学者,我对 kubernetes 的标签有疑问。在 youtube 视频(这里是法语)上,我看到了:

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"
Run Code Online (Sandbox Code Playgroud)
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
      
Run Code Online (Sandbox Code Playgroud)
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
      
Run Code Online (Sandbox Code Playgroud)

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

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

Run Code Online (Sandbox Code Playgroud)

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

No resources found in default namespace.
Run Code Online (Sandbox Code Playgroud)

但如果我尝试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
Run Code Online (Sandbox Code Playgroud)

如果我按照视频中的每个步骤进行操作,就有一种方法可以在部署上放置一些标签...但是该命令kubectl create deployment不接受标志 --labels :

Error: unknown flag: --labels
Run Code Online (Sandbox Code Playgroud)

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

多谢 !

Kam*_*san 16

因为$ kubectl create deployment不支持--labelsflag。但您可以用来$ 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
Run Code Online (Sandbox Code Playgroud)

它也适用于其他 Kubernetes 对象。

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