在部署一个replicas:4的nginx deployment以后在master节点经过curl + podIP + 端口的形式测试时,发现两次访问不到,两次能够访问获得。html
一、经过ping pod的ip地址,发现node1节点的pod全都ping不通,问题颇有可能就出在node1节点上node
二、经过ip a查看node1节点发现flannel.1没有ip地址,可能缘由就出如今这。nginx
三、刚开始觉得是iptables规则可能致使节点flannel网络没起来,因而就把iptables规则全清了,重启了kubelet后发现仍是没有flannel网络。shell
四、而后在master节点经过kubectl logs -f -n kube-system kube-flannel的Pod来查看对应node1的flannel Pod的日志发现一个错误日志,仍是网络down掉了bash
failed to add vxlanRoute (10.244.0.0/24 -> 10.244.0.0): network is down网络
五、尝试将node1节点的flannel.1网络删除,在node1节点上执行app
ip link delete flannel.1
六、在 /etc/sysctl.conf 中 设置 net.ipv4.ip_forward=1,开启路由功能。curl
七、将node1的网卡重启ide
systemctl restart network
八、在master节点上删掉flannel的Pod,从新启动flannel的yaml文件测试
kubectl delete -f kube-flannel.yml kubectl apply -f kube-flannel.yml
九、经过ip a查看node1节点的IP,发现flannel.1果真有IP地址了
flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default
link/ether ce:86:ca:01:e0:3f brd ff:ff:ff:ff:ff:ff
inet 10.244.1.0/32 scope global flannel.1
valid_lft forever preferred_lft forever
十、在master节点ping node1节点上的Pod发现能够ping通,经过kubectl exec -it dep-with-healthycheck-55f68fd487-d /bin/bash 命令进入其中的一个pod使用
curl -I 10.244.2.90命令测试与其余Pod通不通,发现也是通的。
[root@master test]# kubectl exec -it dep-with-healthycheck-55f68fd487-df2xm /bin/bash
root@dep-with-healthycheck-55f68fd487-df2xm:/# curl -I 10.244.2.90
HTTP/1.1 200 OK
Server: nginx/1.19.1
Date: Sun, 02 Aug 2020 14:54:11 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 07 Jul 2020 15:52:25 GMT
Connection: keep-alive
ETag: "5f049a39-264"
Accept-Ranges: bytes