[问题已处理]-k8s coredns报错server can‘t resolve kubernetes.default

导语:第一次二进制安装k8s,安装完coredns发现pod无法ping通内网和外网
报错 nslookup: can’t resolve ‘kubernetes.default’

排查流程如下

1、 首先查看coredns是否有报错(运行正常)

kubectl get pod -n kube-system

2、查看coredns日志

kubectl logs --tail 100 -f $coredns-podname -n kube-system

3、按照官网上的步骤,添加一个简单的pod,然后验证

kubectl run -it --rm dns-test --image=busybox:1.28.4 sh
# 进入容器执行
nslookup kubernetes.default

4、查看pod中dns的配置是否正常,pod中的dns配置,在etc/resolv.conf中

cat /etc/resolv.conf

5、打开coredns的日志配置,重新请求域名解析,查看日志

 kubectl -n kube-system edit configmap coredns

# 添加一个log
 apiVersion: v1
data:
  Corefile: |
    .:53 {
        log     # 添加log
        errors
        health
        kubernetes cluster.as-gmbh.de in-addr.arpa ip6.arpa {
           pods verified
           upstream
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        ready :8181
        forward .  172.18.2.21
        cache 30
        loop
        reload
        loadbalance
    }

6、排查kube-proxy 日志

根据报错安装

yum install conntrack-tools -y

并不是这个问题。继续排查,修改svc的ip之后

发现svc的ip依旧和我nameserver的ip不一致。

nameserver存储的是kube-dns的Service IP

发现自己在安装的时候 抄作业的时候ip写死了 没换

cat > /opt/kubernetes/cfg/kubelet-config.yml << EOF
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
address: 0.0.0.0
port: 10250
readOnlyPort: 10255
cgroupDriver: cgroupfs
clusterDNS:
- 10.0.0.2
clusterDomain: cluster.local 
failSwapOn: false
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 2m0s
    enabled: true
  x509:
    clientCAFile: /opt/kubernetes/ssl/ca.pem 
authorization:
  mode: Webhook
  webhook:
    cacheAuthorizedTTL: 5m0s
    cacheUnauthorizedTTL: 30s
evictionHard:
  imagefs.available: 15%
  memory.available: 100Mi
  nodefs.available: 10%
  nodefs.inodesFree: 5%
maxOpenFiles: 1000000
maxPods: 110
EOF
kubectl run -it --rm dns-test --image=busybox:1.28.4 sh

其他报错

ping外网可以了 内网还是有问题 用的镜像有问题。换成–image=busybox:1.28.4就可以

kubectl run -it --rm dns-test --image=busybox  sh


使用该方式更新内容后,重启系统失败
更新,在查看罗列的版本后使用以下命令更新内核至最新版本

yum --enablerepo=elrepo-kernel install kernel-ml -y
reboot

1、ELRepo有两种类型的Linux内核包,kernel-lt和kernel-ml。 他们之间有什么区别? kernel-ml软件包是根据Linux Kernel Archives的主线稳定分支提供的源构建的。 内核配置基于默认的RHEL-7配置,并根据需要启用了添加的功能。 这些软件包有意命名为kernel-ml,以免与RHEL-7内核发生冲突,因此,它们可以与常规内核一起安装和更新。 kernel-lt包是从Linux Kernel Archives提供的源代码构建的,就像kernel-ml软件包一样。 不同之处在于kernel-lt基于长期支持分支,而kernel-ml基于主线稳定分支。

2、重启系统
3、查看内核
4、验证问题是否解决

参考

https://blog.csdn.net/victor_monkey/article/details/107671185

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值