跳转至

创建服务(Service)

在 Kubernetes 集群中,每个 Pod 都有一个内部独立的 IP 地址,但是工作负载中的 Pod 可能会被随时创建和删除,直接使用 Pod IP 地址并不能对外提供服务。

这就需要创建服务,通过服务您会获得一个固定的 IP 地址,从而实现工作负载前端和后端的解耦,让外部用户能够访问服务。 同时,服务还提供了负载均衡(LoadBalancer)功能,使用户能从公网访问到工作负载。

前提条件

创建服务

  1. NS Editor 用户成功登录后,点击左上角的 集群列表 进入 集群列表 页面。在集群列表中,点击一个集群名称。

    集群列表

  2. 在左侧导航栏中,点击 容器网络 -> 服务 进入服务列表,点击右上角 创建服务 按钮。

    服务与路由

    Tip

    也可以通过 YAML 创建 一个服务。

  3. 打开 创建服务 页面,选择一种访问类型,参考以下几个参数表进行配置。

    创建服务

创建 ClusterIP 服务

点选 集群内访问(ClusterIP) ,这是指通过集群的内部 IP 暴露服务,选择此项的服务只能在集群内部访问。这是默认的服务类型。参考下表配置参数。

参数 说明 举例值
访问类型 【类型】必填
【含义】指定 Pod 服务发现的方式,这里选择集群内访问(ClusterIP)。
ClusterIP
服务名称 【类型】必填
【含义】输入新建服务的名称。
【注意】请输入 4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
Svc-01
命名空间 【类型】必填
【含义】选择新建服务所在的命名空间。关于命名空间更多信息请参考命名空间概述
【注意】请输入 4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
default
标签选择器 【类型】必填
【含义】添加标签,Service 根据标签选择 Pod,填写后点击“添加”。也可以引用已有工作负载的标签,点击 引用负载标签 ,在弹出的窗口中选择负载,系统会默认将所选的负载标签作为选择器。
app:job01
端口配置 【类型】必填
【含义】为服务添加协议端口,需要先选择端口协议类型,目前支持 TCP、UDP 两种传输协议。
端口名称:输入自定义的端口的名称。
服务端口(port):Pod 对外提供服务的访问端口。
容器端口(targetport):工作负载实际监听的容器端口,用来对集群内暴露服务。
会话保持 【类型】选填
【含义】开启后,相同客户端的请求将转发至同一 Pod
开启
会话保持最大时长 【类型】选填
【含义】开启会话保持后,保持的最大时长,默认为 30 秒
30 秒
注解 【类型】选填
【含义】为服务添加注解

创建 NodePort 服务

点选 节点访问(NodePort) ,这是指通过每个节点上的 IP 和静态端口( NodePort )暴露服务。 NodePort 服务会路由到自动创建的 ClusterIP 服务。通过请求 <节点 IP>:<节点端口> ,您可以从集群的外部访问一个 NodePort 服务。参考下表配置参数。

参数 说明 举例值
访问类型 【类型】必填
【含义】指定 Pod 服务发现的方式,这里选择节点访问(NodePort)。
NodePort
服务名称 【类型】必填
【含义】输入新建服务的名称。
【注意】请输入 4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
Svc-01
命名空间 【类型】必填
【含义】选择新建服务所在的命名空间。关于命名空间更多信息请参考命名空间概述
【注意】请输入 4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
default
标签选择器 【类型】必填
【含义】添加标签,Service 根据标签选择 Pod,填写后点击“添加”。也可以引用已有工作负载的标签,点击 引用负载标签 ,在弹出的窗口中选择负载,系统会默认将所选的负载标签作为选择器。
端口配置 【类型】必填
【含义】为服务添加协议端口,需要先选择端口协议类型,目前支持 TCP、UDP 两种传输协议。
端口名称:输入自定义的端口的名称。
服务端口(port):Pod 对外提供服务的访问端口。默认情况下,为了方便起见,服务端口被设置为与容器端口字段相同的值。
容器端口(targetport):工作负载实际监听的容器端口。
节点端口(nodeport):节点的端口,接收来自 ClusterIP 传输的流量。用来做外部流量访问的入口。
会话保持 【类型】选填
【含义】开启后,相同客户端的请求将转发至同一 Pod
开启后 Service 的 .spec.sessionAffinityClientIP ,详情请参考:Service 的会话亲和性
开启
会话保持最大时长 【类型】选填
【含义】开启会话保持后,保持的最大时长,默认超时时长为 30 秒
.spec.sessionAffinityConfig.clientIP.timeoutSeconds 默认设置为 30 秒
30 秒
注解 【类型】选填
【含义】为服务添加注解

