已关闭此问题为not about programming or software development。它目前不接受回答。
这个问题似乎不是关于a specific programming problem, a software algorithm, or software tools primarily used by programmers的。如果你认为这个问题与another Stack Exchange site的主题有关,你可以留下评论,解释在哪里可以回答这个问题。
4天前关闭。
Improve this question
我使用下一个命令来检查我的k8s中的dns问题:
kubectl apply -f https://k8s.io/examples/admin/dns/dnsutils.yaml
kubectl exec -i -t dnsutils -- nslookup kubernetes.default
nslookup结果为:
;; connection timed out; no servers could be reached
command terminated with exit code 1
dnsutils.yaml:
apiVersion: v1
kind: Pod
metadata:
name: dnsutils
namespace: default
spec:
containers:
- name: dnsutils
image: gcr.io/kubernetes-e2e-test-images/dnsutils:1.3
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
restartPolicy: Always
**注意:**这是一台默认禁用所有端口的机器,所以我问我们的IT管理员是否已经根据下一个doc check-required-ports打开了端口,我不确定这是否重要。
然后用下一个我可以得到核心的pod ip。
kubectl get pods -n kube-system -o wide | grep core
coredns-7877db9d45-swb6c 1/1 Running 0 2m58s 10.244.1.8 node2 <none> <none>
coredns-7877db9d45-zwc8v 1/1 Running 0 2m57s 10.244.0.6 node1 <none> <none>
在这里,10.244.0.6
是我的主节点,而10.244.1.8
是我的工作节点。
然后,如果我直接指定coredns pod ip:
主节点ok:
kubectl exec -i -t dnsutils -- nslookup kubernetes.default 10.244.0.6
Server: 10.244.0.6
Address: 10.244.0.6#53
Name: kubernetes.default.svc.cluster.local
Address: 10.96.0.1
工作节点不正常:
# kubectl exec -i -t dnsutils -- nslookup kubernetes.default 10.244.1.8
;; connection timed out; no servers could be reached
command terminated with exit code 1
所以,问题缩小到为什么工作节点上的COREDNS不工作?有什么需要注意的吗?
环境:
- 操作系统:Ubuntu 18.04
- K8S:v1.21.0
- 群集 Boot 命令:
kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
2条答案
按热度按时间slsn1g291#
最后,我找到了根本原因,这是硬件防火墙的问题,看到这个:
防火墙
当使用udp后端时,flannon使用UDP端口8285发送封装的数据包。
当使用vxlan后端时,内核使用UDP端口8472发送封装的数据包。
确保您的防火墙规则允许参与覆盖网络的所有主机使用此流量。
确保您的防火墙规则允许来自pod network cidr的流量访问您的kubernetes主节点。
nslookup client
在dns server
的同一个节点上时,它不会触发防火墙阻止,所以一切正常。nslookup client
不在dns server
的同一个节点上时,就会触发防火墙封锁,导致我们无法访问dns服务器。所以,打开端口后,现在一切都好了。
mf98qq942#
在我的情况下,我使用的是亚马逊的Kubernetes(EKS),这个错误是由于一个糟糕的安全组。使用AWS托管节点组的默认启动模板修复了该问题。