一、网络模型概述

k8s的网络中主要存在四种类型的通信:同一pod内的容器间通信、各pod彼此之间的通信、pod与service间的通信、以及集群外部的流量同service之间的通信。

k8s为pod和service资源对象分别使用了各自的专用网络,pod网络由k8s的网络插件配置实现,而service的网络则由k8s集群予以指定。k8s的网络模型需要借助于外部插件实现,它要求任何实现机制都必须满足以下需求:

1、所有pod间均可不经NAT机制直接通信;

2、所有节点均可不经NAT机制而直接与所有容器通信。

3、容器自己使用的IP也是其他容器或节点直接看到的地址,即,所有pod对象都位于同一平面网络中,而且可以使用pod自身的地址直接通信。

k8s使用的网络插件需要为每个pod配置至少一个特定的地址,即podIP。podIP地址实际存在于某个网卡(可以是虚拟设备)上,而service地址却是一个虚拟IP地址,没有任何网络接口配置此地址,它由kube-proxy借助iptables规则或ipvs规则重新定向到本地端口,再将其调度至后端pod对象。service的IP地址是集群提供服务的接口,也称为clusterIP。

pod网络及其IP由k8s的网络插件负责配置和管理,具体使用的网络地址可在管理配置网络插件时指定,如10.96.0.0/16网络。而cluster网络和IP则是由k8s集群负责配置和管理,如10.96.0.0/12网络。

总结起来,k8s集群至少应该包含三个网络,一个是各主机(master、node、etcd等)自身所属的网络,其地址配置于主机的网络接口,用于各主机之间的通信;第二个是k8s集群上专用于pod资源对象的网络,它是一个虚拟网络,用于为各pod对象设定IP地址等网络参数,其地址配置于pod中容器的网络接口之上。pod网络为各pod对象设定IP地址等网络参数,其地址配置于pod中容器的网络接口之上。pod网络需要借助kubenet插件或CNI插件实现,该插件独立部署于k8s集群之外,也可托关于k8s之上;第三个时专用于service资源对象的网络,它也是一个虚拟网络,用于为k8s集群之中的service配置IP地址,但此地址并不配置于任何主机或容器的网络接口之上,而是通过node之上的kube-proxy配置为iptables或ipvs规则,从而将发往此地址的所有流量调度至其后端的各pod对象之上。service网络再k8s集群创建时予以指定,而各service的地址则在用户创建service时予以动态配置。

二、集群上的网络通信

k8s集群的客户端大体分为两类:apiserver客户端和应用程序(运行为pod中的容器)客户端。apiserver客户端通常包含人类用户和pod对象两种,它们通过apiserver访问k8s集群完成管理任务,应用程序客户端一般也包含人类用户和pod对象两种,它们的访问目标时pod上运行于容器中的应用程序提供的各种具体的服务,如redis或nginx等。不过,这些访问请求通常要经由service或ingress资源对象进行。另外,应用程序客户端的访问目标对象的操作要经由apiserver客户端创建和配置完成后才能进行。

名词解释:

CNI:容器网络接口(Container Network Interface),由CNCF(Cloud Native Computing Foundation)维护的项目,其由一系列的用于编写配置容器网络插件的规范和库接口组成,支持众多插件项目。

