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

    你可能感兴趣的文章
    Nginx 入门,一篇搞定!
    查看>>
    Nginx 利用代理转发请求示例
    查看>>
    Nginx 动静分离与负载均衡的实现
    查看>>
    Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
    查看>>
    nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
    查看>>
    Nginx 反向代理+负载均衡
    查看>>
    Nginx 反向代理解决跨域问题
    查看>>
    Nginx 反向代理配置去除前缀
    查看>>
    nginx 后端获取真实ip
    查看>>
    Nginx 多端口配置和访问异常问题的排查与优化
    查看>>
    Nginx 如何代理转发传递真实 ip 地址?
    查看>>
    Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
    查看>>
    Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
    查看>>
    Nginx 学习(一):Nginx 下载和启动
    查看>>
    nginx 常用指令配置总结
    查看>>
    Nginx 常用配置清单
    查看>>
    nginx 常用配置记录
    查看>>
    nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
    查看>>
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 源码完全注释(11)ngx_spinlock
    查看>>