首页 > 其他分享 >k8s中coredns访问连接拒绝问题解决

k8s中coredns访问连接拒绝问题解决

时间:2024-08-25 16:04:04浏览次数:7  
标签:kube app 访问 dns coredns k8s root

问题现象

1、节点访问coredns连接拒绝
2、内部pod无法正常进行解析

问题解决思路

  1. 检查 CoreDNS Pod 状态是否正常
[root@k8s-master01 ~]# kubectl get pods -n kube-system -l k8s-app=kube-dns
NAME                       READY   STATUS    RESTARTS   AGE
coredns-7b8d6fc5d7-4cgcp   1/1     Running   1          16h
  1. 检查 CoreDNS 服务是否正常
[root@k8s-master01 ~]# kubectl get svc -n kube-system kube-dns
NAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                  AGE
kube-dns   ClusterIP   115.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   55d

[root@k8s-master01 ~]# kubectl describe svc kube-dns -n kube-system
Name:              kube-dns
Namespace:         kube-system
Labels:            app.kubernetes.io/name=coredns
                   k8s-app=kube-dns
                   kubernetes.io/cluster-service=true
                   kubernetes.io/name=CoreDNS
Annotations:       prometheus.io/port: 9153
                   prometheus.io/scrape: true
Selector:          app.kubernetes.io/name=coredns,k8s-app=kube-dns
Type:              ClusterIP
IP Families:       <none>
IP:                115.96.0.10
IPs:               115.96.0.10
Port:              dns  53/UDP
TargetPort:        53/UDP
Endpoints:         <none>
Port:              dns-tcp  53/TCP
TargetPort:        53/TCP
Endpoints:         <none>
Port:              metrics  9153/TCP
TargetPort:        9153/TCP
Endpoints:         <none>
Session Affinity:  None
Events:            <none>

[root@k8s-master01 ~]# kubectl get endpoints -n kube-system kube-dns
NAME       ENDPOINTS                                           AGE
kube-dns   <none>   55d
You have new mail in /var/spool/mail/root

问题发现

如上发现"ENDPOINTS "为"<none>",意味着没有Pod与coreDNS服务关联

继续排查

查看coredns pod的标签发现没有app.kubernetes.io/name=coredns标签,说明 CoreDNS Pod 的标签与服务的选择器不匹配。这会导致 CoreDNS 服务无法关联到相应的 Pod,从而出现 Endpoints: <none> 的情况

[root@k8s-master01 ~]# kubectl get pods -n kube-system --show-labels | grep coredns
coredns-7b8d6fc5d7-4cgcp                   1/1     Running   1          16h   k8s-app=kube-dns,pod-template-hash=7b8d6fc5d7

解决办法

修改 CoreDNS Deployment 的标签

#找到spec-template-metadata-labels 部分在labels:新增app.kubernetes.io/name: coredns,如下
kubectl edit deployment coredns -n kube-system
labels:
  app.kubernetes.io/name: coredns
  k8s-app: kube-dns

保存后,Kubernetes 重新创建符合新标签的 Pod

问题验证

如下app.kubernetes.io/name: coredns已经加上,ENDPOINTS不为空,访问coreDNS正常,测试DNS 服务工作正常

[root@k8s-master01 ~]# kubectl get pods -n kube-system --show-labels | grep coredns
coredns-7b8d6fc5d7-4cgcp                   1/1     Running   1          16h   app.kubernetes.io/name=coredns,k8s-app=kube-dns,pod-template-hash=7b8d6fc5d7

[root@k8s-master01 ~]# kubectl get endpoints -n kube-system kube-dns
NAME       ENDPOINTS                                           AGE
kube-dns   172.25.92.87:53,172.25.92.87:53,172.25.92.87:9153   55d
You have new mail in /var/spool/mail/root


[root@k8s-master01 ~]# curl http://115.96.0.10:53 -k
curl: (52) Empty reply from server

[root@k8s-master01 ~]# kubectl exec -it  cluster-test-59f585c77c-tbd9b  -- nslookup kubernetes.default.svc.cluster.local
Server:		115.96.0.10
Address:	115.96.0.10#53

