2015-08-29 4 views
5

Also forsche ich, wie man Kubernetes für meinen Fall benutzt. Ich habe es installiert und ein bisschen gespielt.Wie wird die pub-Instanz-ID von kubernetes beim Start an den Pod übergeben?

Die Frage ist, wenn die Replikation Controller paar Repliken beginnt sie so etwas wie eine ID in ihrem Namen haben:

  1. Wie einzigartig ist diese ID? Ist es einzigartig für das Leben von Kubernetes? Ist es einzigartig über verschiedene Kubernetes-Läufe (d. H. Wenn ich Kubernetes neu starte)?
  2. Wie diese ID an die App im Container übergeben? Kann ich im yaml eine Art Template angeben, so wird zB die ID einer Umgebungsvariablen oder etwas Ähnlichem zugewiesen?
  3. Alternativ gibt es eine Möglichkeit für die App im Container, nach dieser ID zu fragen?

Weitere Erläuterungen zum Anwendungsfall. Ich habe eine Anwendung, die einige Sitzungsdateien in einem Verzeichnis schreibt. Ich möchte für die Sitzungs-IDs im System eindeutig garantieren. Das heißt, wenn eine App-Instanz auf VM1 und eine andere Instanz auf VM2 ausgeführt wird, möchte ich den IDs eine Art Kennung voranstellen, z. B. app-1-dajk4l und app-2-dajk4l, wobei app der Name der App und 1 ist , 2 ist die Instanzkennung, die vom Replikations-Controller stammen sollte, da sie dynamisch ist und nicht manuell konfiguriert werden kann. dajk4l ist eine Kennung wie der aktuelle Zeitstempel oder ähnliches.

Danke.

Antwort

8
  1. Die ID wird garantiert an jedem einzelnen Zeitpunkt eindeutig sein, da Kubernetes nicht zwei Schoten im gleichen Namensraum erlaubt die gleichen Namen zu haben. Es gibt jedoch keine längerfristigen Garantien, da sie nur generated as a random string of 5 alphanumeric characters sind. Da es jedoch mehr als 60 Millionen solcher zufälliger Strings gibt, sind Konflikte in der Zeit auch in den meisten Umgebungen unwahrscheinlich.

  2. Ja, können Sie in der Schote des Namespace und den Namen als Umgebungsvariablen ziehen, was die "Downward API" genannt wird, auf dem Behälter ein Feld hinzufügen wie env: - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name

+0

Cool, danke! Aus irgendeinem Grund ignorierte ich das Thema Downward API - wegen des Wortes API dachte ich, dass es nicht das ist, was ich brauche. – bobef

Verwandte Themen