K8S-service

拥有回忆 提交于 2019-12-23 02:40:54

概念

k8s的service也叫服务,通过label识别一组pod,并提供访问这些pod的策略。
service能够提供4层的负载均衡能力。对于7层(通过域名访问)的访问,需要借助ingress来实现。
在这里插入图片描述

Service的类型

1)clusterIp:默认类型,自动为该service分配一个clusterIp,只能够供内部访问,不能将Service暴露给外部。
在这里插入图片描述
2)Nodepoint:在ClusterIP的基础上为service在每台机器上绑定一个端口,这样就可以通过NodeIP:port来提供外部访问。(具体原理是通过DNAT转发规则来实现)
在这里插入图片描述
3)LoadBalancer:在NodePort基础上,借助cloud provider(云服务商)创建一个外部的负载均衡,并将请求转发到NodeIP:PORT上。
4)ExternalName:吧集群外部的服务引入到集群内部,在集群内部直接使用,k8sv1.7以上的版本kube-dns支持。

Service代理

K8s为每一个Node上运行一个kube-proxy,他负责为service实现了一种VIP(虚拟IP),K8S1.0版本代理在userspace上,1.1在iptables中实现,1.2起增加了ipvs代理。
为什么不用DNS代理?DNS会缓存,无法起到负载均衡的效果。
kube-proxy监控service pod变化,并将service与pod的映射关系添加到iptables上。kube-apiserver监听kube-proxy,并将其收集到的service信息保存到etcd数据库。
1)userspace代理模式
在这里插入图片描述
clientPod首先要访问iptables,iptables在访问kube-proxy,kube-proxy在经过负载均衡访问Service.
2)iptables代理
在这里插入图片描述
访问直接由iptables来实现转发和负载均衡。
3)ipvs
其他不变将iptables换成ipvs。
三种模式的效率依次提高。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!