Kubernetes · 1 min read · Dec 08, 2025
Kubernetesにおけるラベルとセレクタ

ラベルは、Pod、ServiceなどのKubernetesオブジェクトに割り当てられたキーと値のペアに過ぎません。ラベルはKubernetesオブジェクトを整理し、選択するために使用できます。ラベルはオブジェクトの作成時に添付でき、いつでも変更できます。Kubernetesオブジェクトに複数のラベルを追加できます。
セレクタは、ユーザーがオブジェクトのセットを選択するために使用します。ラベルセレクタはKubernetesのコアグルーピングプリミティブです。Kubernetes APIは2種類のセレクタをサポートしています。
- 等価ベースのセレクタ:
これは、キーと値でフィルタリングを行い、一致するオブジェクトは指定されたすべてのラベルを満たす必要があります。 - セットベースのセレクタ:
これは、値のセットに従ってキーをフィルタリングすることを可能にします。
ラベルとセレクタの詳細については、こちらをクリックしてください。
この記事では、ラベルを持つPodを作成し、セレクタを使用してサービスからそのPodへのリクエストをリダイレクトします。また、コマンドラインでラベル/セレクタを使用してPodとServiceに対して取得、削除操作を行います。
前提条件
- 少なくとも1つのワーカーノードを持つKubernetesクラスター。
Kubernetesクラスターの作成方法を学びたい場合は、こちらをクリックしてください。このガイドは、AWS Ubuntu 18.04 EC2インスタンス上に1つのマスターと2つのノードを持つKubernetesクラスターを作成するのに役立ちます。
何をするか
- ラベルとセレクタを持つPodとServiceを作成する
- ラベルを理解する
ラベルとセレクタを持つPodとServiceを作成する
ラベルを持つPodを作成するには、新しいファイルを作成し、以下の内容を追加します。
vim my-lable-demo-pod.ymlapiVersion: 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
セレクタを持つサービスを作成するには、デフォルトの名前空間を使用する以下のサービス定義を持つファイルを作成します。
vim my-selector-demo-service.ymlapiVersion: 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
Podを作成するには、以下のコマンドを実行します。
kubectl create -f my-lable-demo-pod.ymlkubectl get pods
サービスを作成するには、以下のコマンドを実行します。
kubectl create -f my-selector-demo-service.ymlkubectl get service
次に、ラベルセレクタが機能しているかどうかを確認するために、NodeIP:NodePortでサービスにアクセスしてみてください。
ここで、私のノードのIPは106.210.138.189で、サービスはPort=30385で公開されています。
作成したサービスを使用してNginx Podにアクセスできるため、ラベルとセレクタが機能したことを意味します。
ラベルを理解する
これで、作成したPodとServiceに対してラベルを使用してさまざまな操作を行うことができます。
選択したラベルに一致するPodを取得するには、コマンドに「–selector」を使用します。
kubectl get pods --selector environment=testkubectl get pods --selector app=nginx
選択したラベルに一致するPodを取得するために「–selector」の代わりに「-l」を使用することもできます。
kubectl get pods -l environment=testkubectl get pods -l environment=prod
ラベルを指定してPod削除操作を実行することもできます。ラベルに一致するPodは、以下のコマンドを使用して削除できます。
kubectl get podskubectl delete pods -l environment=testkubectl get pods
ラベルに一致するPodを削除できるように、サービスも削除できます。
ラベルに一致するサービスを削除するには、以下のコマンドを使用します。また、コマンドで指定されたラベルに一致するサービスがない場合、削除操作は実行されません。
kubectl get servicekubectl delete service -l environemt=testkubectl delete service -l environment=testkubectl get service
結論
この記事では、ラベルを持つPodを作成し、そのラベルに一致するPodにサービスを作成してポイントしました。また、ラベルに一致するPodとサービスを削除する方法も見ました。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。