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