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

    你可能感兴趣的文章
    MySQL8,体验不一样的安装方式!
    查看>>
    MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
    查看>>
    Mysql: 对换(替换)两条记录的同一个字段值
    查看>>
    mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
    查看>>
    MYSQL:基础——3N范式的表结构设计
    查看>>
    MYSQL:基础——触发器
    查看>>
    Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
    查看>>
    mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
    查看>>
    mysqldump 参数--lock-tables浅析
    查看>>
    mysqldump 导出中文乱码
    查看>>
    mysqldump 导出数据库中每张表的前n条
    查看>>
    mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
    查看>>
    Mysqldump参数大全(参数来源于mysql5.5.19源码)
    查看>>
    mysqldump备份时忽略某些表
    查看>>
    mysqldump实现数据备份及灾难恢复
    查看>>
    mysqldump数据库备份无法进行操作只能查询 --single-transaction
    查看>>
    mysqldump的一些用法
    查看>>
    mysqli
    查看>>
    MySQLIntegrityConstraintViolationException异常处理
    查看>>
    mysqlreport分析工具详解
    查看>>