前几天,出现了无法跨主机ping通容器的情况,导致一个node机网络中断,无法访问,排查过程如下。

  1. 首先确认,宿主机node2是可以ping通容器

    [root@node2 ~]# ping 10.1.19.3
    PING 10.1.19.3 (10.1.19.3) 56(84) bytes of data.
    64 bytes from 10.1.19.3: icmp_seq=1 ttl=64 time=0.122 ms
    64 bytes from 10.1.19.3: icmp_seq=2 ttl=64 time=0.073 ms

      
    可以ping通,进行下一步

  2. 确认,代理机到容器是否可以ping通
    [root@node1 ~]# ping 10.1.19.3
    PING 10.1.19.3 (10.1.19.3) 56(84) bytes of data.
    ^C
    --- 10.1.19.3 ping statistics ---
    14 packets transmitted, 0 received, 100% packet loss, time 12999ms

      

    无法ping通,检查代理机

  3. 查看代理机的flannel子网段配置是否正常
    [root@node1 ~]# etcdctl ls /coreos.com/network/subnets
    /coreos.com/network/subnets/10.1.91.0-24
    /coreos.com/network/subnets/10.1.93.0-24
    /coreos.com/network/subnets/10.1.94.0-24
    /coreos.com/network/subnets/10.1.19.0-24
    /coreos.com/network/subnets/10.1.77.0-24

      

    网段配置是正常的,已经含有10.1.19.0-24 段了

  4. 返回去查看宿主机路由是否配置完整
    [root@node2 ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.19.51 0.0.0.0 UG 100 0 0 eth0
    10.1.19.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0
    192.168.19.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0

      

    配置不完整,缺少flannel路由配置

  5. 尝试重启flannel,如果无法自动创建路由,则进行手动添加
    [root@node2 ~]# route add -net 10.1.0.0 netmask  255.255.0.0 dev flannel0
    [root@node2 ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.19.51 0.0.0.0 UG 100 0 0 eth0
    10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 flannel0
    10.1.19.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0
    192.168.19.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0

      

    创建完成之后没确认网络是否通了

  6. 确认网络,如果依然无法联通,由于flannel.1网卡和docker0网卡通过iptables的forward转发,所以确保:
    1. 核中的forward功能开启(立即生效,重启后效果不再)

      echo "1" > /proc/sys/net/ipv4/ip_forward
      

        

    2. 包不会被iptables的forward规则拦截

      sudo iptables -P FORWARD ACCEPT
      
  7. 确认网络是否联通了
    [root@node1 ~]# ping 10.1.19.3
    PING 10.1.19.3 (10.1.19.3) 56(84) bytes of data.
    64 bytes from 10.1.19.3: icmp_seq=1 ttl=61 time=0.444 ms
    64 bytes from 10.1.19.3: icmp_seq=2 ttl=61 time=0.288 ms
    ^C
    --- 10.1.19.3 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 999ms
    rtt min/avg/max/mdev = 0.288/0.366/0.444/0.078 ms

      

    网络没有问题了

以上

flannel无法跨主机ping通容器的解决方式的更多相关文章

  1. 如何使用Flannel搭建跨主机互联的容器网络

    当您将多台服务器节点组成一个Docker集群时,需要对集群网络进行设置,否则默认情况下,无法跨主机容器互联,接下来我们首先分析一下原因. 跨主机容器互联 下图描述了一个简单的集群网络,在该集群内,有两 ...

  2. 主机ping通虚拟机,虚拟机ping通主机解决方法(NAT模式)

    有时候需要用虚拟机和宿主机模拟做数据交互,ping不通是件很烦人的事,本文以net模式解决这一问题. 宿主机系统:window7 虚拟机系统:CentOs7 连接方式:NAT模式 主机ping通虚拟机 ...

  3. Docker容器跨主机通信之:直接路由方式

    一.Docker网络基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界相通,并可以收发数据包:此外,如果不同子网之间要进行通信,需要额外的路由机制. Docker ...

  4. 关于docker中容器可以Ping通外网,真机无法Ping通容器的问题

    首先我们要知道整体的框架结构,docker是我们安装在centos7上的,而centos7是安装在vmware上.其中docker中还有若干容器运行. 整体框架图如下: 我们将它分为两部分,一部分是d ...

  5. VMware14 安装CentOS7 实现宿主机ping通虚拟机、虚拟机ping通宿主机、虚拟机能上网且能ping通百度

    本文旨在通过通过虚拟机VMware14来安装CentOS7 系统,并配置固定IP来实现在Windows系统中使用Linux环境. 本文目录: 0.本机环境 1.VMware14 初始化 1.1.安装V ...

  6. VMWare之——宿主机与虚拟机互相ping通,宿主机ping通另一台机器的虚拟机

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处:http://blog.csdn.NET/l1028386804/article/details/52267554 今天给大家带来 ...

  7. samrt210开发板ping-系列问题(开发板ping通主机,主机ping通虚拟机,唯独~开发板ping不通虚拟机)

    硬件:PC机.虚拟机(Linux).开发板(smart210) 常用模型: 注:1).有线网卡与无线网不可同连一个路由器,不可在同网段: 2).vmware选择桥接模式,虚拟网络适配器选定具体的网卡名 ...

  8. RedHat无法ping通Win10的解决办法

    1.环境 主机: win10 企业版 64位 ip地址: 192.168.168.100 虚拟机:Red Hat ip地址: 192.168.168.200 2.现象: win10系统可以ping通R ...

  9. ping localhost 没反应解决方式

    今天在搭建导师公司的spark的集群的时候须要有一台机器须要ssh 到自己.可是运行以下两条命令后发现没有反应 ping localhost ping 127.0.0.1 之后问了下别人,发现是/et ...

