Raspberry Pi 4- coredns 问题上的 Kubernetes 集群



我在Raspberry Pi 4上设置Kubernetes集群时遇到问题。

我无法从豆荚内部访问互联网

我正在尝试使用法兰绒

我在树莓派 3 上使用相同的设置,没有问题,所以我认为我的网络没有任何问题。

问题似乎出在coredns上,日志显示以下内容:

pi@rpi4-reg:~ $ kubectl -n kube-system logs coredns-6955765f44-wvsz4
.:53
[INFO] plugin/reload: Running configuration MD5 = 4e235fcc3696966e76816bcd9034ebc7
CoreDNS-1.6.5
linux/arm, go1.13.4, c2fd1b2
[ERROR] plugin/errors: 2 1228749791.1011458686. HINFO: read udp 10.244.0.3:41212->4.2.2.1:53: i/o timeout
[ERROR] plugin/errors: 2 1228749791.1011458686. HINFO: read udp 10.244.0.3:33647->192.168.2.1:53: i/o timeout
[ERROR] plugin/errors: 2 1228749791.1011458686. HINFO: read udp 10.244.0.3:33755->4.2.2.1:53: i/o timeout
[ERROR] plugin/errors: 2 1228749791.1011458686. HINFO: read udp 10.244.0.3:55151->192.168.2.1:53: i/o timeout
[ERROR] plugin/errors: 2 1228749791.1011458686. HINFO: read udp 10.244.0.3:50820->4.2.2.1:53: i/o timeout
[ERROR] plugin/errors: 2 1228749791.1011458686. HINFO: read udp 10.244.0.3:56227->192.168.2.1:53: i/o timeout
[ERROR] plugin/errors: 2 1228749791.1011458686. HINFO: read udp 10.244.0.3:48078->192.168.2.1:53: i/o timeout
[ERROR] plugin/errors: 2 1228749791.1011458686. HINFO: read udp 10.244.0.3:52120->192.168.2.1:53: i/o timeout
[ERROR] plugin/errors: 2 1228749791.1011458686. HINFO: read udp 10.244.0.3:48378->192.168.2.1:53: i/o timeout
[ERROR] plugin/errors: 2 1228749791.1011458686. HINFO: read udp 10.244.0.3:59986->192.168.2.1:53: i/o timeout

coredns 配置文件

apiVersion: v1
data:
Corefile: |
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
kind: ConfigMap
metadata:
creationTimestamp: "2020-01-17T08:26:29Z"
name: coredns
namespace: kube-system
resourceVersion: "188"
selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
uid: 287d7906-f126-4fd3-8937-b98cf9ea8833

resolv.conf

nameserver 4.2.2.1
nameserver 192.168.2.1

好的,我为此苦苦挣扎了将近 2 天,问题是在法兰绒中使用不同的 CIDR 与我在kubeadm init中使用的 CIDR 相比。

kubeadm init我使用 CIDR10.0.0.0/16flannel我使用默认10.244.0.0/16。以下是我使用的详细信息和命令;

# Initializing kubeadm
kubeadm init --apiserver-advertise-address=192.168.1.31 --pod-network-cidr=10.0.0.0/16
# Installing flannel using default config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

检查kube-flannel-cfg配置图,我注意到 CIDR 与kubeadm init不同,如下所示。

net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}

因此,解决方案是更新配置映射 CIDR 网络,以匹配您在初始化 Kubernetes 集群时使用的网络。

不要忘记删除所有flannelPod 以获取新配置。

kubectl delete pods -l app=flannel -n kube-system

有用的调试步骤。我安装了DNS Utils,用于在Kubernetes中调试DNS,如此处所述。

kubectl apply -f https://k8s.io/examples/admin/dns/dnsutils.yaml

部署DNS实用程序后,您可以首先查找Google以检查DNS本身或法兰绒网络是否存在问题。

kubectl exec -i -t dnsutils -- nslookup google.com

如果DNS正确查找了Google,那么您将继续调试网络配置(可以是像我这样的CIDR,iptables,防火墙或其他东西(

kubectl exec -i -t dnsutils -- ping google.com -c 4

最新更新