最近更新时间:2021-04-27 20:18:25
Kubernetes Service资源抽象了访问一组Pod的策略,屏蔽了后端实例的动态变化和对多实例的负载均衡,用于管理集群中基于四层网络的服务访问。Service主要包含以下几种类型:
ClusterIP
: 默认方式。根据是否生成ClusterIP又可分为普通Service和Headless Service两类:
固定虚拟IP
(Cluster IP),实现集群内的访问,为最常见的方式。NodePort
:除了使用Cluster IP之外,还通过将service的port映射到集群内每个节点的相同一个端口,实现通过nodeIP:nodePort从集群外访问服务。
LoadBalancer
:和NodePort类似,不过除了使用一个Cluster IP和NodePort之外,还会使用金山云的负载均衡器(负载均衡器后端映射到各节点的NodePort),实现从集群外通过LB访问服务。
通过控制台创建Service有多种实现方式,可以在创建负载时直接设置访问方式,也可以在创建Service时关联工作负载。这里主要介绍新建Service的操作步骤:
登录容器服务控制台。
在左侧导航栏中,选择集群,进入集群管理页面。
选择需要新建Service的集群ID,进入该集群操作页面。
选择服务管理 > Service,进入Service管理页面,点击新建进入Service创建流程。
设置Service基本信息:名称、所在命名空间等。
设置访问方式:金山云容器服务提供四种访问方式,详细配置方式将在后文进行说明。
关联工作负载:可通过手动设置selector,或引用workload设置两种方式选择Service关联的工作负载。
点击创建,即可完成Service创建。
访问方式 | Service类型 | 说明 |
---|---|---|
公网访问 | LoadBalancer | - 通过金山云负载均衡将服务暴露到公网,可以直接被公网访问。容器集群自动创建一个公网负载均衡和一个公网IP,执行监听器的动态挂载和同步。 - 创建完成的服务可以在集群外通过负载均衡IP+服务端口访问,详细配置参考通过金山云负载均衡访问服务。 |
VPC内访问 | LoadBalancer | - 通过金山云负载均衡将服务暴露在集群所在VPC内,可以被VPC下的其他资源或者集群访问。容器集群会自动创建一个内网负载均衡,执行监听器的动态挂载和同步。 - 创建完成的服务可以在VPC内通过负载均衡IP+服务端口访问,详细配置参考通过金山云负载均衡访问服务。 |
集群内访问 | ClusterIP | - 将服务暴露到集群内部,可以被集群内的其他服务或者容器访问。 - 支持创建时选择Headless Service。 - 创建完成的服务可以在集群内通过服务名+服务端口访问。 |
主机端口访问 | NodePort | - 主机端口访问会在每个节点的开放一个静态端口,通过静态端口对外暴露服务。 - 创建完成后的服务可以在集群外通过节点IP+端口访问。 |
其他访问配置(包含不同负载均衡类型涉及的配置)说明如下:
LB所在子网:对于VPC内访问类型的Service,需选择LB所在子网,选择范围仅限于集群所在VPC下的终端子网类型子网。
端口映射:通过指定协议和端口,配置能够准确被下发到监听器。Service配置中支持四层协议,默认支持协议为TCP。容器端口和服务端口分别指定了后端pod的targetPort,和监听器对外服务端口。
ExternalTrafficPolicy:在服务类型为LoadBalancer或NodePort时,对外部流量路由到集群内部的转发方式进行设置。Local和Cluster(默认)选择将流量路由到节点本地或集群范围。Local模式支持获取客户端的源IP,转发效率更高,但可能存在流量转发不均衡的潜在风险。Cluster模式整体负载能力更强,同时无法获取客户端的源IP。
Annotations参数配置:支持通过annotations对负载均衡进行个性化配置,支持指定负载均衡带宽与计费方式等。注释列表请参考通过金山云负载均衡访问服务。
在Service列表页面,点击更新访问方式,支持对Service的访问方式及其他访问配置进行更新。
在Service列表页面,点击删除,将删除当前Service资源。
纯净模式