kube-proxy

kube-proxy负责为Service提供cluster内部的服务发现和负载均衡
它运行在每个Node计算节点上,负责Pod网络代理, 它会定时从etcd服务获取到service信息来做相应的策略,维护网络规则和四层负载均衡工作。在K8s集群中微服务的负载均衡是由Kube-proxy实现的,它是K8s集群内部的负载均衡器,也是一个分布式代理服务器,在K8s的每个节点上都有一个,这一设计体现了它的伸缩性优势,需要访问服务的节点越多,提供负载均衡能力的Kube-proxy就越多,高可用节点也随之增多。

k8s服务Service的4种模式

ClusterIP

Serivce 默认类型,自动分配一个仅Cluster内部可以访问的虚拟IP(VIP)
可通过kube-proxy调用ClusterIP提供服务,并实现高可用,以及负载均衡



NodePort

在ClusterIP基础上为Service在每台node绑定一个端口,这样就可以通过 NodeIP:NodePort 访问来访问该服务。
端口范围:30000~32767



LoadBalancer(对外暴露应用)

在NodePort的基础上,借助Cloud Provider创建一个外部负载均衡器,并将请求转发到NodePort(适用于公有云)



ExternalName (内部域名)

创建一个dns别名指到service name上,主要是防止service name发生变化,要配合dns插件使用。通过返回 CNAME 和它的值,可以将服务映射到 externalName 字段的内容。这只有 Kubernetes 1.7或更高版本的kube-dns才支持