• Kubernetes中网络相关知识


    流量转发和桥接

    • Kubernetes的核心是依靠Netfilter内核模块来设置低级别的集群IP负载均衡。需要两个关键的模块:IP转发和桥接

    IP转发(IP Forward)

    • IP forward 是一种内核态设置,允许将一个接口的流量转发到另外一个接口,该配置是 Linux 内核将流量从容器路由到外部所必须的.
    查看
    sysctl net.ipv4.ip_forward
    # 0意味着未开启
    
    设置
    sysctl -w net.ipv4.ip_forward=1
    echo net.ipv4.ip_forward=1 >> /usr/lib/sysctl.d/00-system.conf
    sysctl -p
    

    桥接

    • bridge-netfilter 设置可以使 iptables 规则可以在 Linux Bridges 上面工作,就像 Docker 和 Kubernetes 设置的那样。

    • 此设置对于 Linux 内核进行宿主机和容器之间进行数据包的地址转换是必须的。

    查看
    [root@t91 home]# sysctl net.bridge.bridge-nf-call-iptables
    net.bridge.bridge-nf-call-iptables = 1
    # 如果是0,则表示未开启
    
    设置
    modprobe br_netfilter
    sysctl -w net.bridge.bridge-nf-call-iptables=1
    echo net.bridge.bridge-nf-call-iptables=1 >> /etc/sysconf.d/10-bridge-nf-call-iptables.conf
    sysctl -p
    

    防火墙规则

    • Kubernetes 提供了各种网络插件来支持其集群功能,同时也对传统的基于 IP 和端口的应用程序提供了向后兼容的支持。

    • 最常见的 一种 Kubernetes 网络方案就是利用 VxLan Overlay 网络,其中的 IP 数据包被封装在 UDP 中通过8472端口进行数据传输。

    • 这种情况下会出现100%数据包丢失

    $ ping 10.244.1.4 
    PING 10.244.1.4 (10.244.1.4): 56 data bytes
    ^C--- 10.244.1.4 ping statistics ---
    5 packets transmitted, 0 packets received, 100% packet loss
    
    • 最好的方式是使用相同的协议来传输数据,因为防火墙规则可能配置了特地的协议,比如可能会阻止 UDP 流量。
    • iperf 是一个很好的验证工具
    #  在服务端执行
    iperf -s -p 8472 -u
    # 在客户端执行
    iperf -c 172.28.128.103 -u -p 8472 -b 1K
    
  • 相关阅读:
    第七十一课 图的定义与操作
    第七十课 二叉树经典面试题分析
    第六十九课 二叉树的线索化实现
    第六十八课 二叉树的比较与相加
    第六十七课 二叉树的典型遍历方式
    第六十六课 二叉树结构的层次遍历
    第六十五课 二叉树中属性操作的实现
    2018华为笔试题
    交错01串
    操作序列(网易)
  • 原文地址:https://www.cnblogs.com/zhangjxblog/p/12167665.html
Copyright © 2020-2023  润新知