java - Kubernetes 无法通过 Github 从 Docker hub 部署简单镜像

标签 java docker kubernetes

我对这类东西确实很陌生,对 Kubernetes 和 Docker 很陌生,但在 Java 上已经有了一些经验。

我尝试通过将 Docker Hub 连接到 GitHub 来使用它。

在我的 Git-hub 上只有 2 个代码:

  1. Dockerfile
  2. 简单的 hello world Java 代码。

每次我在 Kubernetes 上运行它并使用 kubectl get pods 检查它时,我总是得到 CrashLoopBackOff。

我不明白出了什么问题,我已经检查了代码并尝试在 Docker 上运行它,它工作了,它打印出了 hello world。但在 Kubernetes 上不行。

这是 Dockerfile 上的代码

FROM openjdk:8
COPY helloworld.java .
RUN javac helloworld.java
ENTRYPOINT ["java", "helloworld"]

这是简单的 helloworld java 上的代码

public class helloworld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

我的期望是:当我在 Kubernetes 上运行它时,我希望它说它已经准备好了,我可以将它部署到 IP 并显示简单的 hello world。

最佳答案

由于您没有指定如何执行它,我假设您一直在使用 kubectl run (默认情况下创建部署)或定义部署的 list 。如果是这样,那么CrashLoopBackOff是预期的,因为 deployments适用于长时间运行的进程。你的Java代码不是长时间运行的。它打印一些东西然后退出,也就是说,那里没有无限循环。

所以要么做 System.out.println在循环中(中间有 sleep ?)或使用运行命令或用于一次性执行的工作负载类型(例如 jobs )。

顺便说一句,即使进行了部署,您仍然应该能够使用 kubectl logs查看第一次执行的输出。

关于java - Kubernetes 无法通过 Github 从 Docker hub 部署简单镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559489/

相关文章:

java - 在Java中参数是按值传递的吗?

Java 包装比较

amazon-web-services - npm run build 不会在 elasticbeanstalk 上创建构建目录

mysql - 在 docker-compose 中使用 MySQL 初始化 Hibernate 时连接被拒绝

java - 无法到达本地主机 :8080 while running docker image

spring-boot - 检索作为卷挂载的 Kubernetes Secret

kubernetes - 无法在K8S集群上安装Rook

java - 如何比较对象数组列表中的一个值以输出最大值?

kubernetes - 自定义对象状态未找到 Kubernetes

java - 如何追踪银行账户余额?