k8s で label を使ってリソースを探すときのメモ書き。
k get --help
で詳細が確認出来るので忘れたらこれで確認するのがベストだが一応メモしておく。
環境
# kubectl は k として alias の設定をしている環境
$alias |grep kubectl
k=kubectl
# Pod は以下のように作成
$k run nginx-pod --image=nginx:alpine --generator=run-pod/v1
$k run dev-redis --image=redis:alpine --generator=run-pod/v1 --labels="tier=db,env=dev"
リソースの指定
# Pod の表示
$k get pods
NAME READY STATUS RESTARTS AGE
dev-redis 1/1 Running 0 20m
nginx-pod 1/1 Running 0 22m
# 全てのリソースを表示. service も表示されている
$k get all
NAME READY STATUS RESTARTS AGE
pod/dev-redis 1/1 Running 0 20m
pod/nginx-pod 1/1 Running 0 22m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 13d
# そもそもどんなリソースがサポートされているかは以下によって確認できる。このコマンドは k get --help でも記載あり(長いので結果は割愛)
$kubectl api-resources
ラベルの表示
-L
オプションを指定することで特定ラベルの表示が出来る。
また、 --show-labels=true
によって全てのラベル、値の確認が出来る
# Pod の env というラベルの値を表示
$k get pods -L env
NAME READY STATUS RESTARTS AGE ENV
dev-redis 1/1 Running 0 15m dev
nginx-pod 1/1 Running 0 18m
# --show-labels=true を付ける事で設定されているラベルが確認出来る
$k get all --show-labels=true
NAME READY STATUS RESTARTS AGE LABELS
pod/dev-redis 1/1 Running 0 16m env=dev,tier=db
pod/nginx-pod 1/1 Running 0 18m run=nginx-pod
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE LABELS
service/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 13d component=apiserver,provider=kubernetes
ラベルによるフィルタリング
-l
オプションによりフィルタリングが出来る
複数ラベルの指定可能。
# env ラベルが dev となっている Pod を表示
$k get pods -l env=dev
NAME READY STATUS RESTARTS AGE
dev-redis 1/1 Running 0 17m
# ラベルが env=dev,tier=db の Pod を表示
$k get pods -l env=dev,tier=db
NAME READY STATUS RESTARTS AGE
dev-redis 1/1 Running 0 18m