it-swarm.com.de

Wofür wird spec - selector - matchLabels beim Erstellen einer Bereitstellung verwendet?

Von Kubernetes Dokumentation :

Das Auswahlfeld definiert, wie die Bereitstellung ermittelt, welche Pods verwaltet werden sollen.

Beim Erstellen einer Bereitstellung habe ich die Pod-Vorlage jedoch bereits als Teil der Bereitstellung angegeben. Warum brauche ich die Selektoren auch?

Soll es wie Dienste verwendet werden, bei denen Pods bereits separat gestartet, aber später unter dem Dach von Deployment zusammengefasst werden, um gemeinsam verwaltet zu werden?

22
Paddy

Die Antwort auf diese Frage finden Sie im Abschnitt Bereitstellungen von kubernetes.io

Warum brauche ich dann auch die Selektoren ?

Zitate unten aus Dokumentation für k8s v 1.14

.spec.selector ist ein erforderliches Feld, das eine Beschriftungsauswahl für die Pods angibt, auf die diese Bereitstellung abzielt.

.spec.selector muss passen .spec.template.metadata.labels, oder es wird von der API abgelehnt.

In der API-Version apps/v1 verwenden .spec.selector und .metadata.labels nicht standardmäßig .spec.template.metadata.labels, wenn sie nicht festgelegt sind. Sie müssen also explizit gesetzt werden . Beachten Sie außerdem, dass .spec.selector nach dem Erstellen der Bereitstellung in apps/v1 unveränderlich ist.

Eine Bereitstellung kann Pods beenden, deren Beschriftungen mit der Auswahl übereinstimmen, wenn sich ihre Vorlage von .spec.template unterscheidet oder wenn die Gesamtzahl solcher Pods .spec.replicas überschreitet. Es werden neue Pods mit .spec.template angezeigt, wenn die Anzahl der Pods unter der gewünschten Anzahl liegt.

Pods werden bereits separat gestartet, aber später unter dem Dach von Deployment zusammengefasst, um gemeinsam verwaltet zu werden ?

Einfach gesagt, Nein

Hinweis: Sie sollten keine anderen Pods erstellen, deren Beschriftungen direkt mit diesem Selektor übereinstimmen, indem Sie ein anderes Deployment oder ein anderes Controller wie ein ReplicaSet oder ein ReplicationController erstellen. Wenn Sie dies tun, glaubt das erste Deployment, dass es diese anderen Pods erstellt hat. Kubernetes hindert Sie nicht daran. Wenn Sie mehrere Controller mit überlappenden Selektoren haben, kämpfen die Controller miteinander und verhalten sich nicht richtig.

10