Kubernetes · 3 min read · Dec 08, 2025

Labels und Selektoren in Kubernetes

Labels sind nichts anderes als Schlüssel-Wert-Paare, die Kubernetes-Objekten wie Pods, Services usw. zugewiesen werden. Labels können verwendet werden, um Kubernetes-Objekte zu organisieren und auszuwählen. Labels können Objekten zum Zeitpunkt der Erstellung angehängt und jederzeit geändert werden. Wir können mehreren Labels zu Kubernetes-Objekten hinzufügen.

Selektoren werden von den Benutzern verwendet, um eine Menge von Objekten auszuwählen. Der Label-Selektor ist das zentrale Gruppierungsprimitive in Kubernetes. Die Kubernetes-API unterstützt zwei Arten von Selektoren:

  1. Gleichheitsbasierte Selektoren:
    Dies ermöglicht das Filtern nach Schlüssel und Wert, wobei übereinstimmende Objekte alle angegebenen Labels erfüllen müssen.
  2. Mengenbasierte Selektoren:
    Dies ermöglicht das Filtern von Schlüsseln gemäß einer Menge von Werten.

Um mehr über Labels und Selektoren zu erfahren, klicken Sie hier.

In diesem Artikel werden wir einen Pod mit Labels erstellen und die Anfragen über den Service mithilfe des Selektors an ihn weiterleiten. Wir werden auch die Befehle zum Abrufen und Löschen von Pods und Services mithilfe von Label/Selektoren in der Befehlszeile ausführen.

Voraussetzungen

  1. Kubernetes-Cluster mit mindestens 1 Worker-Knoten.
    Wenn Sie lernen möchten, wie man ein Kubernetes-Cluster erstellt, klicken Sie hier. Dieser Leitfaden hilft Ihnen, ein Kubernetes-Cluster mit 1 Master und 2 Knoten auf AWS Ubuntu 18.04 EC2-Instanzen zu erstellen.

Was wir tun werden

  1. Erstellen eines Pods und eines Services mit Labels und Selektor
  2. Labels verstehen

Erstellen eines Pods und eines Services mit Labels und Selektoren

Um einen Pod mit Labels zu erstellen, erstellen Sie eine neue Datei und fügen Sie den folgenden Inhalt hinzu.

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

Um einen Service mit einem Selektor zu erstellen, erstellen Sie eine Datei mit der folgenden Service-Definition, die den Standard-Namespace verwendet.

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

Um einen Pod zu erstellen, führen Sie den folgenden Befehl aus.

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

create-pod-with-label

Um einen Service zu erstellen, führen Sie den folgenden Befehl aus.

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

create-service-with-selector

Um zu überprüfen, ob der Label-Selektor funktioniert, versuchen Sie, auf den Service unter NodeIP:NodePort zuzugreifen.

Hier ist die IP meines Knotens 106.210.138.189 und der Service wird auf Port=30385 bereitgestellt.

Da wir in der Lage sind, auf den Nginx-Pod über den von uns erstellten Service zuzugreifen, bedeutet dies, dass das Label und der Selektor funktioniert haben.

Labels verstehen

Jetzt können wir verschiedene Operationen auf dem Pod und dem Service, die wir mit dem Label erstellt haben, durchführen.

Um Pods zu erhalten, die einem Label unserer Wahl entsprechen, können wir “–selector” im Befehl wie folgt verwenden.

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

get-pods-with-matching-labels

Wir können auch “-l” anstelle von “–selector” verwenden, um die Pods zu erhalten, die dem Label unserer Wahl entsprechen.

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

alternative-to-selector-command

Wir können sogar die Pod-Löschoperation durchführen, indem wir das Label angeben. Pods, die dem Label entsprechen, können mit den folgenden Befehlen gelöscht werden.

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

delete-pods-with-matching-label

So wie wir Pods löschen konnten, die den Labels entsprechen, können wir auch den Service löschen.

Um den Service zu löschen, der einem Label entspricht, verwenden Sie den folgenden Befehl. Wenn kein Service vorhanden ist, der dem angegebenen Label im Befehl entspricht, wird keine Löschoperation durchgeführt.

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

delete-service-with-matching-label

Fazit

In diesem Artikel haben wir einen Pod mit Labels erstellt und einen Service erstellt und auf diese Pods, die dem Label entsprechen, verwiesen. Wir haben auch gesehen, wie Pods und Services, die den Labels entsprechen, gelöscht werden können.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.