在 Kubernetes 的世界里,虽然每个 Pod 都会被分配一个单独的 IP 地址,但这个 IP 地址会随着 Pod 的销毁而消失,这就引出一个问题:如果有一组 Pod 组成一个集群来提供服务,那么如何来访问它呢?服务 (svc, Service)!
一个 Service 可以看作一组提供相同服务的 Pod 的对外访问接口,Service 作用于哪些 Pod 是通过 Label Selector 来定义的。
- 拥有一个指定的名字(比如 my-mysql-server);
- 拥有一个虚拟 IP(ClusterIP、ServiceIP 或 VIP)和端口号,销毁之前不会改变,只能内网访问;
- 能够提供某种远程服务能力;
- 被映射到了提供这种服务能力的一组容器应用上;
如果 Service 要提供外网服务,需指定公共 IP 和 NodePort,或外部负载均衡器;