Kubernetes之服务发现
我们一起学习 Kubernetes 的服务发现吧!
Kubernetes 中为了实现服务实例间的负载均衡和不同服务间的服务发现,创造了 Service 对象,同时又为从集群外部访问集群创建了 Ingress 对象。

1. 基本概念
介绍关于 K8S 中 Service 的基本知识和要点!
Pod 是有生命周期的,可以被创建且销毁之后不会再启动。而使用 Deployment 来运行您的应用程序,则它可以动态创建和销毁 Pod。就之前学习的知识,我们都是部署单独的服务,并没有应用实际的示例。比如,我们现在部署一个前后端分离的项目,前端是一组 Pod,后端也是一组 Pod,那么前端如何找出并跟踪要连接的 IP 地址,以便前端可以使用工作量的后端部分? Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问它们的策略 —— 通常称为 微服务。这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector 来实现的。 Service 能够提供负载均衡的能力,但是在使用上有以下限制:只提供 4 层负载均衡能力,而没有 7 层功能,但有时我们可能需要更多的匹配规则来转发请求,这点上 4 层负载均衡是不支持的。

2. 类型介绍
介绍关于 K8S 中 Service 的类型和对应用途!

- Service 在 K8S 中有以下四种类型
编号 | 类型 | 用途介绍 |
---|---|---|
1 | ClusterIp | 默认类型;自动分配一个仅 Cluster 内部可以访问的虚拟 IP 地址 |
2 | NodePort | 在 ClusterIP 基础上为 Service 在每台机器上绑定一个端口,这样就可以通过 :NodePort 来访问该服务 |
3 | LoadBalancer | 在 NodePort 的基础上,借助 cloud provider 创建一个外部负载均衡器,并将请求转发到 :NodePort 来访问该服务 |
4 | ExternalName | 把集群外部的服务引入到集群内部来,在集群内部直接使用。没有任何类型代理被创建,这只有 Kubernetes1.7 或更高版本的 kube-dns 才支持 |

- VIP(虚拟 IP 地址)和 Service 代理