gpt4 book ai didi

docker - Kubernetes - Jenkins slave 离线

转载 作者:行者123 更新时间:2023-12-02 12:17:10 28 4
gpt4 key购买 nike

我正在尝试使用 kubernetes 运行 jenkins。我能够使用 jenkins kubernetes 插件成功连接到 kubernetes。现在,我正在运行一个管道示例,但是在运行时,我总是收到一条错误消息:

Still waiting to schedule task
‘default-amd64-cm2rx’ is offline

它卡在那里。如果我使用 kubectl get pods 检查 pod ,我看到 pod default-amd64-cm2rx正在运行,然后状态更改为已完成,然后它就消失了。然后另一个具有相似名称的 pod,开始并完成,循环继续。这些 pod 的最后一个状态是:
Normal  Created    10s   kubelet, xx.xx.xx.xx  Created container
Normal Started 10s kubelet, xx.xx.xx.xx Started container

如果我检查 jenkins 日志,我会收到如下错误:
Mar 09, 2019 8:47:42 AM org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher launch
WARNING: Error in provisioning; agent=KubernetesSlave name: default-amd64-g5bgh, template=PodTemplate{inheritFrom='', name='default-amd64', namespace='', label='jenkins-latest-jenkins-slave-amd64', nodeSelector='beta.kubernetes.io/arch=amd64', nodeUsageMode=NORMAL, workspaceVolume=EmptyDirWorkspaceVolume [memory=false], volumes=[HostPathVolume [mountPath=/var/run/docker.sock, hostPath=/var/run/docker.sock]], containers=[ContainerTemplate{name='jnlp', image='myregistry;8500/jenkins-slave:latest', workingDir='/home/jenkins', command='/bin/sh -c', args='cat', resourceRequestCpu='200m', resourceRequestMemory='256Mi', resourceLimitCpu='200m', resourceLimitMemory='256Mi', livenessProbe=org.csanchez.jenkins.plugins.kubernetes.ContainerLivenessProbe@1e7ac0a6}], yaml=}
java.lang.IllegalStateException: Pod has terminated containers: default/default-amd64-g5bgh (jnlp)
at org.csanchez.jenkins.plugins.kubernetes.AllContainersRunningPodWatcher.periodicAwait(AllContainersRunningPodWatcher.java:149)
at org.csanchez.jenkins.plugins.kubernetes.AllContainersRunningPodWatcher.periodicAwait(AllContainersRunningPodWatcher.java:170)
at org.csanchez.jenkins.plugins.kubernetes.AllContainersRunningPodWatcher.await(AllContainersRunningPodWatcher.java:122)
at org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher.launch(KubernetesLauncher.java:121)
at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:293)
at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:71)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

这是我的 kuebrnetes 插件配置:

enter image description here

如,您可以看到连接成功,并且 Pod 正在生成。

知道为什么它保持离线状态吗? TIA。

最佳答案

jnlp 可能会尝试为从属服务器和 Kubernetes 使用相同的端口,因为看起来您的 pod 正在终止,而您正在从属服务器上运行此作业。将 jnlp 设置为使用随机端口,这样您就可以保证没有冲突。

在 Jenkins 中,它位于配置安全性下。

来自 Jenkins 文档:
https://jenkins.io/doc/book/managing/security/

JNLP TCP 端口

Jenkins 使用 TCP 端口与通过 JNLP 协议(protocol)启动的代理(例如基于 Windows 的代理)进行通信。从 Jenkins 2.0 开始,默认情况下禁用此端口。

对于希望使用基于 JNLP 的代理的管理员,两个端口选项是:

随机:JNLP 端口是随机选择的,以避免在 Jenkins 主服务器上发生冲突。随机 JNLP 端口的缺点是它们是在 Jenkins 主机启动期间选择的,因此很难管理允许 JNLP 流量的防火墙规则。

已修复:JNLP 端口由 Jenkins 管理员选择,并且在 Jenkins 主服务器重新启动时保持一致。这使得管理允许基于 JNLP 的代理连接到主服务器的防火墙规则变得更加容易。

关于docker - Kubernetes - Jenkins slave 离线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55075693/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com