2017-10-19 9 views
0

ich einen Job pod mit 2 INIT Containern Bei pod Erstellung erstellt haben, abgeschlossen meine Arbeit erfolgreich, aber kein Zeichen der init ContainerKubernetes Jobs init Container

Für mich sollte die Aufgabe haben, warten auf den Abschluss der die 2 init Behälter vor

Mein Job Plan (aus Kubernetes Dokumentation) bei Start, wenn Sie möchten, das Problem

apiVersion: batch/v1 
kind: Job 
metadata: 
    name: pi 
annotations: 
    pod.beta.kubernetes.io/init-containers: '[ 
    { 
     "name": "init-myservice", 
     "image": "busybox", 
     "command": ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"] 
    }, 
    { 
     "name": "init-mydb", 
     "image": "busybox", 
     "command": ["sh", "-c", "until nslookup mydb; do echo waiting for mydb; sleep 2; done;"] 
    } 
    ]' 
spec: 
    template: 
    metadata: 
     name: pi 
    spec: 
     containers: 
     - name: pi 
     image: perl 
     command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] 
     restartPolicy: Never 

bei der Überprüfung meiner Arbeit pod

reproduzieren
$ kubectl describe pod pi-v2dn9 
Name: pi-v2dn9 
Namespace: default 
Security Policy: anyuid 
Node: 192.168.111.4/192.168.111.4 
Start Time: Thu, 19 Oct 2017 08:58:39 +0000 
Labels: controller-uid=b3091c77-b4ab-11e7-a3ea-fa163ea1c70b 
job-name=pi 
Status: Succeeded 
IP: 10.131.0.46 
Controllers: Job/pi 
Containers: 
pi: 
Container ID: docker://4bc5bb4c9fc65c1aa1999c3bdc09b01e54043dcdd464410edd0c9cad334c9c67 
Image: perl 
Image ID: docker-pullable://docker.io/[email protected]:80bd8136a0f3e2c7d202236fc5d8f1192dbfa9ec661ecdd5e96a446e9c7913a8 
Port: 
Command: 
perl 
-Mbignum=bpi 
-wle 
print bpi(2000) 
State: Terminated 
Reason: Completed 
Exit Code: 0 
Started: Thu, 19 Oct 2017 08:58:53 +0000 
Finished: Thu, 19 Oct 2017 08:58:58 +0000 
Ready: False 
Restart Count: 0 
Volume Mounts: 
/var/run/secrets/kubernetes.io/serviceaccount from default-token-fxdf1 (ro) 
Environment Variables: 
Conditions: 
Type Status 
Initialized True 
Ready False 
PodScheduled True 
Volumes: 
default-token-fxdf1: 
Type: Secret (a volume populated by a Secret) 
SecretName: default-token-fxdf1 
QoS Class: BestEffort 
Tolerations: 
Events: 
FirstSeen LastSeen Count From SubObjectPath Type Reason Message 

26s 26s 1 {default-scheduler } Normal Scheduled Successfully assigned pi-v2dn9 to 192.168.111.4 
25s 25s 1 {kubelet 192.168.111.4} spec.containers{pi} Normal Pulling pulling image "perl" 
12s 12s 1 {kubelet 192.168.111.4} spec.containers{pi} Normal Pulled Successfully pulled image "perl" 
12s 12s 1 {kubelet 192.168.111.4} spec.containers{pi} Normal Created Created container with docker id 4bc5bb4c9fc6; Security:[seccomp=unconfined] 
12s 12s 1 {kubelet 192.168.111.4} spec.containers{pi} Normal Started Started container with docker id 4bc5bb4c9fc6 

KEIN ZEICHEN DER INIT CONTAINER !!!

Meine Umwelt: --- Kubernetes Version (Verwendung kubectl Version): Client-Version: version.Info {Dur: "1", Minor: "5", GitVersion: "v1.5.2 + 43a9be4", GitCommit : "43a9be4", GitTreeState: "clean", BuildDatum: "2017-04-20T15: 38: 11Z", GoVersion: "go1.7.4", Compiler: "gc", Plattform: "linux/amd64"} Server Version : version.Info {Major: "1", Minor: "5", GitVersion: "v1.5.2 + 43a9be4", GitCommit: "43a9be4", GitTreeState: "sauber", BuildDate: "2017-04-20T15: 38: 11Z“, GoVersion: "go1.7.4", Compiler: "gc", Plattform: "linux/amd64"}

ich bin in einem Cluster von Openstack arbeitet

OS ist Red Hat Enterprise Linux Server 7.3 (Maipo)

Vielen Dank im Voraus für jede Hilfe.

Antwort

1

Versuchen Sie, die Anmerkung der Spezifikation Vorlage anstatt das Job-Objekt hinzufügen:

apiVersion: batch/v1 
kind: Job 
metadata: 
    name: pi 
spec: 
    template: 
    metadata: 
     name: pi 
    annotations: 
     pod.beta.kubernetes.io/init-containers: '[ 
     { 
      "name": "init-myservice", 
      "image": "busybox", 
      "command": ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"] 
     }, 
     { 
      "name": "init-mydb", 
      "image": "busybox", 
      "command": ["sh", "-c", "until nslookup mydb; do echo waiting for mydb; sleep 2; done;"] 
     } 
     ]' 
    spec: 
     containers: 
     - name: pi 
     image: perl 
     command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] 
     restartPolicy: Never 
+0

Hallo Vascop, Vielen Dank für Ihr Interesse. –

+0

Leider habe ich das schon ausprobiert, aber ich befürchte, dass bei Kube 1.5 das Anmerkungsfeld im Metadatenteil des Jobs hinzugefügt werden muss. Ich habe das in der Dokumentation https://v1-5.docs.kubernetes.io/docs/concepts/workloads/pods/init-containers/ gesehen. Ich habe auch versucht, die API-Version zu ändern, aber Jobs benötigen den Stapel/v1 und es passt möglicherweise nicht mit Init-Containern. Nochmals vielen Dank für Ihre Hilfe. Grüße, PP –

+0

Was von Vascop vorgeschlagen wird funktioniert zumindest für kubernetes v1.7 Die Einrückung innerhalb des Beispiels ist falsch, aber die vorgeschlagene Lösung ist in Ordnung. – dbenque

0

Ihre Anmerkungen an der falschen Stelle sind. Sie sollten speziell für Init-Container in den Pod-Metadaten definiert werden, während Sie sie den Job-Metadaten hinzugefügt haben.

apiVersion: batch/v1 
kind: Job 
metadata: 
    name: pi 
spec: 
    template: 
    metadata: 
     name: pi 
     annotations: 
     pod.beta.kubernetes.io/init-containers: '[ 
      { 
      "name": "init-myservice", 
      "image": "busybox", 
      "command": ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"] 
      }, 
      { 
      "name": "init-mydb", 
      "image": "busybox", 
      "command": ["sh", "-c", "until nslookup mydb; do echo waiting for mydb; sleep 2; done;"] 
      } 
     ]' 
    spec: 
     containers: 
     - name: pi 
     image: perl 
     command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] 
     restartPolicy: Never 
+0

Hallo allerseits und vielen Dank für alle Antworten. Sie haben Recht, dass die Anmerkungen an der falschen Stelle sind (aber nicht für Kube 1.5, da sie wie ich platziert werden müssen). Echte Problem ist, dass INIT-Container für JOB nicht vor Kube 1.6 funktionieren (Ich habe mit dieser Version und 1.7 versucht und es hat funktioniert). –

Verwandte Themen