随机推荐

  1. 33、Android Support兼容包详解(转载)

    原文转自:微信分享 2015-03-31 22:11 背景 来自于知乎上邀请回答的一个问题Android中AppCompat和Holo的一个问题?, 看来很多人还是对这些兼容包搞不清楚,那么干脆写篇博 ...

  2. 【Jump Game】cpp

    题目: Given an array of non-negative integers, you are initially positioned at the first index of the ...

  3. Python+Selenium练习篇之10-刷新当前页面

    本文介绍如何调用webdriver中刷新页面的方法. 相关脚本代码如下: # coding=utf-8import timefrom selenium import webdriver driver ...

  4. Python-S9——Day83-ORM项目实战

    01 上节回顾 02 后台管理布局 03 按钮权限控制的简单形式 04 修改表结构 05 重构数据结构 06 限制权限颗粒度 01 上节回顾 1.1 项目的组织架构: 1.2 项目组件的版本说明: 使 ...

  5. C# 序列化和反序列化 详解

    什么是序列化以及如何实现序列化? 如何将对象数据写入 XML 文件? 如何从 XML 文件读取对象数据? 什么是序列化以及如何实现序列化? 序列化是通过将对象转换为字节流,从而存储对象或将对象传输到内 ...

  6. 编写高性能React组件-传值篇

    很多人在写React组件的时候没有太在意React组件的性能,使得React做了很多不必要的render,现在我就说说该怎么来编写搞性能的React组件. 首先我们来看一下下面两个组件 import ...

  7. [python][django学习篇][5]选择数据库版本(默认SQLite3) 与操作数据库

    推荐学习博客:http://zmrenwu.com/post/6/ 选择数据库版本(SQLite3) 如果想选择MySQL等版本数据库,请先安装MySQL并且安装python mysql驱动,这里不做 ...

  8. JAVA简易的注册会员系统

    public class Login { public static void main(String[] args) { System.out.println("*****欢迎进入注册系统 ...

  9. a:active在ios上无效解决方法

    原因: By default, Safari Mobile does not use the :active state unless there is a touchstart event hand ...

  10. 三叉神经树 ( neuron )

    三叉神经树 ( neuron ) 题目描述 计算神经学作为新兴的交叉学科近些年来一直是学术界的热点.一种叫做SHOI 的神经组织因为其和近日发现的化合物SHTSC 的密切联系引起了人们的极大关注. S ...