博客
关于我
kubernetes学习总结-3网络通讯模式
阅读量:771 次
发布时间:2019-03-24

本文共 1036 字,大约阅读时间需要 3 分钟。

Kubernetes网络模型与Flannel网络规划服务解析

在Kubernetes网络模型中,默认所有Pod都位于一个扁平且直接联通的网络空间中。这种假设在Google Compute Engine(GCE)中是现成的网络环境,但在私有云中搭建Kubernetes集群时,这种假设并不成立。我们需要先打通不同节点之间的网络互联,再基于此运行Kubernetes。

####Pod间通讯机制

  • 同一Pod内容器间通讯

    使用pause进程实现的localhost访问模式,确保同一Pod内的容器能够直接互相访问。Pod共享一个网络命名空间和Linux协议栈。

  • 不同Pod间通讯

    层覆盖网络(Overlay Network)作为Kubernetes默认的容器间通信机制。

    • 同一节点内部Pod通讯:Pod之间通过Docker0网桥直接转发,不经过Flannel。
    • 跨节点Pod通讯(即跨主机):借助Flannel创建覆盖网络,确保Pod之间可以通过虚拟IP进行通信。
  • ####Service与Pod的通讯

    Service是Kubernetes集群中的虚拟网络设备,用iptables维护节点级的路由规则来实现Pod与Service之间的通信。目前主要采用iptables实现,但有性能优化使用Linux负载均衡(LVS)更高效。

    ####Pod与外部网络联通

    Kubernetes中,Pod需要通过网络进行通信。具体实现如下:

    • Pod发出的请求通过路由表查找,最终由宿主机网卡选择正确的路由。
    • 宿主机iptables执行上mask操作,将源IP替换为宿主机IP,向外网发送请求。

    此外,外部系统访问Pod时,可以通过Service转发实现。

    Flannel网络规划服务简介

    Flannel由CentOS团队设计专为Kubernetes服务设计,是一种灵活的网络规划服务。它能够为集群中的各Pod分配唯一的虚拟IP地址,并通过覆盖网络实现数据包的原封不动传递。

    ####Flannel的主要功能

  • IP地址分配

    Flannel能够动态分配集群内的虚拟IP地址段,并对这些IP进行管理。

  • 维护路由表

    Flannel监控Etcd(Kubernetes Etcd集群)的状态,在内存中维护Pod节点路由表。

  • 覆盖网络支持

    通过Flannel,实现跨节点的网络通信,将数据包直接传递至目标Pod,无需经过节点网络。

  • 这种高效的网络规划机制极大地方便了Kubernetes集群的网络管理和扩展。

    转载地址:http://oxnkk.baihongyu.com/

    你可能感兴趣的文章
    peek和pop的区别
    查看>>
    Pelemay 项目教程
    查看>>
    Penetration Testing、Security Testing、Automation Testing
    查看>>
    Pentaho业务分析平台 SQL注入漏洞复现
    查看>>
    PentestGPT:一款由ChatGPT驱动的强大渗透测试工具
    查看>>
    PeopleTools 8.54 first install note
    查看>>
    PEP 8016 获胜,成为新的 Python 社区治理方案
    查看>>
    PEP8规范
    查看>>
    PEPM Cookie 远程代码执行漏洞复现(XVE-2024-16919)
    查看>>
    Percona Server 5.6 安装TokuDB
    查看>>
    SpringBoot(十四)整合MyBatis
    查看>>
    percona-xtrabackup 备份
    查看>>
    Perfect,华为爆出 Redis 宝典,原来 Redis 性能可压榨到极致
    查看>>
    SpringBoot集成OpenOffice实现doc文档转html
    查看>>
    Perl Socket传输(带注释)
    查看>>
    ROS中机器人的强化学习路径规划器
    查看>>
    rocketmq存储结构_rocketmq 消息存储
    查看>>
    perl---2012学习笔记
    查看>>
    Perl6 必应抓取(1):测试版代码
    查看>>
    perl学习之内置变量
    查看>>