gpt4 book ai didi

jenkins - Kubernetes Jenkins 插件 - slaves 总是离线

转载 作者:IT老高 更新时间:2023-10-28 21:25:19 26 4
gpt4 key购买 nike

我正在尝试使用 Jenkins/Kubernetes 插件与 Jenkins 协调 docker slaves。

我正在使用这个插件:https://github.com/jenkinsci/kubernetes-plugin

我的问题是所有的slave都离线了,所以作业无法执行:

Slave status

enter image description here

我已经在我的本地机器上使用 minikube 以及在我们的操作组托管的 K8 集群上进行了尝试。我已经尝试过 Jenkins 1.9 和 Jenkins 2。我总是得到相同的结果。截图来自 Jenkins 1.642.4, K8 v1.2.0

这是我的配置...请注意,当我单击“测试连接”时,我会成功。另请注意,我不需要任何凭据(这是我能看到的与记录示例的唯一区别)。

Jenkins System Configuration

Jenkins 日志一遍又一遍地显示以下内容:

    Waiting for slave to connect (11/100): docker-6b55f1b7fafce
Jul 20, 2016 5:01:06 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud$ProvisioningCallback call
Waiting for slave to connect (12/100): docker-6b55f1b7fafce
Jul 20, 2016 5:01:07 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud$ProvisioningCallback call
Waiting for slave to connect (13/100): docker-6b55f1b7fafce
Jul 20, 2016 5:01:08 PM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud$ProvisioningCallback call

当我运行 kubectl get events 我看到这个:

24s         24s        1         docker-6b3c2ff27dad3   Pod                                Normal    Scheduled           {default-scheduler }      Successfully assigned docker-6b3c2ff27dad3 to 96.xxx.xx.159
24s 23s 2 docker-6b3c2ff27dad3 Pod Warning MissingClusterDNS {kubelet 96.xxx.xx.159} kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy.
23s 23s 1 docker-6b3c2ff27dad3 Pod spec.containers{slave} Normal Pulled {kubelet 96.xxx.xx.159} Container image "jenkinsci/jnlp-slave" already present on machine
23s 23s 1 docker-6b3c2ff27dad3 Pod spec.containers{slave} Normal Created {kubelet 96.xxx.xx.159} Created container with docker id 82fcf1bd0328
23s 23s 1 docker-6b3c2ff27dad3 Pod spec.containers{slave} Normal Started {kubelet 96.xxx.xx.159} Started container with docker id 82fcf1bd0328

有什么想法吗?

更新:csanchez 建议的更多日志信息

 ➜  docker git:(master) ✗ kubectl get pods --namespace default -o wide
NAME READY STATUS RESTARTS AGE NODE
docker-6bb647254a2a4 1/1 Running 0 1m 96.x.x.159

➜ docker git:(master) ✗ kubectl log docker-6bafbac10b392

Jul 20, 2016 6:45:10 PM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to 96.x.x.159:50000 (retrying:10)
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

我得看看这个50000端口是干什么用的??

最佳答案

在 Kubernetes 中运行 jenkins 时,jenkins master 和 slave 都可以解析服务名。

最好的配置方法是使用内部 DNS 并将 jenkins url 设置为:

http://jenkins:8080

(假设你调用了你的服务 jenkins,并且你在服务上的端口是 8080)

不需要隧道。

这种方法的好处是它可以在 jenkins 重新启动后不重新配置。

第二个好处是您不必将 Jenkins 暴露给外界,从而限制了安全风险。

关于jenkins - Kubernetes Jenkins 插件 - slaves 总是离线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38486848/

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