服务与端点

服务与端点关系

服务定义了访问后端副本的策略:

  1. 用户创建带标签选择器的服务,Kubernetes 会自动创建同名的端点代表后端负载,此时的端点由 Kubernetes 掌管,删除修改该端点无意义,会被 Kubernetes 自动恢复至原貌。
  2. 用户创建不带标签选择器的服务,端点不会自动创建,需用户手动创建并设置 IP 和端口,此时端点代表的是非 Kubernetes 集群托管的外部服务。
  3. 删除服务,同名的端点均会被删除。

了解更多可以参考 kubernetes 官方文档

服务与发现

容器服务提供服务端服务发现机制,支持 Kubernetes 集群内部服务发现。

创建服务

登录网易云控制台

点击左侧容器服务「创建服务」即可服务的新建页面:

填写服务名称,配置端口映射,填写服务的标签选择器。

  • 端口映射

定义容器和服务的端口映射关系,其中容器端口是容器中进程监听的端口,服务端口为 1-65535 中的任意端口,此端口主要在通过服务名访问应用和接收负载均衡实例转发的请求时使用。

  • 标签选择器:

Kubernetes 将根据设置的标签选择器将流量转发到标签匹配的后端副本。当设置标签选择器时, 同名端点的设置将失效。

服务设置

修改服务配置

进入服务的列表页,点击具体服务右侧的「设置」按钮进入服务的设置页面:

服务设置中可以服务的标签选择器进行修改、添加和删除操作,点击「提交设置」后完成服务的设置:

Note

此处不能进行端口映射的修改,修改端口映射部分具体操作可以查看下文中端口设置部分。

服务删除

进入服务的列表页,点击需要删除的服务右侧的「删除」按钮,确认后即可删除当前的服务:

端口设置

服务列表中点击具体的某个服务进行当前服务的详情页面,点击「端口设置」即可进入端口映射的配置页面:

点击修改后可以对已有的端口映射信息进行修改,修改完成后点击「确定」和「保存修改」后即可完成已有端口映射信息的修改。

确认修改后「保存修改」按钮才会处于可点击状态:

服务发现

Deployment 负载的副本在出现异常时会发生自动重建,此时容器的内网 IP 会发生变化,在这种情况下如果用户应用中使用了 IP+Port 的方式访问容器会出现访问异常的情况,此时可以使用网易云容器服务提供的服务发现功能进行规避。

网易云容器服务内置了服务发现功能,用户根据自己需要配置完端口映射之后,同空间内的容器之间直接通过 "容器名:应用端口" 即可进行应用的访问,跨空间的应用之间通过容器服务实例详情页中的名称+应用端口即可进行应用的访问。以跨空间服务发现为例,具体操作步骤如下:

新建空间

进入容器服务,点击「创建空间」,填写空间名称完成空间的新建:

新建负载

在新建的空间中新建两个 Deployment 负载,本示例以网易云官方镜像 centos6.7-tools 和nginx1.2.1 为例:

其中镜像为 nginx1.2.1 的负载标签设置为 k1/v1。

新建服务

新建名称为service的服务,其中标签选择器设置为 k1/v1,端口映射配置表为80 -> 80。

服务访问

进入前文中使用 Centos:6.7-tools 镜像新建的负载,通过「副本管理」中的「Console」进入命令行界面:

执行命令 curl service 可通过 "服务名:端口" 的方式对应用进行访问:

端点管理

端点表示一个服务对应的所有副本的访问地址,端点列表会根据服务获取到的相关副本的列表动态更新,如果服务被删除则会自动删除同名的端点。

端点(Endpoints)结合服务,可以将服务流量导向跨 Kubernetes 集群的工作负载。

创建不带标签选择器的服务,即无法选择后端的副本,此时系统不会自动创建端点,因此需要手动创建一个和该服务同名的端点,用户指向实际的后端访问地址,具体创建过程参看下文。

创建端点

登录网易云控制台

点击左侧的容器服务即可进入容器服务管理页面。

点击「创建端点」按钮即可进入端点的新建页面:

填写端点名称和要转发到的目的 IP 和端口,点击「立即创建」即进入端点的创建:

Attention

当服务中设置标签选择器时, 同名端点的设置将失效。当服务未设置标签选择器且端点名称和服务名称相同时端点才会生效。