导语:第一次二进制安装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