我们只用绿色的食品原料
博鱼体育零食加工厂,只为您的健康着想
2022-10-07 00:26上一篇: 超市人专业术语大全 敢说你一半都没听过! |下一篇:没有了
Pod内容器之间的通信:localhost在同一个pod内由pause镜像启动的容器。所有运行于同一个Pod内的容器与同一主机上的多个历程类似,相互之间可通过lo接口完成交互。同一node上的Pod之间的通信:overlay network同一个Node内的差别Pod之间可以直接接纳对方Pod的IP地址通信,而且不需要使用其他发现机制,例如DNS、Consul或者etcd。Pod1和Pod2都是通信veth:pair毗连到同一个docker0网桥上,它们的IP地址IP1、IP2都是从docker0网段上动态获取的,它们和网桥自己的IP3是同一个网段的。
由于Pod1和Pod2处于同一局域网内,它们之间可以通过docker0作为路由量举行通信。差别node上的Pod之间的通信:iptables规则在Kubernetes的网络世界中,Pod之间假设是通过会见对方的Pod IP举行通信的,而差别Node之间的通信只能通过Node的物理网卡举行,Pod的IP地址是由各Node上的docker0网桥动态分配的。
我们想要实现跨Node的Pod之间的通信,至少需要满足下面三个条件:知道Pod IP 和Node IP之间的映射关系,通过Node IP转发到Pod IP;在整个Kubernetes集群中对Pod的IP分配不能泛起冲突;从Pod中发出的数据包不应该举行NAT地址转换。Kubernetes会记载所有正在运行的Pod的IP分配信息,并将这些信息生存到etcd中(作为Service的Endpoint),这样我们就可以知道PodIP和Node IP之间的映射关系。以Flannel为例,Flannel实现的容器的跨主机通信通过如下历程实现:每个主机上安装并运行etcd和flannel;在etcd中计划设置所有主机的docker0子网规模;每个主机上的flanneld凭据etcd中的设置,为本主机的docker0分配子网,保证所有主机上的docker0网段不重复,并将效果(即本主机上的docker0子网信息和本主机IP的对应关系)存入etcd库中,这样etcd库中就生存了所有主机上的docker子网信息和本主机IP的对应关系;当需要与其他主机上的容器举行通信时,查找etcd数据库,找到目的容器的子网所对应的outip(目的宿主机的IP);将原始数据包封装在VXLAN或UDP数据包中,IP层以outip为目的IP举行封装;由于目的IP是宿主机IP,因此路由是可达的;VXLAN或UDP数据包到达目的宿主机解封装,解出原始数据包,最终到达目的容器。
Service与Pod间的通信:iptables规则集群网络需要在启动kube-apiserver时经由“—service-cluster-ip-range”选项举行指定,如10.96.0.0/12,而每个Service工具在此网络中均拥一个称为Cluster-IP的牢固地址。治理员或用户对Service工具的建立或更改操作由API Server存储完成后触发各节点上的kube-proxy,并凭据署理模式的差别将其界说为相应节点上的iptables规则或ipvs规则,借此完成从Service的Cluster-IP与Pod-IP之间的报文转发集群外部到Pod工具之间的通信将集群外部的流量引入到Pod工具的方式有受限于Pod所在的事情节点规模的节点端口(nodePort)和主机网络(hostNetwork)两种,以及事情于集群级此外NodePort或LoadBalancer类型的Service工具。即即是四层署理的模式也要经由两级转发才气到达目的Pod资源:请求流量首先到达外部负载平衡器,由其调理至某个事情节点之上,尔后再由事情节点的netfilter(kube-proxy)组件上的规则(iptables或ipvs)调理至某个目的Pod工具。
泉源:ITPUB博客作者:崔亮。
本文来源:博鱼体育-www.helfzrjc.com