service概述
Service概述
1. Service 基本概念
用户在 Kubernetes 中可以部署各种容器,其中一部分是通过 HTTP、HTTPS 协议对外提供七层网络服务,另一部分是通过 TCP、UDP 协议提供四层网络服务。而 Kubernetes 定义的 Service 资源就是用来管理集群中四层网络的服务访问。
Kubernetes 的 ServiceTypes 允许指定 Service 类型,默认为 ClusterIP 类型。ServiceTypes 的可取值以及行为描述如下:
可取值 | 说明 |
---|---|
ClusterIP | 通过集群的内部 IP 暴露服务。当您的服务只需要在集群内部被访问时,请使用该类型。该类型为默认的 ServiceType。 |
NodePort | 通过每个集群节点上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,该 ClusterIP 服务会自动创建。通过请求 |
LoadBalancer | 使用容器云的负载均衡器,可以向公网或者内网暴露服务。负载均衡器可以路由到 NodePort 服务,或直接转发到容器中。 |
更多详情请参见 Kubernetes官方文档 。
2. Service类型介绍
根据上述 ServiceTypes 定义,您可以使用容器云CSK提供的以下Service类型:
Service类型 | 访问方式 | 说明 |
---|---|---|
ClusterIP | 仅集群内访问 | 使用ClusterIP类型的Service,自动分配Service CIDR中的 IP用于集群内访问(如果勾选了Headless Service 则不会自动分配 IP ,Headless Service更多详情请参见 集群内访问(ClusterIP) )。使用这种方式可以保证容器部署的应用和集群外部网络隔离。 创建完成后,集群内可通过服务名或IP + 服务端口访问。 |
LoadBalancer | VPC 网络 | 使用LoadBalancer类型的Service,并选择私网访问,同一VPC下的其他云上资源(例如云服务器)即可通过子网IP,经过负载均衡器,访问到容器集群内的Pod。 创建完成后,在集群外同一VPC 网络内,可通过负载均衡 IP(即子网 IP) + 服务端口访问,集群内可通过服务名或IP + 服务端口访问。 |
LoadBalancer | 公网 | 使用LoadBalancer类型的Service,选择公网访问,即可通过弹性公网IP(即EIP),经过负载均衡器,访问到容器集群内的Pod。 创建完成后,在集群外可通过EIP + 服务端口访问服务,集群内可通过服务名 + 服务端口访问。 |
3. 注意事项
- 容器集群内创建 Service 会占用 Service CIDR 下 IP,请确保 Service CIDR 的剩余 IP 足够;
- 容器集群 Service 创建的 LoadBalancer 会把流量转发到 Endpoint 内所有的 Pod 上;
- 容器集群 Service 创建的 LoadBalancer 生命周期 和 Service 的生命周期保持一致;
- 容器集群创建 LoadBalancer 类型的 Service ,会占用容器网络下 IP,请确保剩余 IP 足够;
- 容器集群创建 LoadBalancer 类型的 Service ,并选择公网访问,会自动分配一个弹性公网IP,由该EIP产生的流量暂不计费。