博客
关于我
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/

    你可能感兴趣的文章
    PHP实现微信小程序推送消息至公众号
    查看>>
    rabbitmq逻辑与开发
    查看>>
    php实现根据身份证获取年龄
    查看>>
    PHP实现的MongoDB数据增删改查
    查看>>
    PHP实现的SSO单点登录系统,拿走就用吧
    查看>>
    php实现短信验证功能
    查看>>
    RabbitMQ连接报错(1)—— None of the specified endpoints were reachable
    查看>>
    php实现逆转数组
    查看>>
    PHP实现通过geoip获取IP地理信息
    查看>>
    PHP实现页面静态化、纯静态化及伪静态化
    查看>>
    php容许ajax跨域,PHP设置允许ajax跨域请求的两种常见方法
    查看>>
    RabbitMQ进程结构分析与性能调优
    查看>>
    PHP对接百度地图
    查看>>
    PHP对表单提交特殊字符的过滤和处理
    查看>>
    php对象引用和析构函数的关系
    查看>>
    RabbitMQ HTTP 认证后端项目常见问题解决方案
    查看>>
    PHP将图片转换成base64格式(优缺点)
    查看>>
    php将多个值的数组去除重复元素
    查看>>
    php局域网上传文件_PHP如何通过CURL上传文件
    查看>>
    PHP工具插件大全
    查看>>