创建 LoadBalancer 服务

点选 负载均衡(LoadBalancer) ,这是指使用云提供商的负载均衡器向外部暴露服务。 外部负载均衡器可以将流量路由到自动创建的 NodePort 服务和 ClusterIP 服务上。参考下表配置参数。

参数 说明 举例值
访问类型 【类型】必填
【含义】指定 Pod 服务发现的方式,这里选择负载均衡(LoadBalancer)。
LoadBalancer
服务名称 【类型】必填
【含义】输入新建服务的名称。
【注意】请输入 4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
Svc-01
命名空间 【类型】必填
【含义】选择新建服务所在的命名空间。关于命名空间更多信息请参考命名空间概述
【注意】请输入 4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
default
外部流量策略 【类型】必填
【含义】设置外部流量策略。
Cluster:流量可以转发到集群中所有节点上的 Pod。
Local:流量只发给本节点上的 Pod。
【注意】请输入 4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
标签选择器 【类型】必填
【含义】添加标签,Service 根据标签选择 Pod,填写后点击“添加”。也可以引用已有工作负载的标签,点击 引用负载标签 ,在弹出的窗口中选择负载,系统会默认将所选的负载标签作为选择器。
负载均衡类型 【类型】必填
【含义】使用的负载均衡类型,当前支持 MetalLB 和其他。
MetalLB IP 池 【类型】必填
【含义】选择的 负载均衡类型为 MetalLB 时,LoadBalancer Service默认会从这个池中分配 IP 地址, 并且通过 APR 宣告这个池中的所有 IP 地址
负载均衡地址 【类型】必填
【含义】
1.如使用的是公有云 CloudProvider,此处填写的为云厂商提供的负载均衡地址;
2.如果上述负载均衡类型选择为 MetalLB ,默认从上述 IP 池中获取 IP ,如果不填则自动获取。
端口配置 【类型】必填
【含义】为服务添加协议端口,需要先选择端口协议类型,目前支持 TCP、UDP 两种传输协议。
端口名称:输入自定义的端口的名称。
服务端口(port):Pod 对外提供服务的访问端口。默认情况下,为了方便起见,服务端口被设置为与容器端口字段相同的值。
容器端口(targetport):工作负载实际监听的容器端口。
节点端口(nodeport):节点的端口,接收来自 ClusterIP 传输的流量。用来做外部流量访问的入口。
注解 【类型】选填
【含义】为服务添加注解

创建 ExternalName 服务

点选 外部服务(ExternalName) ,这是指通过将服务映射到外部域名来暴露服务。选择此项的服务不会创建典型的 ClusterIP 或 NodePort,而是通过 DNS 名称解析将请求重定向到外部的服务地址。参考下表配置参数。

参数 说明 举例值
访问类型 【类型】必填
【含义】指定 Pod 服务发现的方式,这里选择外部服务(ExternalName)。
ExternalName
服务名称 【类型】必填
【含义】输入新建服务的名称。
【注意】请输入 4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
Svc-01
命名空间 【类型】必填
【含义】选择新建服务所在的命名空间。关于命名空间更多信息请参考命名空间概述
【注意】请输入 4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
default
域名 【类型】必填

完成服务创建

配置完所有参数后,点击 确定 按钮,自动返回服务列表。在列表右侧,点击 ,可以修改或删除所选服务。

服务列表