我在AWS的同一网络中运行了Jenkins和Kubernetes集群。詹金斯拥有它自己的实例。
使用推荐的JNLP泊坞窗图像。 Jenkins JNLP端口配置为静态5000
。
现在,当我开始工作时,它向我显示节点处于脱机状态。当我点击离线节点时,我得到了这个:
这让我去了k8集群。运行docker ps
表示没有容器在运行。但是:
从那里我去找到什么docker容器运行以及之后记录的日志:
我用: https://github.com/jenkinsci/docker-jnlp-slave为图片
https://github.com/jenkinsci/kubernetes-plugin
Jenkins版本:2.27
k8:hyperkube:v1.4.3_coreos.0
Jenkins确实启动了容器,我猜它运行并且错误输出,因为在容器运行期间没有提供有效的参数?我需要它是一个放手的过程,我不必登录我的容器(Java客户端)。我该如何实现这一目标?
更新
基于这个答案:kubernetes slaves cannot register to jenkins master
如果我登录容器并运行Jenkins在无法连接的主机下显示的命令:
java -jar /usr/share/jenkins/slave.jar -jnlpUrl https://test.myhost.com/computer/jenkinsminions-10f0b7d49054ac/slave-agent.jnlp -secret 62637e83008f50eb94483ad609e9a2719d313fa56e640e4beca9eebeaf0b1af2
容器通过JNLP2连接并运行作业。
答案 0 :(得分:1)
容器日志中是否有Root目录不可写消息?
[...]
Exception in thread "main" java.lang.RuntimeException: Root directory not writable
at hudson.remoting.FileSystemJarCache.<init>(FileSystemJarCache.java:44)
at hudson.remoting.Engine.<init>(Engine.java:139)
at hudson.remoting.jnlp.Main.createEngine(Main.java:164)
at hudson.remoting.jnlp.Main.main(Main.java:148)
at hudson.remoting.jnlp.Main._main(Main.java:144)
at hudson.remoting.jnlp.Main.main(Main.java:110)
在这种情况下,您可能遇到与this类似的问题。
PS:如果您看不到日志,请尝试删除&#34;分配假设&#34;选项