2017-07-25 4 views
-1

In letzter Zeit begonnen, auf Docker und Kubernetes zu arbeiten. Ich stieß auf ein Problem, das ich eigentlich nicht vollständig verstehe.Docker-Image wird nicht bereitgestellt (wird beendet) auf lokalen Kubernetes

Die Sache ist, wenn ich meine svc.yaml (Service) und rc.yaml (Replikations-Controller) Pods werden erstellt, aber der Status ist beendet.

Ich hat versucht, die mögliche Fehlerursache Überprüfung mit dem Befehl

docker ps -a

954c3ee817f9 localhost: 5000/Hello
"/ ist/sh -c ./startSe" 2 Minuten vor Exited (127) 2 Minuten vor
k8s_HelloService.523e3b04_HelloService-64789_default_40e92b63-707a-11e7-9b96-080027f96241_195f2fee

dann versucht docker run -i -t localhost:5000/HelloService

/bin/sh ausgeführt wird: ./startService.sh: nicht gefunden

was der mögliche Grund, warum ich diese Fehler immer bin.

Docker Datei:

FROM alpine:3.2 
VOLUME /tmp 
ADD HelloService-0.0.1-SNAPSHOT.jar app.jar 
VOLUME /etc 
ADD /etc/ /etc/ 
ADD startService.sh /startService.sh 
RUN chmod 700 /startService.sh 
ENTRYPOINT ./startService.sh 

startService.sh

#!/bin/sh 

touch /app.jar 

java -Djava.security.egd=file:/dev/./urandom -Xms256m -Xmx256m -jar /app.jar 

Auch würde Ich mag wissen, ob es eine bestimmte Art, wie ich die Protokolle von Kubernetes für die terminierte Schoten zugreifen kann?

Update: auf unter Befehl ausführen

kubectl describe pods HelloService-522qw 

24s 24s 1 {default-Scheduler} Normale Spiel erfolgreich
zugewiesen Hello-522qw 17s 17s 1 bis ssantosh.centos7 {kubelet ssantosh.centos7 } spec.containers {HelloService} Normal Created Erstellt Container mit Andock-ID b550557f4c17; Sicherheit: [Seccomp = unconfined]
17s 17s 1 {kubelet
ssantosh.centos7} spec.containers {} Hello Normale Behälter mit Docker id Schritte Erste b550557f4c17 18s 16s 2 {kubelet
ssantosh.centos7} {spec.containers Hello} Normaler Pulling zieht Bild "localhost: 5000/Helloservice" 18s 16s 2 {kubelet
ssantosh.centos7} spec.containers {} Hello normalen Pulled Erfolgreich gezogen Bild "localhost: 5000/Helloservice" 15s 15s 1 {kubelet
ssantosh.centos7} spec.containers {HelloService} Normal Erstellt Erstellt Container mit Docker-ID d30b10211b1b; Sicherheit: [seccomp = uneingeschränkt]
14s 14s 1 {kubelet
ssantosh.centos7} spez.Container {} Hello Normale Behälter mit Docker ID d30b10211b1b 12s Schritte Erste 11s 2 {kubelet
ssantosh.centos7} spec.containers {} Hello Warnung BackOff Back-off Neustarten Docker Behälter 12s fehlgeschlagen 11s 2 {kubelet
ssantosh.centos7 } Warnung FailedSync Fehler pod synchronisiert werden, das Überspringen: fehlgeschlagen "StartContainer" für "Helloservice" mit CrashLoopBackOff:
„Back-off 10s = Hello
pod = Hello-522qw_default fehlgeschlagen Container Neustarten (1e951b45-7116-11e7-9b96- 080027f96241) "

+0

Immer gut zu testen, um das Bild zunächst lokal in irgendeiner Form gefunden. – Grimmy

Antwort

0

Das Problem war, dass es kein Java als Teil des alpinen Images gibt.

So die

FROM alpine:3.2 

zu

modifizierte
FROM anapsix/alpine-java 
0

Sie jdk auf der Maschine müssen auch die Dockerfile aktualisieren, entfernen Sie das brauchen. vor dem Befehl startService.sh. wie unter

ENTRYPOINT /startService.sh 

das wird diese Fehlermeldung beheben.

/bin/sh: ./startService.sh: nicht

+0

das hat nicht geholfen. Am Ende habe ich CMD und den Java-Befehl benutzt, um den Dienst zu starten. –

Verwandte Themen