2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GKE Kubernetes ラベルを使ったフィルタリング

Posted at

Kubernetesではリソースに対してラベルを付与することによりselectorやフィルタリングに利用することができる。
ラベルは以下のようにKey,Valueでオブジェクト(Pod,Replication Controllerなど)にアタッチする。

"labels": {
  "key1" : "value1",
  "key2" : "value2"
}

ラベルの例として、以下のようなものが公式ページに記載されている。リリースや環境などを区別するために用いることを想定されているようである。

"release" : "stable", "release" : "canary"
"environment" : "dev", "environment" : "qa", "environment" : "production"
"tier" : "frontend", "tier" : "backend", "tier" : "cache"
"partition" : "customerA", "partition" : "customerB"
"track" : "daily", "track" : "weekly"

ラベルは Label Selector を利用して特定の Pod を判別するために利用される。

ラベルのアタッチ

マニフェストで定義する。
既に環境作ってたので既存のDeployment、Podに対してラベルを追加する。

$ kubectl get --show-labels=true deployments
NAME                    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE       LABELS
gcp-cost                1         1         1            1           15d       name=gcp-cost-pods
task-processing-time    1         1         1            1           7d        name=task-processing-time-pods

$ kubectl edit  deployments/gcp-cost

以下のラベルを追加。

environment: dev

※task-processingにはenvironment:qaを追加。

deploymentにラベルが追加されていることを確認

$ kubectl get --show-labels=true deployments
gcp-cost                1         1         1            1           15d       environment=dev,name=gcp-cost-pods
task-processing-time    1         1         1            1           7d        environment=qa,name=task-processing-time-pods

注) templateのラベルを変更すると、既存のPodを落とし、新しいPod(ラベル付き)が作成されることを確認。

$ kubectl get --show-labels=true pods
gcp-cost-1823646609-u7s4z                1/1       Terminating   0          5m        name=gcp-cost-pods,pod-template-hash=1823646609
gcp-cost-3407718879-zrso2                1/1       Running       0          2s        environment=dev,name=gcp-cost-pods,pod-template-hash=3407718879
  • environmentがdevと一致するpodのみ、一覧を出力する。
$ kubectl get pods -l "environment=dev"
NAME                        READY     STATUS    RESTARTS   AGE
gcp-cost-3407718879-zrso2   1/1       Running   0          7m
  • environmentがdevと一致しないpodのみ、一覧を出力する。
$ kubectl get pods -l "environment!=dev"
NAME                                     READY     STATUS    RESTARTS   AGE
task-processing-time-1436137422-8fwba    1/1       Running   0          2m
  • environmentがdevとqaのpod一覧を出力する。
$ kubectl get pods -l "environment in (dev,qa)"
NAME                                    READY     STATUS    RESTARTS   AGE
gcp-cost-3407718879-zrso2               1/1       Running   0          23m
task-processing-time-1436137422-8fwba   1/1       Running   0          3m

getだけではなくdeleteなどと組み合わせることが可能。environmentがdevのpodを全て削除するなど。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?