无法使用 kubernetes jenkins 下载插件(kube-dns 的问题)



我遇到了Jenkins pod和kube-dns的问题。我的Jenkins似乎离线了,我无法安装任何插件,这是因为DNS的原因。

这是我得到的错误:"未知主机异常:updates.jenkins.io">

由于这个错误,我无法下载任何插件,所以我的Jenkins完全没有用。

我已经使用"HostPort"暴露了我的部署,以便在私人IP中拥有我的Jenkins。重要的是要说,这个私有IP可以访问互联网,所以我的pod也应该有它。

这是吊舱的/etc/resolv的内容:

jenkins@jenkins-86b49f4cb4-zchct:/$ cat /etc/resolv.conf
nameserver 10.0.0.10
search default.svc.cluster.local svc.cluster.local cluster.local reddog.microsoft.com
options ndots:5

这是我的kube dns:

[root@azureutils1 ~]# kubectl get svc --namespace kube-system --insecure-skip-tls-verify
NAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE
heapster               ClusterIP   10.0.243.103   <none>        80/TCP          5d
kube-dns               ClusterIP   10.0.0.10      <none>        53/UDP,53/TCP   5d
kubernetes-dashboard   ClusterIP   10.0.237.105   <none>        80/TCP          5d
metrics-server         ClusterIP   10.0.34.149    <none>        443/TCP         5d

因此resolv.conf的IP与kube-dns服务的IP相匹配。如果我使用公共LoadBalancer公开我的Jenkins,我没有这个问题,但我希望我的Jen金斯留在一个私人IP中。

对这个问题有什么想法吗?

问候

发生这种问题是因为您的pod DNS没有配置。可以通过添加来修复

hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet

符合你吊舱的规格。

如果您的意思是解决方案,它取决于您如何设置集群、网络以及如何公开服务。如果使用带helm的GKE中的默认安装过程,则服务将使用ClusterIP作为类型,然后解析就可以了。我的集群策略是部署中的ClusterFirst。

我在kube-dns配置映射中添加了一个条目,用于解析我正在使用的VPC上的名称,但这对于公共名称解析来说是不需要的。

如果你被卡住了,我可以推荐这个开始:

https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/

然后,如果你有一个无法解决的问题,试着用尽可能多的细节更新问题。例如,进入jenkins容器,检查/etc/resolv.conf以及使用了什么名称服务器。默认情况下,它是Kubernetes集群范围内的一个IP,并且该IP设置为通过kube-dns进行解析。

最新更新