k8s的网络发现

k8s网络场景


  • 容器与容器之间的通信
  • pod与pod之间的通信
  • pod到service之间的通信
  • 集群外部与集群内部pod之间的通信

1、pod网络


pod是k8s的最小调度单元,pod更像是一个容器组,包含多个容器,是一个逻辑概念,pod包含的容器都会运行在同一个节点上,这些容器共享一个命名空间,这些容器之间能够直接进行通信,能够在本地访问其他容器的端口

实际上pod第一个创建的会是一个pause容器,他不做任何事情,只是用来提供网络,创建的容器会加入这个容器从而做到网络共享。

pod网络实际上还是容器网络,所以pod-ip就是网络容器的container-ip

2、容器之间的通信


同一个pod之间的不同容器因为位于一个网络命名空间,共享一个ip和网卡,所以可以直接通过localhost进行通信

3、pod之间的通信


3.1、同一个节点上pod之间的通信

同一个节点上的pod的ip,都是通过节点上docker0网卡来分配ip的,可以通过docker0网卡进行转发进行通信,直接通过pod的ip进行通信就可以

3.2、不同节点上pod之间的通信

不同的节点之间,节点的ip相当与外网ip,可以直接访问,而node内的docker0和pod的ip属于内网ip,无法直接跨主机访问,需要通过网卡转发

所以不同Node之间的通信需要达到两个条件:

1、对整个集群中的Pod-IP分配进行规划,不能有冲突(可以通过第三方开源工具来管理,例如flannel)。
2、将Node-IP与该Node上的Pod-IP关联起来,通过Node-IP再转发到Pod-IP。

image.png

在容器集群中创建一个覆盖网络(Overlay Network),联通各个节点,目前可以通过第三方网络插件来创建覆盖网络,比如Flannel和Open vSwitch等。

4、Service网络

service的作用就是在pod之间起到代理服务的作用,对外表现为一个单一访问接口,将请求转发给Pod,service的网络转发是Kubernetes实现服务编排的关键一环。

Kubernetes Porxy实现了以下功能:

1、转发访问Service的Service-IP的请求到Endpoints(即Pod-IP)。
2、监控Service和Endpoints的变化,实时刷新转发规则。
3、负载均衡能力。

service实现代理有两种方式,一种是通过iptables转发方式,另一种是IPVS的方式

iptables转发


iptables方式会在集群节点上指定iptables规则,会将请求转接到对应的pod节点,但是当集群有大量pod的时候,会产生大量的iptables规则,会大量占用cpu资源,甚至宕机,下面介绍IPVS转发方式

IPVS转发


当我们创建了service之后,kube-proxy会在宿主机上建立一个虚拟网卡(kube-ipvs0),并为他分配 Service VIP作为ip地址,然后,kube-proxy会通过Linux的ipvs模块为这个ip地址设置对应副本数量的虚拟ip,并使用轮询方式进行负载均衡

注意:通过service创建虚拟ip访问pod的方式只在集群内部可以使用,原理是通过宿主机上创建iptables进行通信

集群通过service的方式实现负载均衡有点类似与docker的端口的映射,只不过这里会生成一个虚拟ip让我们进行访问,而不是映射成物理机的端口

5、容器外部访问pod节点

5.1、NodePort

NodePort实现的原理和docker映射端口类似,只不过是在sercice的基础之上,对虚拟ip的端口进行映射,映射成宿主机的端口,通过宿主机:端口的方式来进行访问

5.2、 LoadBalancer
这种方式使用于公有云上的k8s服务

在公有云提供的 Kubernetes 服务里,都使用了一个叫作 CloudProvider 的转接层,来跟公有云本身的 API 进行对接。

LoadBalancer 类型的 Service 被提交后,Kubernetes就会调用 CloudProvider 在公有云上为你创建一个负载均衡服务,并且把被代理的 Pod 的 IP地址配置给负载均衡服务做后端

5.3、 ExternalName

ExternalName:用于将集群外部的服务引入集群内部,在集群内部可直接访问来获取服务。

通过对域名添加cname的方式来实现

参考https://blog.csdn.net/huwh_/article/details/77922093

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容

  • Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubern...
    devabel阅读 6,322评论 0 13
  • 1. 组件版本和配置策略 组件版本: Kubernetes 1.10.4 Docker 18.03.1-ce Et...
    Anson前行阅读 5,770评论 0 11
  • 1. 介绍 Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。 K...
    爱学习的ren阅读 1,243评论 0 0
  • 我出生在一个贫寒的家庭环境中。记事起,我每天早晨起床后,第一件事就是喂鹅。刚出生的小鹅,需要喂切碎的莴笋叶子,大约...
    我爱木棉花阅读 463评论 4 6
  • 今天送走了最后一个室友,留下了满室狼藉等我收拾。可我却觉得异常疲惫,动也不想动。 一直想让自己过得平和温暖,却又觉...
    一碗糖ls阅读 437评论 0 0