2017-12-06 2 views
0

Problem Statement:Kubernetes POD Argumente sind nicht vorbei bis zum Service, sind vorbei aber Docker Argumente korrekt

Ich habe erfolgreich ein erstellt ein Docker Bild von docker.io/joethecoder2/spring-boot-web. Es wurde mit Befehlszeilenargumenten getestet, und diese funktionieren lokal korrekt mit Docker.

Ich versuche, Java-Argumente zu übergeben, die übergeben werden zu einem Kubernetes POD Docker, die mit einem einzigen Bild docker.io/joethecoder2/spring-boot-web

Der Zweck die Argumente vorbei definiert wird, ist die POD zu informieren, was die IP-Adresse und Port Nummer sind für den Datenbankservice.

Problem Definition:

ich einen Kubernetes POD hier definiert habe, aber ich glaube, die Argumente sind nicht korrekt von singlePod.yaml geben, wenn der POD den Dienst ausgeführt wird.

Erwartetes Ergebnis:

Ich gehe davon aus, dass die Kubernetes POD mit dem Docker Bild kompatibel sein here definiert.

Ich gehe davon aus, dass die Kubernetes POD Argumente akzeptieren wie Docker tut here:

Docker run-es -p 8080: 8080 joethecoder2/Feder-boot-web -Dcassandra_ip = 127.0.0.1 -Dcassandra_port = 9042

curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' 'http://localhost:8080/restaurant/arguments' 

Richtiges Ergebnis ist returned->127.0.0.1:9042

Falsches Ergebnis:

Ich weiß, dass die tatsächlichen Argumente nicht an den POD übergeben werden, denn wenn ich den folgenden Dienst ausführen, erhalte ich keine Argumente zurückgegeben.

curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/plain' 'http://192.168.64.3:32308/restaurant/arguments' 

Wrong Ergebnis ist returned->:

Erwartetes Ergebnis ->127.0.0.1:9042, wie in der Datei singlePod.yaml definiert

Warum werden die Argumente fehlen, obwohl die POD-Definitionsdatei weiß, dass die Argumente wurden statisch definiert?

+0

Es wäre besser, eine configMap.yaml zu erstellen und es mit dem Pod yaml Datei zu verknüpfen. Es stellt sicher, dass diese Umgebungsvariablen für den Container verfügbar sind –

Antwort

0

Wenn Sie eine Umgebungsvariable in den Container injizieren möchten. Es ist besser, ConfigMap zu verwenden, damit es sowohl Flexibilität als auch Trennung bietet.

apiVersion: v1 
kind: Pod 
metadata: 
    name: spring-boot-web-demo 
    labels: 
    purpose: demonstrate-spring-boot-web 
spec: 
    containers: 
    - name: spring-boot-web 
    image: docker.io/joethecoder2/spring-boot-web 
    command: ["java","-jar", "spring-boot-web-0.0.1-SNAPSHOT.jar"] 
    env: 
    - name: DCASSANDRA_IP 
    valueFrom: 
     configMapKeyRef: 
      key: Dcassandra_ip 
      name: env-values 
    - name: DCASSANDRA_PORT 
    valueFrom: 
     configMapKeyRef: 
      key: Dcassandra_port 
      name: env-values 
    restartPolicy: OnFailure 

--- 
apiVersion: v1 
kind: ConfigMap 
metadata: 
    name: env-values 
data: 
    Dcassandra_port=9042 
    Dcassandra_ip=127.0.0.1 

Jetzt müssen Sie eine Service Manifest-Datei schreiben, um diesen Container verfügbar zu machen, um darauf zuzugreifen. Ich habe Links für weitere Recherchen angefügt.

ConfigMap

Service

Verwandte Themen