24 Labels und Selektoren in Kubernetes

Neues Kapitel

Labels sind Schlüssel-Wert-Paare, die an Objekte angehängt werden können, um diese zu organisieren und auszuwählen. Sie erlauben effiziente Abfragen und sind ideal für die Nutzung in Benutzeroberflächen und CLI. Labels ermöglichen es Nutzern, ihre eigenen organisatorischen Strukturen auf Systemobjekte in einer locker gekoppelten Weise abzubilden, ohne dass Clients diese Zuordnungen speichern müssen.

Die Syntax für Labels besteht aus zwei Segmenten: einem optionalen Präfix und einem Namen, getrennt durch einen Schrägstrich. Der Namensteil ist erforderlich und muss mit einem alphanumerischen Zeichen beginnen und enden, wobei auch Bindestriche, Unterstriche und Punkte zulässig sind.

Label-Selektoren sind das zentrale Konzept für Gruppierungen in Kubernetes und ermöglichen es dem Benutzer, eine Menge von Objekten zu identifizieren. Es gibt zwei Arten von Selektoren: gleichheitsbasierte und mengenbasierte. Gleichheitsbasierte Anforderungen erlauben das Filtern nach Label-Schlüsseln und -Werten, wobei Objekte alle angegebenen Label-Bedingungen erfüllen müssen. Mengenbasierte Anforderungen ermöglichen das Filtern von Schlüsseln nach einer Menge von Werten. Diese Anforderungen können miteinander kombiniert werden, um komplexe Abfragen zu erstellen

24.1 Beispiele für Label-Selektoren

24.1.1 Gleichheitsbasierte Selektoren

24.1.2 Mengenbasierte Selektoren

24.2 Manifest-Beispiele für Labels und Selektoren

24.2.1 Pod-Manifest mit gleichheitsbasiertem Selector

apiVersion: v1
kind: Pod
metadata:
  name: mypod
  labels:
    environment: production
spec:
  containers:
  - name: mycontainer
    image: myimage
  nodeSelector:
    disktype: ssd

24.2.2 ReplicaSet-Manifest mit mengenbasiertem Selector

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myreplicaset
spec:
  replicas: 2
  selector:
    matchLabels:
      environment: production
    matchExpressions:
      - {key: tier, operator: In, values: [frontend]}
  template:
    metadata:
      labels:
        environment: production
        tier: frontend
    spec:
      containers:
      - name: myfrontend
        image: myfrontendimage

Im Pod-Manifest wird ein gleichheitsbasierter Selektor verwendet, um Knoten mit dem Label disktype=ssd auszuwählen. Das ReplicaSet-Manifest verwendet einen mengenbasierten Selektor, um Pods zu matchen, deren environment-Label den Wert production hat und gleichzeitig im tier-Label zu frontend gehört.