为了账号安全,请及时绑定邮箱和手机立即绑定

库伯内特无法通过 Github 从 Docker 中心部署简单的映像

库伯内特无法通过 Github 从 Docker 中心部署简单的映像

慕哥6287543 2022-09-22 19:56:19

我对这类东西非常陌生,对库伯内特和 Docker 很陌生,但已经在 Java 上有一些经验了。


我尝试通过将其连接到GitHub来使用多克中心。


在我的Git中心上,只有2个代码:


泊坞文件

简单的你好世界爪哇代码。

每次我在库伯内特上运行它并使用 kubectl 获取 pod 进行检查时,我总是会得到崩溃的回扣。


我不明白有什么问题,我已经检查了代码并尝试在Docker上运行它,它可以工作,它打印出来你好世界。但不是在库伯内特斯。


这是多克文件上的代码


FROM openjdk:8

COPY helloworld.java .

RUN javac helloworld.java

ENTRYPOINT ["java", "helloworld"]

这是简单你好世界爪哇的代码


public class helloworld {

    public static void main(String[] args) {

        System.out.println("Hello World!");

    }

}

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


查看完整描述

3 回答

?
回首忆惘然

TA贡献1534条经验 获得超10个赞

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

因此,要么执行 in 循环(中间有睡眠?),要么使用运行命令或用于一次性执行的工作负载类型(如作业)。System.out.println

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


查看完整回答
反对 回复 2022-09-22
?
慕妹3242003

TA贡献1486条经验 获得超6个赞

假设一些事情也是如此。假设映像运行正常,并且唯一的问题是在没有进程运行时 Docker 容器被关闭,您所要做的就是强制进程运行一段时间。

因此,您可以执行以下操作:

kubectl run hello-world --image YOUR-IMAGE sleep 100

这将创造一个你好的世界。Pod 将运行 100 秒,然后死亡,并且将创建一个新容器 100 秒,依此类推。deploymenthello-world-xxxxxx-xxxx

当您收到确认时,您将执行以下操作:

kubectl get po

复制 Pod 的名称,并获取日志:

kubectl logs YOUR-POD-NAME

你应该看到你好的世界。


查看完整回答
反对 回复 2022-09-22
?
元芳怎么了

TA贡献1457条经验 获得超7个赞

您需要提供复制、运行和入口点命令的位置。在文件名前面加上路径,比如说

复制你好世界.java/你好世界.java运行爪哇/你好世界.java入口点[“爪哇”,“/你好世界]


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信