美文网首页k8s那点事儿
kubernetes的网络实现

kubernetes的网络实现

作者: 跨界师 | 来源:发表于2017-03-12 17:49 被阅读392次

kubernetes的网络实现

kubernetes的网络设计主要针对以下几种情况实现的:

同一pod下容器与容器的通信;

同一节点下不同的pod之间的容器间通信;

不同节点下容器之间的通信;

集群外部与内部组件的通信;

pod与service之间的通信;

同一pod下容器与容器的通信

同一个pod下的容器之间的通信,其实原理很简单,因为容器都在共用一个linux协议栈,可以

简单的看作在同一个网络里面,所以可以理解为一个容器为web服务,一个容器为mysql。

web服务可以使用宿主机的IP地址+3306端口就可以访问,不需要通过其他组件的处理,这种

访问方式是最简单的。

同一节点下不同的pod之间的容器间通信

这种通信方式就会比前面的复杂一点,至少需要理解pod之间的通信方式。

同一个node上的不同pod之间的通信:

在同一个node上,pod之间都是通过veth链接到docker0网桥上,docker0会动态地分配IP地址给pod。

综上所述:由于它们在同一个节点上,而且共用一个docker0网桥,所以网络地址也是相同点的,也可以直连。

不同节点下容器之间的通信

不同节点的容器通信就复杂点,不过理解还是很容易的。

由于容器分别在不同的容器上,所以她们就会由不同的docker0来分配不同的IP地址,有可能

就不会在同一个网段内,为了实现通信呢,就必须想办法通过IP地址寻址的方式来实现通信。

pod与service之间的通信

kubernetes创建服务时,会为服务分配一个虚拟的IP地址,即为ClusterIP,客户端通过访问这

个虚拟IP地址来访问内部组件。实质上具体访问内部的工作都是kube-proxy来完成的。kube-

proxy担负着透明代理和负载均衡的角色,其实就是将某个访问service的请求,通过一套算法

和规则转发给后端的pod,这里说的算法就是Round Robin负载均衡算法和session粘连规则。

我们还可以通过修改service里面的service.spec.sessionAffinity参数的值来实现会话保持特

的定向转发。

总之,不管是clusterIP+targetPort,还是节点IP+NodePort,都会被Iptables规则重新定向到

kube-proxy监听服务的代理端口。

集群外部与内部组件的通信

集群外部与内部的通信,目前就是两种方式:

(1)NodeIP+NodePort

这种方式就是直接在宿主机上打开一个端口,用来访问集群内部服务。

(2)loadBalance

使用外部云服务提供商的负载均衡器。

其原理也是很简单

外部请求访问内部服务,iptables为设置Nodeport规则,将对Service的访

问转接到kube-proxy作为负载均衡器,然后经过负载均衡算法进入到pod中。


相关文章

  • kubernetes的网络实现

    kubernetes的网络实现 kubernetes的网络设计主要针对以下几种情况实现的: 同一pod下容器与容器...

  • Kubernetes网络实现

    在《Linux虚拟网络技术》这篇文章中我们已经详细介绍了Linux虚拟网络技术,在《Docker网络实现》这篇文章...

  • 5 网络与安全

    Kubernetes网络 提供多种选项帮助实现网络连接,k8s本身不关心如何实现它,但需满足三个基本要求: 无需N...

  • 橘子皮学docker之Kubernetes的网络知识

    目录 docker的网络通信 kubernetes的网络通信 总结 kubernetes集群搭建完成后,使用doc...

  • 基于OVN的Kubernetes网络架构解析

    【编者的话】Kubernetes经过了几年的发展,存在着很多的网络方案。然而网络虚拟化在Kubernetes出现前...

  • Kubernetes网络

    Kubernetes网络模型 Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址...

  • Kubernetes:网络

    Kubernetest网络 各容器之间的网络交互 一个容器想要与外界做到互通就需要一套网络栈也就是它发出、响应网络...

  • Kubernetes网络

    kube-proxy 我们知道,Kubernetes中Pod的生命是短暂了,它随时可能被终止。即使使用了Deplo...

  • 基于Kubernetes实现前后端应用的金丝雀发布

    基于Kubernetes实现前后端应用的金丝雀发布 公司的研发管理平台实现了Gitlab+Kubernetes的D...

  • 从零开始入门 K8s | Kubernetes 网络概念及策略控

    一、Kubernetes 基本网络模型 本文来介绍一下 Kubernetes 对网络模型的一些想法。大家知道 Ku...

网友评论

    本文标题:kubernetes的网络实现

    本文链接:https://www.haomeiwen.com/subject/qrqxnttx.html