svc的类型
- ClusterIp:默认类型,自动分配一个仅 Cluster 内部可以访问的虚拟 IP
- NodePort:在 ClusterIP 基础上为 Service 在每台机器上绑定一个端口,这样就可以通过 : NodePort 来访问该服务
- LoadBalancer:在 NodePort 的基础上,借助 cloud provider 创建一个外部负载均衡器,并将请求转发到: NodePort
- ExternalName:把集群外部的服务引入到集群内部来,在集群内部直接使用。没有任何类型代理被创建,这只有 kubernetes 1.7 或更高版本的 kube-dns 才支持
1. ClusterIP
ClusterIP 主要是在集群内部访问使用.
在没有service的时候, 我们有一个nginx做负载均衡, 还有12个应用服务器, 这12个应用服务器是有控制器管理的. 当一个请求请求到nginx的时候, nginx要想正确请求的应用服务器, 就要维护一份应用服务器的ip地址. 在容器时代, 死亡一个pod或者新增一个pod都是常事, 而如果nginx要维护pod的服务列表, 那就要频繁的修改服务列表, 这样很不方便. 因此, 我们引入了service.
从上图中可以看出, service通过标签和pod进行匹配, nginx请求的时候, 不用直接去请求pod, 而是请求service, service在去请求pod. 这样就算pod增加了或者减少了, 通过标签都会自动匹配. 而我们需要给service一个