https://www.volcengine.com/docs/6460/100985
使用 Service 解决 Pod 的访问问题
Kubernetes 中的 Service 对象就是用来解决上述 Pod 访问问题的。Service 有一个固定 IP 地址,用户可以通过访问 Service 来访问工作负载。而 Service 通过 Label 来选择 Pod,并将用户的访问流量转发给 Pod,同时,Service 还可以给 Pod 做负载均衡。

Service 的类型
Service 包含多种类型,适应于不同的场景。包括:
- 集群内访问(ClusterIP):将工作负载暴露给同一集群内其他工作负载访问的方式,可以通过 集群内部域名 访问。
- 节点端口访问(NodePort):在每个节点的 IP 上开放一个静态端口,通过静态端口对外暴露服务。外部用户通过请求 节点 IP : 节点 Port,即可访问服务。
- 负载均衡(LoadBalancer):通过使用外部负载均衡器,使流量能够平滑地分发到集群中的多个 Pod 上。当创建一个 LoadBalancer 类型的 Service 时,系统会为该 Service 创建或复用一个外部的负载均衡器(Cloud Load Balancer,CLB),用于向公网或者内网暴露服务。
- 在 Pod 直通模式下,Pod 会被直接添加到 CLB 后端,外部的请求会直接转发到 Pod,不会再经过节点进行转发。适用于对网络有性能要求的场景。
- 在非 Pod 直通模式下,流量经由节点 NodePort 转发到 Pod 中。此时,不同外部流量策略的主要区别如下:
- Local:Pod 所在的节点被添加到 CLB 后端,外部流量只会到达有 Pod 所在的节点。节点的流量只转发给本节点的 Pod,即流量仅在同一个节点的 Pod 中进行转发。
- Cluster:集群所有节点均会被添加到 CLB 后端,外部流量可能会转发到任意节点。节点的流量会转发到不同节点的 Pod。