Name:	kubernetes.default.svc.cluster.local
Address: 115.96.0.1

标签:kube,app,访问,dns,coredns,k8s,root
From: https://www.cnblogs.com/xgg123/p/18379049

相关文章

  • 修改kubeadm证书过期时间及更新k8s集群证书
    一、为什么要修改kubeadm证书时间Kubernetes官方提供了kubeadm工具安装kubernetes集群,使用这个工具安装集群非常便捷,使部署和升级Kubernetes变得简单起来。不过该工具有点坑的就是,使用其安装的kubernetes集群的大部分证书有效期只有一年,需要在证书过期前,使用更新操作......
  • 初识混沌工程(Chaos Engineering): k8s install chaosblade
    混沌工程文档:https://chaosblade.io/docs/helm:https://github.com/helm/helm/releaseschaosblade:https://github.com/chaosblade-io/chaosblade/releaseschaosblade-box:https://github.com/chaosblade-io/chaosblade-box/releasesmetrics-server:https://gith......
  • k8s新版本使用container而不是docker
    使用Harbor仓库作为Kubernetes集群私有仓库Harbor仓库信息内网地址:hub.rainsc.comIP地址:192.168.66.100问题背景在许多版本的教程中,会建议在Docker的配置中添加忽略证书的列表。然而,截至2024年8月24日,这些教程支持的Kubernetes版本已经无法直接安装。一方......
  • [操作系统]访问一个逻辑地址发生了什么
    当CPU想要访问一个逻辑地址的时候,我们需要做两个步骤,地址转换和内存访问地址转换逻辑地址是程序内部使用的地址,并非真正的物理地址。从逻辑地址到物理地址的映射,由页表来完成,页表的内容包括,逻辑页号,物理页号,有效位,有效位表示这一页是否在内存中。页表存放在内存中,如果需要频繁......
  • 【访问者模式】设计模式系列:解锁复杂对象结构的秘密武器
    文章目录访问者模式详解:理论与实践1.引言1.1访问者模式的历史背景1.2模式的动机与应用场景1.3为什么选择访问者模式2.访问者模式概述2.1定义2.2问题场景2.3模式结构3.模式优缺点分析3.1优点3.2缺点4.访问者模式实现步骤4.1创建抽象元素接口4.2实现具体......
  • k8s介绍-英文版
    目录WhyWhatSynopsisDesignGoalsArchitectureimage1image2image3MainComponetsCoreResoucessomecoreresoucesrelatedcmdsHowImplementationMechanismDataFlowWhyWeneedasetoftoolsandtechnologiesdesignedtoefficientlydeploy,manage,andorchestrateco......
  • 阿里云服务器很久未用,服务访问异常
    很久(大概一两个月)都没在使用自己的个人阿里云服务器,当自己再次访问时,竟然报错无法访问,这让自己很是意外!! 然后自己开始排查问题。登录服务器查看docker服务,发现全部正常。 可是当自己打算重新启动时发现问题,竟然无法重启,这就很奇怪了,服务不都好好的嘛,怎么就不能重启呢。......
  • Docker部署Nginx,无法访问的解决办法
    最近用阿里云的服务器部署了一下Nginx,发现无法通过外网访问,排除掉防火墙和端口映射的问题,最终在阿里云官方发现解决办法,docker0网桥的网段与内网eth0网段冲突,可能导致Nginx无法访问,修改Docker的网段后正常访问.1.运行以下命令,查看docker0和eth0网段是否冲突route如果回显信......
  • K8S之Ingress
    IngressService一般情况下只作用内部Pod的代理调度,如果只指定一个NodeIP,随着业务量增大,这个Node压力就会很大,这时可能会在前端加一个代理,代理几个Node。在应用小的情况下,这种架构还能接受。但如果有大量应用的话,我们就需要管理大量的NodePort,这时就需要Ingress来解决Ingre......
  • K8S之Ingress常用Nginx、Traefik示例
    NginxIngress创建Pod、Service,定义如下nginx-ingress-demo.yamlapiVersion:extensions/v1beta1kind:Deploymentmetadata:name:nginx-deploynamespace:defaultspec:replicas:3selector:matchLabels:app:nginx-demoreplease:canary......