Kubernetes · 1 min read · Dec 08, 2025

Kubernetesにおけるラベルとセレクタ

ラベルは、Pod、ServiceなどのKubernetesオブジェクトに割り当てられたキーと値のペアに過ぎません。ラベルはKubernetesオブジェクトを整理し、選択するために使用できます。ラベルはオブジェクトの作成時に添付でき、いつでも変更できます。Kubernetesオブジェクトに複数のラベルを追加できます。

セレクタは、ユーザーがオブジェクトのセットを選択するために使用します。ラベルセレクタはKubernetesのコアグルーピングプリミティブです。Kubernetes APIは2種類のセレクタをサポートしています。

  1. 等価ベースのセレクタ:
    これは、キーと値でフィルタリングを行い、一致するオブジェクトは指定されたすべてのラベルを満たす必要があります。
  2. セットベースのセレクタ:
    これは、値のセットに従ってキーをフィルタリングすることを可能にします。

ラベルとセレクタの詳細については、こちらをクリックしてください。

この記事では、ラベルを持つPodを作成し、セレクタを使用してサービスからそのPodへのリクエストをリダイレクトします。また、コマンドラインでラベル/セレクタを使用してPodとServiceに対して取得、削除操作を行います。

前提条件

  1. 少なくとも1つのワーカーノードを持つKubernetesクラスター。
    Kubernetesクラスターの作成方法を学びたい場合は、こちらをクリックしてください。このガイドは、AWS Ubuntu 18.04 EC2インスタンス上に1つのマスターと2つのノードを持つKubernetesクラスターを作成するのに役立ちます。

何をするか

  1. ラベルとセレクタを持つPodとServiceを作成する
  2. ラベルを理解する

ラベルとセレクタを持つPodとServiceを作成する

ラベルを持つPodを作成するには、新しいファイルを作成し、以下の内容を追加します。

vim my-lable-demo-pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: label-demo-pod
  labels:
    environment: test
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

label-demo-pod

セレクタを持つサービスを作成するには、デフォルトの名前空間を使用する以下のサービス定義を持つファイルを作成します。

vim my-selector-demo-service.yml
apiVersion: v1
kind: Service
metadata:
  name: selector-demo-service
  namespace: default
  labels:  
    environment: test
    app: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:    
    app: nginx
  type: NodePort

selector-demo-service

Podを作成するには、以下のコマンドを実行します。

kubectl create -f my-lable-demo-pod.yml
kubectl get pods

create-pod-with-label

サービスを作成するには、以下のコマンドを実行します。

kubectl create -f my-selector-demo-service.yml
kubectl get service

create-service-with-selector

次に、ラベルセレクタが機能しているかどうかを確認するために、NodeIP:NodePortでサービスにアクセスしてみてください。

ここで、私のノードのIPは106.210.138.189で、サービスはPort=30385で公開されています。

作成したサービスを使用してNginx Podにアクセスできるため、ラベルとセレクタが機能したことを意味します。

ラベルを理解する

これで、作成したPodとServiceに対してラベルを使用してさまざまな操作を行うことができます。

選択したラベルに一致するPodを取得するには、コマンドに「–selector」を使用します。

kubectl get pods --selector environment=test
kubectl get pods --selector app=nginx

get-pods-with-matching-labels

選択したラベルに一致するPodを取得するために「–selector」の代わりに「-l」を使用することもできます。

kubectl get pods -l environment=test
kubectl get pods -l environment=prod

alternative-to-selector-command

ラベルを指定してPod削除操作を実行することもできます。ラベルに一致するPodは、以下のコマンドを使用して削除できます。

kubectl get pods
kubectl delete pods -l environment=test
kubectl get pods

delete-pods-with-matching-label

ラベルに一致するPodを削除できるように、サービスも削除できます。

ラベルに一致するサービスを削除するには、以下のコマンドを使用します。また、コマンドで指定されたラベルに一致するサービスがない場合、削除操作は実行されません。

kubectl get service
kubectl delete service -l environemt=test
kubectl delete service -l environment=test
kubectl get service

delete-service-with-matching-label

結論

この記事では、ラベルを持つPodを作成し、そのラベルに一致するPodにサービスを作成してポイントしました。また、ラベルに一致するPodとサービスを削除する方法も見ました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。