[问题已处理]-k8s显示flannel pod异常
CNI(Container Network Interface)是容器网络接口,它定义了容器运行时与容器网络插件之间的交互方式。因此,为了确保 CNI 网卡能够正常工作,必须配置适当的网关,并确保网络连接正常。同时,还需要注意配置正确的网络参数,如 IP 地址、子网掩码、路由表等,以确保容器能够正确地连接到网络并进行通信。网关是连接两个网络的设备或软件,它负责在不同网络之间进行数据包的转发和路由。
导语:所有pod报错,查看flannel的状态是一场crashloopbackoff状态。是内部服务器没有设置ip,也因此没有设置网关。
排查过程
先删除重建flannel。中途namespace 夯住了 使用下面命令强制删除
kubectl get namespace kube-flannel -o json \
| tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
| kubectl replace --raw /api/v1/namespaces/kube-flannel/finalize -f -
flannel报错
root@ubuntu:/srv# kubectl logs -f kube-flannel-ds-ffgrn -n kube-flannel
Error from server: Get "https://172.16.29.105:10250/containerLogs/kube-flannel/kube-flannel-ds-ffgrn/kube-flannel?follow=true": dial tcp 172.16.29.105:10250: connect: network is unreachable
这个ip应该是发货前测试的ip,现在ip已经不是这个了。
通过journalctl -f -exu kubelet
看到报错/run/flannel/subnet.env不存在
手动创建并输入以下内容
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
重启kubelet 删除flannel pod之后依旧报错
Mar 01 15:15:15 ubuntu kubelet[325075]: E0301 15:15:15.440357 325075 kubelet_node_status.go:586] “Failed to set some node status fields” err=“can’t get ip address of node ubuntu. error: no default routes found in “/proc/net/route” or “/proc/net/ipv6_route”” node=“ubuntu”
对比/proc/net/route以及执行route -n 发现路由缺一条到网关的。
CNI 网卡在没有网关的情况下无法正常工作。CNI(Container Network Interface)是容器网络接口,它定义了容器运行时与容器网络插件之间的交互方式。在 Kubernetes 等容器编排平台中,CNI 插件负责为容器分配 IP 地址、配置网络路由等任务。
网关是连接两个网络的设备或软件,它负责在不同网络之间进行数据包的转发和路由。没有网关,容器将无法与其他网络或主机进行通信,因此 CNI 网卡也无法正常工作。
因此,为了确保 CNI 网卡能够正常工作,必须配置适当的网关,并确保网络连接正常。同时,还需要注意配置正确的网络参数,如 IP 地址、子网掩码、路由表等,以确保容器能够正确地连接到网络并进行通信。
添加一个任意路由后重启网络。k8s服务恢复
更多推荐
所有评论(0)