なぜラベルが必要なのですか
リソースが非常に大きくなると、管理を分類する方法が非常に重要になります。Kubernetesは、リソースを分類するメカニズムであるLabelを提供します。Labelは非常にシンプルですが、非常に強力です。KubernetesのほとんどすべてのリソースをLabelで整理できます。
Labelの特定の形式は、キーと値のタグペアであり、リソースの作成時に設定することも、後で追加および変更することもできます。
ポッドを例にとると、次の図に示すように、ポッドの数が増えると、ポッドが乱雑になり、管理が困難になります。
図1分類編成のないポッドポッド
に異なるラベルを付けると、次の図に示すように、状況は完全に異なります。
図2ラベル別に整理されたポッド
ラベルを追加
ラベルはキー値の形式であり、非常に使いやすいです。次のように、2つのラベルapp = nginxとenv = prodがポッドに設定されます。
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels: # 为Pod设置两个Label
app: nginx
env: prod
spec:
containers:
- image: nginx:alpine
name: container-0
resources:
limits:
cpu: 100m
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
imagePullSecrets:
- name: default-secret
ポッドにラベルを付けた後、ポッドにクエリを実行すると、-show-labelsを使用してポッドのラベルを確認できます。
$ kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx 1/1 Running 0 50s app=nginx,env=prod
-Lを使用して、特定の固定ラベルのみを照会することもできます。
$ kubectl get pod -L app,env
NAME READY STATUS RESTARTS AGE APP ENV
nginx 1/1 Running 0 1m nginx prod
既存のポッドの場合、kubectl labelコマンドを直接使用して、ラベルを直接追加できます。
$ kubectl label po nginx creation_method=manual
pod/nginx labeled
$ kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx 1/1 Running 0 50s app=nginx, creation_method=manual,env=prod
ラベルの変更
既存のラベルの場合、それを変更する場合は、以下に示すように、コマンドに--overwriteを含める必要があります。
$ kubectl label po nginx env=debug --overwrite
pod/nginx labeled
$ kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx 1/1 Running 0 50s app=nginx,creation_method=manual,env=debug