我昨天注意到 Kubernetes 的以下情况。我必须使用 kubeadm 在 Redhat 7.3 OS 上安装 Kubernetes。作为网络插件,我使用法兰绒。一切都很顺利,直到我发现我的 DNS pod 无法启动并出现以下错误:
Normal SandboxChanged 13m (x42200 over 13h) kubelet, k8s-master Pod sandbox changed, it will be killed and re-created.
Warning FailedCreatePodSandBox 3m (x42687 over 13h) kubelet, k8s-master Failed create pod sandbox.
我检查了我的 cni 界面,发现以下内容:
cni0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:00:00:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
没有IP地址和mac。然后我检查了目录/var/lib/cni/networks/cbr0/。有一些文件对应于由 flannel 分配给该主机的网络 10.244.0.0/24。
然后我检查了日志:
journalctl -xe | grep cni
Jan 24 20:35:02 k8s-master kubelet[3353]: E0124 20:35:02.979434 3353 cni.go:259] Error adding network: open /proc/sys/net/ipv6/conf/eth0/accept_dad: no such file or directory
Jan 24 20:35:02 k8s-master kubelet[3353]: E0124 20:35:02.979452 3353 cni.go:227] Error while adding to cni network: open /proc/sys/net/ipv6/conf/eth0/accept_dad: no such file or directory
Jan 24 20:35:03 k8s-master kubelet[3353]: E0124 20:35:03.260145 3353 remote_runtime.go:92] RunPodSandbox from runtime service failed: rpc error: code = Unknown desc = NetworkPlugin cni failed to set up pod "kube-dns-6f4fd4bdf-mcztl_kube-system" network: open /proc/sys/net/ipv6/conf/eth0/accept_dad: no such file or directory
所以有些东西连接到 ipv6 但我不知道为什么,因为我们不使用 IPv6 协议。然后我在内核级别检查了 IPv6 模块,发现它被禁用了:
GRUB_CMDLINE_LINUX="ipv6.disable=1"
只是为了测试,我尝试启用它,它帮助 pod 获得了 IP 一切变得正常。
有人可以澄清这种情况,也许你面临同样的问题?如果我不使用 IPv6,为什么我不能禁用它?
先感谢您。