用户在 Kubernetes 中可以部署各种容器,其中一部分是通过 HTTP、HTTPS 协议对外提供七层网络服务,另一部分是通过 TCP、UDP 协议提供四层网络服务。而 Kubernetes 定义的 Service 资源就是用来管理集群中四层网络的服务访问。
Kubernetes 的 ServiceTypes
允许指定 Service 类型,默认为 ClusterIP
类型。ServiceTypes
的可取值以及行为描述如下:
IP
暴露服务。当您的服务只需要在集群内部被访问时,请使用该类型。该类型为默认的 ServiceType
。IP
和静态端口(NodePort)暴露服务。NodePort
服务会路由到 ClusterIP
服务,该 ClusterIP
服务会自动创建。通过请求 <NodeIP>:<NodePort>,可从集群的外部访问该 NodePort
服务。除了测试以及非生产环境以外,不推荐在生产环境中直接通过集群节点对外甚至公网提供服务。从安全上考虑,使用该类型会直接暴露集群节点,容易受到攻击。通常认为集群节点是动态的、可伸缩的,使用该类型使得对外提供服务的地址和集群节点产生了耦合。NodePort
服务,或直接转发到处于 VPC-CNI 网络条件下的容器中。ClusterIP
和 NodePort
类型的 Service,在不同云服务商或是自建集群中的行为表现通常情况下相同。而 LoadBalancer
类型的 Service,由于使用了云服务商的负载均衡进行服务暴露,云服务商会围绕其负载均衡的能力提供不同的额外功能。例如,控制负载均衡的网络类型,后端绑定的权重调节等,详情请参见 Service 管理 相关文档。
根据上述 ServiceTypes
定义。您可以使用腾讯云容器服务(TKE)提供的以下四种服务访问方式:
访问方式 | Service 类型 | 说明 |
---|---|---|
公网 | LoadBalancer |
|
VPC 内网 |
LoadBalancer |
|
主机端口访问 | NodePort |
|
仅集群内访问 | ClusterIP |
|
腾讯云容器集群中的 Service Controller
组件负责用户 Service 资源的同步。当用户创建、修改或删除 Service 资源时、集群节点或 Service Endpoints 出现变化时、组件容器发生飘移重启时,组件都会对用户的 Service 资源进行同步。
Service Controller
会依照用户 Service 资源的描述创建对应的负载均衡资源,并对监听器及其后端进行配置。当用户删除集群 Service 资源时,也会回收对应负载均衡资源。
Service 对外服务的能力依赖于负载均衡所提供的资源,服务资源管理也是 Service 的重要工作之一。Service 在资源的生命周期管理中会使用以下标签:
tke-createdBy-flag = yes
:标识该资源是由容器服务创建。tke-clusterId = <clusterid>
:标识该资源被哪一个 Cluster 所使用的。说明:若用户使用了已有负载均衡,则 Service 仅会使用该负载均衡,而不会删除该负载均衡。
当 LoadBalancer
类型的 Service 集群资源被创建时,对应负载均衡的生命周期就开始了。直到 Service 资源被删除或是负载均衡被重建时,负载均衡的生命周期就结束了。在此期间负载均衡会持续根据 Service 资源的描述进行同步。当用户切换 Service 的网络访问时,例如公网 > VPC 内网、VPC 内网 > 公网、VPC 子网切换、更换使用的已有负载均衡,此类操作都会涉及到负载均衡的重建或销毁。LoadBalancer
类型 Service 工作原理如下图所示:
Service 相关操作及功能如下,您可参考以下文档进一步了解:
本页内容是否解决了您的问题?