Запуск java-приложения в контейнере kubernetes не работает

Я пытаюсь развернуть и запустить java-приложение в kubernetes POD, для которого я получаю ошибку ниже. Но когда я запускаю его как контейнер для докеров, он работает нормально.

Вот Dockerfile -

FROM openjdk:8-jre-alpine
ENV artifact mysessionmanager-1.0.0-SNAPSHOT.jar
WORKDIR /root/apps
COPY . /root/apps
EXPOSE 8080
ENTRYPOINT ["sh", "-c"]
CMD ["java -jar ${artifact}"]

docker build -t mysessionmanager .
docker tag mysessionmanager xxxx/mysessionmanager:v1
docker push xxxx/mysessionmanager
kubectl run mysessionmanager --image=xxxx/mysessionmanager:v1 --port=8080
kubectl expose deployment --type=NodePort --port=80 --target-port=8080 --name=mysessionmanager  

kubectl get deployments показывает мое развертывание Доступный статус как 0

kubectl get pods показывает статус моего устройства POD как CrashLoopBackOff

kubectl get logs mysessionmanager-5654545f8-mvt5x ничего не показывает

kubectl describe pod mysessionmanager-5654545f8-mvt5x

Reason: CrashLoopBackOff
Last State: Terminated
Reason: ContainerCannotRun
Message: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"java -jar mysessionmanager-1.0.0-SNAPSHOT.jar\": executable file not found in $PATH": unknown

Но когда я напрямую запускаю образ докера, используя команду ниже, он работает нормально.

docker run -it mysessionmanager

Ценю любую помощь. Спасибо


person Gopi    schedule 14.01.2019    source источник
comment
Есть ли у вашей команды docker push тег ...:v1?   -  person David Maze    schedule 15.01.2019
comment
Да ты был прав!   -  person Gopi    schedule 15.01.2019


Ответы (1)


нет необходимости использовать ОБЕ команды cmd и точки входа.

в своих проектах я создаю небольшой сценарий bash, внутри которого написана команда java.

этот небольшой скрипт работает в моей точке входа без настроенного cmd.

person eran meiri    schedule 14.01.2019
comment
Все еще та же ошибка ... Я удалил CMD и изменил ENTRYPOINT на ENTRYPOINT [java, -jar, $ {artifact}] - person Gopi; 14.01.2019
comment
поместите свою команду java в простой сценарий sh: ENTRYPOINT [./docker-entrypoint.sh] и в точку входа: exec java -jar .... - person eran meiri; 14.01.2019
comment
Не повезло, все еще такая же ошибка .. добавлено следующее в execscript.sh - ›exec java -jar mysessionmanager-1.0.0-SNAPSHOT.jar И изменил Dockerfile на ENTRYPOINT [./execscript.sh] - person Gopi; 14.01.2019
comment
@aa Похоже, Дэвид прав, вы не используете изображение, которое, как вы думаете, используете. - person Andrew Savinykh; 15.01.2019