报错现象:
在master节点上查看pod网络获得IP后,在node节点上自带的浏览器中访问时出现不了nginx的页面

1、获取pod网络的IP

[root@master1 ~]# kubectl get pods -o wide
NAME                    READY   STATUS    RESTARTS   AGE    IP            NODE             NOMINATED NODE
nginx-dbddb74b8-fskqq   1/1     Running   1          157m   172.17.63.2   192.168.200.40   <none>

2、在对应网段的node节点上可以访问,但是在另外一台Node节点上访问不了。按照之前做的flannel网络,两个节点之间是可以ping通的,所以按照逻辑是可以在另外一台node节点上进行nginx网页的访问的

解决思路:
1、因为之前我的这台不能访问nginx网页的node节点的network网卡丢失了。我使用一下命令将网卡找回:

service NetworkManager stop       #关闭 NetworkManger 服务
chkconfig NetworkManager off      #永久关闭 Manager网卡
service network restart           #重启network网卡

2、我就在思考,是不是因为网卡重新找回了,导致相关联的flannel网桥产生了变化,此时我使用systemctl status flannel命令查看flannel的状态,发现已经done掉了。此时我重新启动了flannel、network与docker,使flannel重新恢复到active状态,但是还是在该节点上不能访问nginx网页。

3、然后我使用ip a命令查看了该出错节点的ip,发现flannel 的ip和之前首次获取时的ip不一致了。所以我得出结论:网卡丢失以后使用命令重新找回网卡后,导致之前分配的flannel的ip产生了变化,重新分配了一个新的ip,但是另外 一个正常的node的ip还是之前分配的ip,没有变化,导致两个节点之间不能进行正常的通信。
4、为了验证我上面的猜想,我在node1节点上使用ping 命令ping node2节点的flnnel的ip,发现确实是已经ping不通了。说明我的结论是正确的。
5、此时解决以上问题就是将K8S中flannel部分再重新在所有节点上重新部署一遍。部署详细命令可以参考之前写的博客《简单易懂的Kubernetes(K8S)单节点二进制部署详细步骤》博客链接
以下为我操作解决错误时使用的命令:

1、开启flannel网络功能(所有节点)

[root@localhost ~]# bash flannel.sh https://192.168.200.10:2379,https://192.168.200.40:2379,https://192.168.200.60:2379

2、重启docker服务(所有节点)

systemctl daemon-reload
systemctl restart docker

3、测试ping通对方docker0网卡 证明flannel起到路由作用

[root@node1 ~]# ping 172.17.86.1
PING 172.17.86.1 (172.17.86.1) 56(84) bytes of data.
64 bytes from 172.17.86.1: icmp_seq=1 ttl=64 time=0.513 ms
64 bytes from 172.17.86.1: icmp_seq=2 ttl=64 time=0.324 ms

4、查看状态

[root@master1 ~]#  kubectl get pods
NAME                    READY   STATUS              RESTARTS   AGE
nginx-dbddb74b8-fskqq   0/1     ContainerCreating   0          21s

[root@master2 cfg]# kubectl get pods
NAME                    READY   STATUS    RESTARTS   AGE
nginx-dbddb74b8-fskqq   1/1     Running   0          56s

5、查看pod网络

[root@master1 ~]# kubectl get pods -o wide
NAME                    READY   STATUS    RESTARTS   AGE    IP            NODE             NOMINATED NODE
nginx-dbddb74b8-fskqq   1/1     Running   1          157m   172.17.63.2   192.168.200.40   <none>

6、在对应网段的node节点上操作可以直接访问

[root@node1 ~]# curl 172.17.63.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