2016-04-15 3 views
2

Wie kann ich feststellen, ob ich in einem kubernetes-Cluster laufe oder nicht? Mit dem Andockfenster kann ich prüfen, ob /.dockerinit existiert. Gibt es ein Äquivalent?Wie kann ich feststellen, ob mein Container in einem Kubernetes-Cluster ausgeführt wird?

+0

Ich denke, Sie können die kubectl Kommandozeilen-Tool von kubernetes verwenden. [Setup it] (https://cloud.google.com/container-engine/docs/before-you-begin) starte kubectl get pods. Sie erhalten eine Liste von Pods (Containern). http://kubernetes.io/docs/user-guide/kubectl-cheatsheet/ –

+0

Ich möchte meine Golang App Programmatisch herausfinden. – CESCO

+0

Sie können kubernetes [Client-Bibliothek] (https://github.com/kubernetes/kubernetes/tree/release-1.2/pkg/client/) verwenden, um auf die kubernetes apis innerhalb Ihres Codes zuzugreifen. Sorry, ich kenne den genauen API-Namen nicht, aber ich denke, dafür musst du etwas API-Dokument lesen. –

Antwort

2

Sie können Umgebungsvariablen an Ihre Container in der Pod-Spezifikation übergeben. Sie können sogar einige Pod-Informationen den Containern über Umgebungsvariablen unter Verwendung der downward API zur Verfügung stellen.

+0

Das ist, was ich gesucht habe! – CESCO

+0

@CESCO Ich versuche auch herauszufinden, ob mein Python-Code auf einem kubernetes-Pod oder auf meinem Laptop läuft. Gibt es eine Möglichkeit, dies post-hoc zu tun, ohne vorher die Umgebungsvariablen einzurichten? – jtlz2

0

Mit der Standardkonfiguration wird Kubernetes die Serviceaccount-Geheimnisse in Pods einbinden. Überprüfen Sie einfach das Vorhandensein dieses Ordners: /var/run/secrets/kubernetes.io. Keine Notwendigkeit, Umgebungsvariablen zu setzen. In Ruby würde ich folgendes tun:

if File.exists?('/.dockerenv') 
    puts "I'm running in a docker container" 
end 

if File.exists?('/var/run/secrets/kubernetes.io') 
    puts "I'm also running in a Kubernetes pod" 
end