创建服务(Service)¶
在 Kubernetes 集群中,每个 Pod 都有一个内部独立的 IP 地址,但是工作负载中的 Pod 可能会被随时创建和删除,直接使用 Pod IP 地址并不能对外提供服务。
这就需要创建服务,通过服务您会获得一个固定的 IP 地址,从而实现工作负载前端和后端的解耦,让外部用户能够访问服务。同时,服务还提供了负载均衡(LoadBalancer)功能,使用户能从公网访问到工作负载。
前提条件¶
-
容器管理模块已接入 Kubernetes 集群或者已创建 Kubernetes,且能够访问集群的 UI 界面。
-
单个实例中有多个容器时,请确保容器使用的端口不冲突,否则部署会失效。
创建服务¶
-
以
NS Edit
用户成功登录后,点击左上角的集群列表
进入集群列表
页面。在集群列表中,点击一个集群名称。 -
在左侧导航栏中,点击
容器网络
->服务
进入服务列表,点击右上角创建服务
按钮。Tip
也可以通过
YAML 创建
一个服务。 -
打开
创建服务
页面,选择一种访问类型,参考以下三个参数表进行配置。
创建 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.sessionAffinity 为 ClientIP ,详情请参考:Service 的会话亲和性 | 开启 |
会话保持最大时长 | 【类型】选填 【含义】开启会话保持后,保持的最大时长,默认超时时长为 30 秒 .spec.sessionAffinityConfig.clientIP.timeoutSeconds 默认设置为 30 秒 | 30 秒 |
注解 | 【类型】选填 【含义】为服务添加注解 |
创建 LoadBalancer 服务¶
点选负载均衡(LoadBalancer)
,这是指使用云提供商的负载均衡器向外部暴露服务。 外部负载均衡器可以将流量路由到自动创建的 NodePort
服务和 ClusterIP
服务上。参考下表配置参数。
参数 | 说明 | 举例值 | |
---|---|---|---|
访问类型 | 【类型】必填 【含义】指定 Pod 服务发现的方式,这里选择节点访问(NodePort)。 | NodePort | |
服务名称 | 【类型】必填 【含义】输入新建服务的名称。 【注意】请输入4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。 | Svc-01 | |
命名空间 | 【类型】必填 【含义】选择新建服务所在的命名空间。关于命名空间更多信息请参考命名空间概述。 【注意】请输入4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。 | default | |
外部流量策略 | 【类型】必填 【含义】设置外部流量策略。 Cluster:流量可以转发到集群中其他节点上的 Pod。 Local:流量只发给本机的 Pod。 【注意】请输入4 到 63 个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。 | ||
标签选择器 | 【类型】必填 【含义】添加标签,Service 根据标签选择 Pod,填写后点击“添加”。也可以引用已有工作负载的标签,点击 引用负载标签 ,在弹出的窗口中选择负载,系统会默认将所选的负载标签作为选择器。 | ||
负载均衡地址 | 【类型】必填 【含义】云厂商提供的负载均衡地址 | ||
端口配置 | 【类型】必填 【含义】为服务添加协议端口,需要先选择端口协议类型,目前支持 TCP、UDP 两种传输协议额关于协议更多信息请参考协议概述。 端口名称:输入自定义的端口的名称。 服务端口(port):Pod 对外提供服务的访问端口。默认情况下,为了方便起见,服务端口被设置为与容器端口字段相同的值。 容器端口(targetport):工作负载实际监听的容器端口。 节点端口(nodeport):节点的端口,接收来自于 ClusterIP 传输的流量。用来做外部流量访问的入口。 | ||
注解 | 【类型】选填 【含义】为服务添加注解 |
完成服务创建¶
配置完所有参数后,点击确定
按钮,自动返回服务列表。在列表右侧,点击 ︙
,可以修改或删除所选服务。