Kubernetes-flannelは容器をpingできません

8549 ワード

flannelサービスはdockerとpodアドレスに割り当てる仮想ネットワークを生成します.したがってdockerが存在するシンクホストとk 8 sで生成されたpodのアドレスは互いにpingすることができる.ネットワークが通じないとpod間の通信に影響します.
1.検査
1.1ホスト間で、master node 1 node 2 flannleアドレスが通じているかどうかを確認します.
ホスト間で通信状況を確認する
 [root@master ~]# ping node1
PING node1 (192.168.0.72) 56(84) bytes of data.
64 bytes from node1 (192.168.0.72): icmp_seq=1 ttl=64 time=0.851 ms
64 bytes from node1 (192.168.0.72): icmp_seq=2 ttl=64 time=0.420 ms

Node 1のdocker 0アドレスは10.0.58.1です
[root@node1 ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1472
        inet 10.0.58.1  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::42:55ff:fe9d:b2da  prefixlen 64  scopeid 0x20<link>
        ether 02:42:55:9d:b2:da  txqueuelen 0  (Ethernet)
        RX packets 54  bytes 3784 (3.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22  bytes 1916 (1.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 
flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1472
        inet 10.0.58.0  netmask 255.255.0.0  destination 10.0.58.0
        inet6 fe80::43d1:10c7:a30b:bf88  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 15  bytes 1260 (1.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15  bytes 1152 (1.1 KiB)
[root@master ~]# ping 10.0.58.1
PING 10.0.58.1 (10.0.58.1) 56(84) bytes of data.
64 bytes from 10.0.58.1: icmp_seq=1 ttl=62 time=1.04 ms
64 bytes from 10.0.58.1: icmp_seq=2 ttl=62 time=0.627 ms

1.2ホストとpod間の通信のチェック
[root@master ~]# kubectl get pod -o wide
NAME            READY     STATUS    RESTARTS   AGE       IP          NODE
httpdrc-2zv0t   1/1       Running   0          19m       10.0.82.3   node2
httpdrc-4k1bv   1/1       Running   0          19m       10.0.82.2   node2
httpdrc-4zrgv   1/1       Running   0          19m       10.0.58.2   node1

任意のpodアドレスを選択し、ping
[root@master ~]# ping 10.0.82.3 
PING 10.0.82.3 (10.0.82.3) 56(84) bytes of data.
64 bytes from 10.0.82.3: icmp_seq=1 ttl=61 time=3.49 ms
64 bytes from 10.0.82.3: icmp_seq=2 ttl=61 time=0.475 ms

2.ping podが通じない
2.1 flanneldが起動しているかどうかを確認する
flanneldサービスを起動しない場合、ifconfigコマンドを実行してflannel仮想ネットワークがない場合、
[root@master ~]# systemctl status flanneld.service 
● flanneld.service - Flanneld overlay address etcd agent
   Loaded: loaded (/usr/lib/systemd/system/flanneld.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-05-15 15:19:24 CST; 44min ago
 Main PID: 10049 (flanneld)
   CGroup: /system.slice/flanneld.service
           └─10049 /usr/bin/flanneld -etcd-endpoints=http://master:2379 -etcd-prefix=/coreos.com/network -iface=en

2.2 master etcdでpodサブネットの割り当て状況を検査する
[root@master ~]# etcdctl ls /coreos.com/network/subnets
/coreos.com/network/subnets/10.0.21.0-24
/coreos.com/network/subnets/10.0.82.0-24
/coreos.com/network/subnets/10.0.58.0-24

2.3経路検査
それぞれマスターとnodeでrouteをチェックし、flannelサブネットがあれば問題ありません
[root@master ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 ens33
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 flannel0
10.0.21.0       0.0.0.0         255.255.255.0   U     0      0        0 docker0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@node1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 ens33
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 flannel0
10.0.58.0       0.0.0.0         255.255.255.0   U     0      0        0 docker0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33

存在しない場合は、ルートを入力します.
 [root@node1 ~]# route add -net 10.0.0.0 netmask  255.255.0.0 dev flannel0

ルーティングを追加したら、flannalサービスを再起動します.
2.4仮転送を記入する
masterノードとnodeノード
 [root@node1 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

2.5 iptablesローテーション転送
masterノードとnodeノード
 [root@node1 ~]#iptables -P FORWARD ACCEPT
 

————Blueicex 2020/05/15 16:15 [email protected]