問題遇到的現象和發生背景
Kubesphere中運行的一個容器,可以ping通我們公司內網網段172.16.XX.XX,但是在容器內無法ping通192.168.5.XX,但是我在宿主機是可以ping通192.168.5.XX,這個192.168.5.XX是通過xx設備接進來的,所以可以在公司電腦或者我的宿主機直接ping通,但很奇怪在宿主機運行的docker容器卻沒辦法ping通
下圖為我宿主機的ip地址:
進入該容器
docker exec -it 044b132ecd51 /bin/sh
ping 192.168.5.10 ping不通
以下為跟蹤信息:
/usr/local/s2i # traceroute 192.168.5.8 可以看到ping這個是ping不通
traceroute to 192.168.5.8 (192.168.5.8), 30 hops max, 46 byte packets1 172-16-2-238.node-exporter.kubesphere-monitoring-system.svc.cluster.local (172.16.2.238) 0.006 ms 0.003 ms 0.003 ms2 * * *3 * *^C
/usr/local/s2i # traceroute 172.16.0.231 ping這些網段是可以的
traceroute to 172.16.0.231 (172.16.0.231), 30 hops max, 46 byte packets1 172-16-2-238.node-exporter.kubesphere-monitoring-system.svc.cluster.local (172.16.2.238) 0.005 ms 0.003 ms 0.002 ms2 172.16.2.1 (172.16.2.1) 1.744 ms 1.982 ms 1.522 ms3 172.16.0.3 (172.16.0.3) 0.666 ms 0.647 ms 0.620 ms4 172.16.0.231 (172.16.0.231) 0.660 ms 3.151 ms 2.575 ms
/usr/local/s2i # traceroute 172.17.0.1
traceroute to 172.17.0.1 (172.17.0.1), 30 hops max, 46 byte packets1 172.17.0.1 (172.17.0.1) 0.005 ms 0.005 ms 0.002 ms
/usr/local/s2i # ipaddr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1000link/ipip 0.0.0.0 brd 0.0.0.0
4: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1480 qdisc noqueue state UPlink/ether 82:06:25:b9:a9:22 brd ff:ff:ff:ff:ff:ffinet 192.168.26.37/32 scope global eth0valid_lft forever preferred_lft forever
/usr/local/s2i #
以下是我宿主機的docker網橋信息 用的都是默認的
[{"Name": "bridge","Id": "cd251d36987f690313634e20d0c453f427fb7ceb457c17513f3c96c58975f626","Created": "2022-06-01T17:16:44.57503358+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": null,"Config": [{"Subnet": "172.17.0.0/16","Gateway": "172.17.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {"com.docker.network.bridge.default_bridge": "true","com.docker.network.bridge.enable_icc": "true","com.docker.network.bridge.enable_ip_masquerade": "true","com.docker.network.bridge.host_binding_ipv4": "0.0.0.0","com.docker.network.bridge.name": "docker0","com.docker.network.driver.mtu": "1500"},"Labels": {}}
]
解決方法
添加自定義容器組IP池
宿主機:172.16.2.238
賬號:root 密碼:bigdata
進入該容器
docker exec -it 044b132ecd51 /bin/sh
ping 192.168.5.10
ping不通
問題點在于-》基礎環境:docker+K8S+kubesphere:使用kubesphere與k8s生成的容器無法訪問192.168.5.8
直接使用dokcer創建的容器,如zabbix,又可以ping通
bash-5.1$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1000link/ipip 0.0.0.0 brd 0.0.0.0
60: eth0@if61: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ffinet 172.17.0.3/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever
bash-5.1$ bash-5.1$ ping 192.168.5.8
PING 192.168.5.8 (192.168.5.8) 56(84) bytes of data.
64 bytes from 192.168.5.8: icmp_seq=1 ttl=124 time=8.00 ms
64 bytes from 192.168.5.8: icmp_seq=2 ttl=124 time=7.67 ms
64 bytes from 192.168.5.8: icmp_seq=3 ttl=124 time=8.23 ms
64 bytes from 192.168.5.8: icmp_seq=4 ttl=124 time=8.16 ms
64 bytes from 192.168.5.8: icmp_seq=5 ttl=124 time=7.54 ms
^C
--- 192.168.5.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 7.540/7.919/8.229/0.270 ms
bash-5.1$
K8S中運行的一個容器,可以ping通我們公司內網網段172.16.XX.XX,但是在容器內無法ping通192.168.5.XX,但是我在宿主機是可以ping通192.168.5.XX,這個192.168.5.XX聽網工說是通過什么xx設備接進來的,所以可以在公司電腦或者我的宿主機直接ping通,但很奇怪在宿主機運行的docker容器卻沒辦法ping通
下圖為我宿主機的ip地址:
進入該容器
docker exec -it 044b132ecd51 /bin/sh
ping 192.168.5.10 ping不通
以下為跟蹤信息:
/usr/local/s2i # traceroute 192.168.5.8 可以看到ping這個是ping不通
traceroute to 192.168.5.8 (192.168.5.8), 30 hops max, 46 byte packets
1 172-16-2-238.node-exporter.kubesphere-monitoring-system.svc.cluster.local (172.16.2.238) 0.006 ms 0.003 ms 0.003 ms
2 * * *
3 * *^C
/usr/local/s2i # traceroute 172.16.0.231 ping這些網段是可以的
traceroute to 172.16.0.231 (172.16.0.231), 30 hops max, 46 byte packets
1 172-16-2-238.node-exporter.kubesphere-monitoring-system.svc.cluster.local (172.16.2.238) 0.005 ms 0.003 ms 0.002 ms
2 172.16.2.1 (172.16.2.1) 1.744 ms 1.982 ms 1.522 ms
3 172.16.0.3 (172.16.0.3) 0.666 ms 0.647 ms 0.620 ms
4 172.16.0.231 (172.16.0.231) 0.660 ms 3.151 ms 2.575 ms
/usr/local/s2i # traceroute 172.17.0.1
traceroute to 172.17.0.1 (172.17.0.1), 30 hops max, 46 byte packets
1 172.17.0.1 (172.17.0.1) 0.005 ms 0.005 ms 0.002 ms
/usr/local/s2i # ipaddr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: tunl0@NONE: mtu 1480 qdisc noop state DOWN qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
4: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1480 qdisc noqueue state UP
link/ether 82:06:25:b9:a9:22 brd ff:ff:ff:ff:ff:ffinet 192.168.26.37/32 scope global eth0valid_lft forever preferred_lft forever
/usr/local/s2i #
以下是我宿主機的docker網橋信息 用的都是默認的
[{"Name": "bridge","Id": "cd251d36987f690313634e20d0c453f427fb7ceb457c17513f3c96c58975f626","Created": "2022-06-01T17:16:44.57503358+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": null,"Config": [{"Subnet": "172.17.0.0/16","Gateway": "172.17.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {"com.docker.network.bridge.default_bridge": "true","com.docker.network.bridge.enable_icc": "true","com.docker.network.bridge.enable_ip_masquerade": "true","com.docker.network.bridge.host_binding_ipv4": "0.0.0.0","com.docker.network.bridge.name": "docker0","com.docker.network.driver.mtu": "1500"},"Labels": {}}
]