云应用引擎支持基于 K8s ServiceName 的多语言服务注册发现功能,通过 ServiceName 做服务间调用。您可以为应用配置一个云应用引擎集群内可以访问的固定域名,解决每次部署以后实例 IP 变化的问题。本文介绍如何通过云应用引擎控制台,为应用配置基于 K8s ServiceName 的服务访问。
背景信息
在分布式微服务框架下,当服务上下线变更时,通过服务注册与服务发现功能,实现服务端和调用端的正常通信。
服务注册:针对服务端。服务实例把自身的服务信息注册到注册中心后,调用端从注册中心读取并订阅相关信息。
服务发现:针对调用端。注册中心对服务下的实例地址和元数据进行探测,并以预先定义的接口提供给调用端进行查询。服务实例向注册中心发起请求,在获取依赖的服务信息后,再通过这些信息去请求提供的服务。
使用限制
该域名仅支持访问 CAE 应用内的实例,不支持其他实例或者集群通过该域名访问 CAE,例如FC、ACK、ECS。如果其他产品需要访问 CAE,建议您绑定一个私网/公网 ELB 来提供访问。更多信息,请参见为应用绑定公网 ELB 访问。
该域名不支持使用 ping 命令访问 K8s Service,您可以在代码里通过 K8s Service 以 TCP 或者 UDP 的方式进行访问。建议您使用 curl 命令,测试应用的Pod IP来排查网络是否联通。
应用 Pod 无法通过 K8s Service 访问到应用 Pod 自身。
Job 不支持通过 K8s Service 的方式访问应用。
如果服务端应用与客户端应用想要进行互相调用,两者都需要先配置 K8s Service。
功能入口
场景不同,操作入口也有所不同。
创建应用
登录 CAE 控制台,在左侧导航栏选择 应用管理 > 应用列表,然后单击创建应用
在应用基本信息向导页面进行配置后,单击下一步:高级设置
对正在运行的应用进行变更
注意 重新部署应用后,该应用将会被重启。为避免业务中断等不可预知的错误,请在业务低峰期执行部署操作。
登录 CAE 控制台,在左侧导航栏选择 应用管理 > 应用列表,然后单击目标应用名称
在目标应用的基础信息页面,单击部署应用
对已停止的应用进行变更
登录 CAE 控制台,在左侧导航栏选择 应用管理 > 应用列表,然后单击目标应用名称
在目标应用的基础信息页面,单击修改应用配置
K8s Service Name配置指引
在高级设置配置页展开服务注册发现区域,打开启用基于 K8s Service 服务注册发现开关,配置相关信息。
| 配置项 | 说明 |
|---|---|
| 服务名称 | 自定义服务名称。必须保证同一用户地域内唯一,创建成功后不允许修改。 说明 默认的服务名称为应用名称。 |
| 端口 | 输入端口,取值范围为[1,65535]。 说明 最多支持添加 5 条端口与协议的配置信息。 |
| 容器端口 | 输入容器端口。 |
| 协议 | 在下拉列表选择目标协议。支持协议如下:
|
查看访问的域名
配置完成后,在目标应用的基础信息页面,在应用访问设置区域的基于K8s Service访问页签查看。
说明 支持以下三种域名:
访问与该应用相同命名空间内的应用,使用服务名称(本示例中为demo)即可进行访问。
跨命名空间访问,需要使用以下域名进行访问,以下域名只作为示例说明。
demo.{namespaceID}
demo.{namespaceID}.svc.cluster.local
有状态应用配置服务发现
部署有状态应用时,高级设置页面的服务注册发现区域,可以配置实例间服务发现。
实例间服务发现,仅可配置服务名称。必须保证同一用户地域内唯一,创建成功后不允许修改。
配置完成后,可在应用信息的应用访问设置中查看。
说明 支持以下三种域名:
访问与该应用相同命名空间内的应用,使用服务名称(本示例中为demo)即可进行访问。
跨命名空间访问,需要使用以下域名进行访问,以下域名只作为示例说明。
demo.{namespaceID}
demo.{namespaceID}.svc.cluster.local
如需访问指定实例,可以使用以下域名进行访问。
{实例ID}.demo.{namespaceID}
{实例ID}.demo.{namespaceID}.svc.cluster.local