前言

关于kubernetes网络,需要了解以下知识:

  1. kubernetes的网络原型是什么
  2. docker背后的网络基础是什么
  3. docker自身的网络模型和局限是什么
  4. kubernetes的网络组件之间是如何通信的
  5. 外部如何访问kubernetes集群
  6. 有哪些开源组件支持kubernetes的网络集群

1. kubernetes网络模型

kubernetes的网络模型假定了所有的pod都在一个直接连通的扁平的网络空间中,kubernetes运行的基础是假定这个网络已经存在。

自己搭建集群的话,需要自己实现这个网络假定,就是通过flannelcalico等组件


2. kubernetes的组件之间如何通讯

2.1 同一个pod内的多容器之间

前面了解过,同一个pod之间是有一个根容器pause,且共用一个pod ip的,所以容器之间的通讯是通过pause的网络栈的lo(无线网卡),直接使用localhost来互相访问


2.2 各个pod直接的通讯

2.2.1 同一个节点上的pod互相通讯

如上图,同一个node上的pod之间,是连接到同一个docker0网桥上的, 地址段相同,所以可以直接通信

2.2.2 不同节点上的pod之间的通信

通过开源网络组件flannel开实现

  1. flannel能协助kubernetes,给每一个node伤的每个pod都分配一个不冲突的ip
  2. 且能在这些ip之中建立一个覆盖网络,通过这些覆盖网络overlay network,原封不动地传递到目标容器内

etcd为flannel提供的支持

  1. 存储管理flannel可分配的ip地址资源段
  2. 监控etcd中每个pod的实际地址,并在内存中建立维护pod节点路由表

2.3 pod和service之间的通讯

目前基于性能考虑,全部为iptables维护和转发。

新版本中已经替换为lvs


2.4 外网访问pod

通过service nodeport完成


3. kubernetes的三层网络

三层分别是:

  1. pod网络
  2. service网络
  3. 节点(node)网络

真实的、具体的网络只有节点网络,其他两层都是虚拟的内部网络

kubernetes系列(五) - kubernetes网络原理的更多相关文章

  1. kubernetes pod infra container网络原理

    刚开始接触kubernetes时,对kubelet的--pod-infra-container-image参数非常不能理解,不理解为什么我的业务应用需要依赖一个第三方的容器: 上文入门级kuberne ...

  2. Kubernetes系列(五) Ingress

    作者: LemonNan 原文地址: https://juejin.im/post/6878269825639317517 Kubernetes 系列 Kubernetes系列(一) Pod Kube ...

  3. Kubernetes系列02—Kubernetes设计架构和设计理念

    本文收录在容器技术学习系列文章总目录 1.Kubernetes设计架构 Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分 ...

  4. 《Kubernetes权威指南》——网络原理

    1 Kubernetes网络模型 基本原则:每个Pod都拥有一个独立IP,而且假定所有Pod都在一个可以直接连通的.扁平的网络空间中. 基于基本原则,用户不需要额外考虑如何建立Pod之间的连接,也不需 ...

  5. 【Kubernetes 系列五】在 AWS 中使用 Kubernetes:EKS

    目录 1. 概述 2. 版本 3. 预备 3.1. 操作环境 3.2. 角色权限 3.2.1. CloudFormation 完全权限 3.2.2. EKS 读写权限 3.2.3. EC2 相关权限 ...

  6. kubernetes系列06—kubernetes资源清单定义入门

    本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...

  7. Kubernetes系列:Kubernetes Dashboard

    15.1.Dashboard 作为Kube认得Web用户界面,用户可以通过Dashboard在Kubernetes集群中部署容器化的应用,对应用进行问题处理和管理,并对集群本身进行管理.通过Dashb ...

  8. 恒天云技术分享系列6 – vLan网络原理解析

    转载自恒天云官网:http://www.hengtianyun.com/download-show-id-15.html Vlan网络模式优点 增加网络可扩展性 网络隔离,每个租户拥有独立的网络及vl ...

  9. (转)Vmware vSphere 5.0系列教程 vSphere网络原理及vSwitch简介 及一个host两个网卡说明

    转:http://andygao.blog.51cto.com/323260/817518/ 在一个物理网络拓扑中,通常都是路由器-交换机-PC机的连接,不同的服务器和PC机,通过交换机的连接而相互连 ...

  10. 从0到1使用Kubernetes系列(七):网络

    本文是从 0 到 1 使用 Kubernetes 系列第七篇,上一篇<从 0 到 1 使用 Kubernetes 系列(六):数据持久化实战> 介绍了 Kubernetes 中的几种常用储 ...

随机推荐

  1. Windows安全中心在手动删除威胁文件后无法处理,一直显示有威胁

    从网络上找到了一个简单靠谱的解决方案,与众位分享: 找到C:\ProgramData\Microsoft\Windows Defender\Scans\History\Service\Detectio ...

  2. SpringMvc请求注解@RequestBody请求体/@PathVaribale/@RequestParam【支持Ajax】

    一.@RequestBody请求体 注意请求体只有form表单才有,而对于链接来说不使用 1).在Controller中写 @RequestBody String body是基本用法 另外可以封装对象 ...

  3. SSIS连接Oracle问题汇总

    一.未安装Oracle客户端 错误提示:Test connection failed because of an error in initializing provider. 未找到 Oracle ...

  4. [Linux]学习之路---树梅派4B出现打开文件管理器闪退等问题

    直接控制台运行命令: sudo apt-get install --reinstall pcmanfm 后面的pcmanfm,是一个功能齐全的Linux上的轻量级文件管理器,我自己的记忆方法就是: P ...

  5. docker bulid tag push到自己的docker hub 仓库

    -t(或 --tag)参数:用于给构建的镜像指定标签(tag).标签的格式通常是 [仓库名/][用户名/]镜像名:版本号 -f(或 --file)参数: 指定构建镜像所使用的 Dockerfile 的 ...

  6. GIt分布式管理工具

    Git(分布式版本控制工具) Git的学习是不依赖我们前面学习的知识,就算没有学习java也可以学习 Git就是一个类似于百度云盘的仓库 重点是要掌握使用idea操作Git,企业用的最多,一般不会去使 ...

  7. Go语言net/http包源码学习

    0.前言 该笔记为笔者第一次学习go的net/http包源码的时候所记,也许写的并不是很精确,希望大家多多包涵,一起讨论学习. 该笔记很大程度的参考了网名为"小徐先生"的前辈所分享 ...

  8. 连接数据库报错的异常可以用mysqli_report来捕获

    有时候数据库密码改了或者数据库删了,就会有一个mysqli的链接报错,是因为直接使用了类似代码 $connection = new mysqli('127.0.0.1', 'test_user', ' ...

  9. CodeForces - 1398C Good Subarrays

    CodeForces - 1398C 挺简单的题目,但是没有想到还是整理一下 方法1 把每个元素都减1,那么满足题意的就是一段和的值是0,然后维护前缀和,如果发现这个前缀和之前出现过,就说明有满足题意 ...

  10. SQL注入sqlmap联动burpsuite之burp4sqlmap++插件

    目录 sqlmap和burpsuite介绍 sqlmap4burp++介绍 sqlmap4burp++的使用 小插曲:sqlmap报错文件不存在怎么办? 官方扩展CO2之SQLmapper sqlma ...