我正在使用两个虚拟机,安装了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日志:它显示:
答案 0 :(得分:2)
您正在将jar添加到/hello2.jar
,但ENTRYPOINT
指向q/hello2.jar
。
您的端口现在为8081
,但Springs默认为8080
,您在第一次尝试时正确使用了该端口。
您是否尝试在本地启动容器并查看日志?