更新Springboot应用程序后,无法提取图像

时间:2018-05-16 08:04:46

标签: kubernetes

我正在使用两个虚拟机,安装了centos 7.主机是win10专业版。

我按照link制作了由kubernetes管理的spring boot应用程序容器。该链接使用minikube,但我使用两个节点作为kubernetes最小安装。一个节点是主节点(172.16.100.81),一个节点是工作节点(172.16.100.96)。使用hello应用程序,我按照步骤操作,它可以工作。我的命令简介如下:

docker build -t $USER/hello:0.0.1 .
kubectl run hello --image $USER/hello:0.0.1 --port 8080
kubectl expose deployment hello --type=NodePort

到目前为止一切都很好。我甚至可以将它扩展到replica = 3。

但现在我修改了spring boot应用程序,我只需添加几个字符如下:

package com.springdeveloper.k8s.hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@SpringBootApplication
public class HelloApplication {

        public static void main(String[] args) {
                SpringApplication.run(HelloApplication.class, args);
        }

        @RestController
        class HelloController {
                @GetMapping("/hello")
                String hello() {
                        return "Hello Kubernauts!, are there image transfer?";
                }
        }


}

通过此更改,我还更改了Dockerfile,以便它可能与以前的版本没有冲突。修改后的Dockerfile如下:

FROM registry.docker-cn.com/library/openjdk:8-alpine
VOLUME /tmp
ADD ./target/hello-0.0.1-SNAPSHOT.jar /hello2.jar
RUN sh -c 'touch /hello2.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","q/hello2.jar"]

原始Dockerfile如下:

FROM registry.docker-cn.com/library/openjdk:8-alpine
VOLUME /tmp
ADD ./target/hello-0.0.1-SNAPSHOT.jar /hello.jar
RUN sh -c 'touch /hello.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/hello.jar"]

然后我按照以前的步骤做同样的步骤:

docker build -t $USER/hello2:0.0.2 .
kubectl run hello2 --image $USER/hello2:0.0.2 --port 8081
kubectl expose deployment hello2 --type=NodePort

但是hello2无法处于就绪状态,而hello处于就绪状态。我看不出hello和hello2之间的区别。为什么hello2不能处于就绪状态?

[root@master2 hello]# kubectl get pods
NAME                     READY     STATUS             RESTARTS   AGE
hello-7db856d974-sg9kh   1/1       Running            0          1h
hello2-5c9c6776d-zgvhs   0/1       ImagePullBackOff   0          51m

然后我使用kubectl日志:它显示:

1 个答案:

答案 0 :(得分:2)

  1. 您正在将jar添加到/hello2.jar,但ENTRYPOINT指向q/hello2.jar

  2. 您的端口现在为8081,但Springs默认为8080,您在第一次尝试时正确使用了该端口。

  3. 您是否尝试在本地启动容器并查看日志?