Docker Kubernetes Service 网络服务代理模式详解

Docker Kubernetes  Service 网络服务代理模式详解前端

Servicenode

  • service是实现kubernetes网络通讯的一个服务
  • 主要功能:负载均衡、网络规则分布到具体pod

注:kubernetes deployment服务分配服务器负载均衡VIP只能NODE节点单独访问,这里须要外网用户能够放问到容器内,这里就须要用到service。nginx


网络代理模式后端

  • kube-proxy v1.0中只支持userspace模式,在v1.1中,添加了iptables代理,在v1.2开始iptables是默认的。
  • service为pod提供了一个统一的访问入口已userspace模式iptables模式,进行代理转发。
  • userspace与iptables主要是实现对IP的转发。

userspace模式
一、NODE节点的客户端要访问service的代理IP+端口。
二、IP与端口是由kube-proxy维护的,它建立了IPtables一个规则。
三、请求通过IPtables后,再转发给kube-proxy端口。
四、kube-proxy关联后端的backend pod,将请求根据标签代理到指定的Backenpod。服务器

注:Backend Pod:访问节点IP的指定端口,转发到后端的pod。kubectl get ep 可查看Backend Pod IP。
注:效率比较低,须要通过一次转发。
注:kube-proxy是使用的用户空间处理。网络

 

iptables模式
一、NODE节点客户端直接访问serviceIP,Linux根据Iptables协议栈规则策略匹配。
二、serviceIP根据标签直接访问Backendpod。负载均衡

注:直接使用iptables 使用内核空间处理 速度快。spa


服务代理类型代理

ClusterIPblog

  分配一个内部集群IP地址,只能在集群内部访问(同Namespace内的Pod),默认ServiceType。

NodePort

  分配一个内部集群IP地址,并在每一个节点上启用一个端口来暴露服务,能够在集群外部访问。

  访问地址:<NodeIP>:<NodePort>

LoadBalancer

  分配一个内部集群IP地址,并在每一个节点上启用一个端口来暴露服务。

  除此以外,Kubernetes会请求底层云平台上的负载均衡器,将每一个Node([NodeIP]:[NodePort])做为后端添加进去。

ExternalName

  经过CNAME将Service与externalName的值映射。要求kube-dns的版本为v1.7+。

 

拓扑图
nodeport:前端对用户代理使用nginx/LVS/HAProxy来作为负载均衡使用,代理每一个NODE节点IP端口去访问pod。

 

LoadBalancer:主要经过云平台提供封装好的接口来作为负载均衡器进行代理转发。

相关文章
相关标签/搜索