K8S网络模型的更多相关文章

  1. k8s 网络模型

    一.前言 k8s对Pods之间如何进行组网通信提出了要求,k8s对集群的网络有以下要求: 所有的Pods之间可以在不使用NAT网络地址转换的情况下相互通信 所有的Nodes之间可以在不使用NAT网络地 ...

  2. k8s网络模型与集群通信

    在k8s中,我们的应用会以pod的形式被调度到各个node节点上,在设计集群如何处理容器之间的网络时是一个不小的挑战,今天我们会从pod(应用)通信来展开关于k8s网络的讨论. 小作文包含如下内容: ...

  3. k8s 网络模型解析之原理

    今天研究了一下k8s的网络模型,该解析基于flannel vxlan+ kubeproxy iptables 模式. 一.Docker 首先分析一下Docker层面的网络模型,我们知道容器是基于内核的 ...

  4. 036.集群网络-K8S网络模型及Linux基础网络

    一 Kubernetes网络模型概述 1.1 Kubernetes网络模型 Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,并假定所有Pod都在一个可以直接连通的 ...

  5. k8s 网络模型解析之实践

    一. 实践说明 首先我们先创建一组资源,包括一个deployment和一个service apiVersion: apps/v1 kind: Deployment metadata: name: ng ...

  6. 《两地书》--Kubernetes(K8s)基础知识(docker容器技术)

    大家都知道历史上有段佳话叫“司马相如和卓文君”.“皑如山上雪,皎若云间月”.卓文君这么美,却也抵不过多情女儿薄情郎. 司马相如因一首<子虚赋>得汉武帝赏识,飞黄腾达之后便要与卓文君“故来相 ...

  7. k8s实战读书笔记

    一.概述 kubernetes中Service是真实应用的抽象,将用来代理Pod,对外提供固定IP作为访问入口,这样通过访问Service便能访问到相应的Pod,而对访问者来说只需知道Service的 ...

  8. k8s入门

    一个目标:容器操作:两地三中心:四层服务发现:五种Pod共享资源:六个CNI常用插件:七层负载均衡:八种隔离维度:九个网络模型原则:十类IP地址:百级产品线:千级物理机:万级容器:相如无亿,K8s有亿 ...

  9. ASP.NET Core on K8S深入学习(11)K8S网络知多少

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 一.Kubernetes网络模型 我们都知道Kubernetes作为容器编排引 ...

随机推荐

  1. Windows 和 Office 大客户激活方法

    激活Windows 10 找到Powershell,然后右键管理员身份运行,依次输入下面的命令,注意将$host切换成为你组织的服务器地址: slmgr.vbs -upk slmgr.vbs -ipk ...

  2. HTTP及WEB框架简述

    HTTP介绍 Hyper Text Transfer Protocol,超文本传输书协议,是万维网数据通信的基础,规定了请求和响应标准. HTTP工作原理 HTTP 请求以及响应的步骤 客户端连接到W ...

  3. HCL试验4

    PC端配置:配置ip地址 配置网关 交换机配置:①创建VLAN system-view vlan 10 vlan 20 ②配置PC端接口 interface vlan-interface 10 ip ...

  4. 应用安全 - JavaScript - 框架 - Jquery - 漏洞 - 汇总

    jQuery CVE-2019-11358 Date 类型 原型污染 影响范围 CVE-2015-9251  Date 类型跨站 影响范围<jQuery 3.0.0

  5. 【VS开发】内存泄漏相关问题

    之所以撰写这篇文章是因为前段时间花费了很大的精力在已经成熟的代码上再去处理memory leak问题.写此的目的是希望我们应该养成良好的编码习惯,尽可能的避免这样的问题,因为当你对着一大片的代码再去处 ...

  6. 解决Wamp的 Error D:\wamp or PHP path 错误

    之前早早就用了wamp,发现还是挺好用的,就是刚开始改端口号之类的配置有点麻烦,不过还是一一解决了. 就在昨天安装了 composer . 突然发现wamp 有一个错 “Error D:\wamp o ...

  7. Emgu 学习笔记(8)之膨胀腐蚀

    static void Main(String[] args) { Mat img = CvInvoke.Imread(); Mat d = new Mat(); Mat e = new Mat(); ...

  8. HanLP-最短路径分词

    今天介绍的内容是最短路径分词.最近换回了thinkpad x1,原因是mac的13.3寸的屏幕看代码实在是不方便,也可能是人老了吧,^_^.等把HanLP词法分析介绍结束后,还是会换回macbook ...

  9. leetcode难题

    4 寻找两个有序数组的中位数       35.9% 困难     10 正则表达式匹配       24.6% 困难     23 合并K个排序链表       47.4% 困难     25 K ...

  10. python网络爬虫(9)构建基础爬虫思路

    目的意义 基础爬虫分5个模块,使用多个文件相互配合,实现一个相对完善的数据爬取方案,便于以后更完善的爬虫做准备. 这里目的是爬取200条百度百科信息,并生成一个html文件,存储爬取的站点,词条,解释 ...