边缘容器 ServiceGroup 功能 介绍了 ServiceGroup 设计思想,以及如何 通过 yaml 管理资源,本文将介绍如何通过控制台管理 ServiceGroup 资源。
通过控制台使用 ServiceGroup 功能
新建 DeploymentGrid 资源
- 登录容器服务控制台,选择左侧导航栏中的 边缘集群。
- 在“边缘集群”页面单击需要创建 DeploymentGrid 资源的集群 ID,进入边缘集群管理页面。
- 选择边缘集群左侧菜单中的ServiceGroup > DeploymentGrid,进入 “DeploymentGrid” 管理页面。
- 单击新建,进入 “新建DeploymentGrid” 页面。如下图所示:
根据实际需求,设置 DeploymentGrid 参数。关键参数信息如下:- 工作负载名:DeploymentGrid 资源名。
- NodeGroup:新建资源绑定的 NodeGroup。填写已有的 NodeGroup 将会自动产生关联,否则将新建一个 NodeGroup。
- 实例内容器:需输入 Container 相关信息。
- 单击创建DeploymentGrid,完成创建。
- 创建成功后,在 “DeploymentGrid” 管理页面即可查看已新建的 DeploymentGrid 对象。在 “NodeGroup” 管理页面即可查看创建 DeploymentGrid 时填写的 NodeGroup 对象。
管理 NodeGroup
- 登录容器服务控制台,选择左侧导航栏中的 边缘集群。
- 单击需要管理 NodeGroup 的集群 ID,进入该集群详情页。
- 选择边缘集群左侧菜单中的ServiceGroup > NodeGroup,进入 “NodeGroup” 管理页面。
- 选择需要管理 NodeGroup 的名称,进入 NodeUnit 列表页面,单击新建NodeUnit。
- 在弹出的添加NodeUnit窗口中,按需选择 NodeUnit 的名称和节点。如下图所示:
- 名称:自定义 NodeUnit 的名称。
- 节点:向自定义 NodeUnit 中添加节点。
注意:
一个 NodeGroup 下可以有多个 NodeUnit,通常同一个 NodeUnit 中的节点位于相同的内网,ServiceGrid 资源中的服务组会将流量限定在同一个 NodeUnit 所绑定的节点中。
- 单击确定,完成创建 NodeUnit。创建成功后,即可在 NodeUnit 列表页面进行查看。
新建 ServiceGrid 资源
- 登录容器服务控制台,选择左侧导航栏中的 边缘集群。
- 单击需要新建 ServiceGrid 资源的集群 ID,进入该集群详情页。
- 选择边缘集群左侧菜单中的ServiceGroup > ServiceGrid,进入 “ServiceGrid” 管理页面。
- 单击新建,进入 “新建ServiceGrid” 页面。如下图所示:
主要参数信息如下:- NodeGroup:新建 ServiceGrid 对象将与选中的 NodeGroup 建立关联关系。
- DeploymentGrid绑定(选填):新建 ServiceGrid 对象将与选中的 DeploymentGrid 绑定。推荐使用 “引用DeploymentGrid”。
注意:
在弹出的“引用DeploymentGrid” 窗口中,需根据 NodeGroup 值进行人工筛选,以确保与绑定的 DeploymentGrid 关联相同的 NodeGroup。
- 单击创建ServiceGrid,完成创建。
创建成功后,在 “ServiceGrid” 管理页面即可查看已新建的 ServiceGrid 对象,也可通过编辑YAML对 ServiceGrid 资源进行修改。注意:目前只支持修改 ”GridUniqKey“ 字段和 ”Ports“ 字段。”GridUniqKey“ 即创建 ServiceGroup 时的 NodeGroup 值。
测试验证
该步骤验证 ServiceGroup 功能是否具备编排调度与流量闭环的能力。
编排调度
- 参考 新建 DeploymentGrid 资源,创建对象
ngx
。 - 参考 管理 NodeGroup,创建对象
zone1
,并与 DeploymentGrid 资源ngx
关联。 - 在
zone1
中创建两个 NodeUnit,分别为sc
、xj
。在sc
中绑定2个节点,在xj
中绑定1个节点。
完成以上操作后进入工作负载 > Deployment页面,“Deployment” 管理页面将出现 ngx-sc
、ngx-xj
。如下图所示:
单击 ngx-sc
进入 “Pod 管理页面” 后可看到,ngx-sc
的 Pod 全部运行在 sc
的2个节点上。同理,ngx-xj
的 Pod 全部运行在 xj
的1个节点上。
- 如果在 NodeGroup 中增加 NodeUnit 命名为
abc
,则 Deployment 管理页中将新增ngx-abc
,并且ngx-abc
的 Pod 也会全部运行在abc
绑定的节点上。 - 如果在 NodeGroup 中修改
abc
绑定的节点,例如增加、删除节点,则可以看到ngx-abc
的 Pod 有可能触发调度,最终一定会保证运行在abc
绑定的节点上。 - 如果在 NodeGroup 中删除
abc
,则在 Deployment 管理页中ngx-abc
自动消失。
流量闭环
在 新建 ServiceGrid 资源 中,创建 ServiceGrid 对象 ngx
。该对象也与名为 zone1
的 NodeGroup 相关联。
完成以上操作后进入服务 > Service页面,“Service” 管理页面将出现 ngx-svc
。如下图所示:
这表明名为 ngx-svc
的流量会限制在每个 NodeUnit 内部。例如,在 NodeUnit sc
的绑定节点上任意找一个 Pod,在 Pod 中请求 ngx-svc
,所有的请求将均落在 Deployment ngx-sc
对应的 Pod 上。同理,在 xj
进行相同操作,可查看请求全部落在 ngx-xj
对应的 Pod 上。
ServiceGroup 的流量闭环能力将微服务之间的调用闭环在同一个 NodeUnit 中。在以下场景中适用:
在一个边缘集群中经常需要管理多个机房的节点,同一个机房内的节点网络可达,机房之间不可达,需将微服务之间的调用控制在同一个机房内。为了使 ServiceGroup 功能更加通用,可将流量控制在一个 NodeUnit 内。
使用示例
使用 ServiceGroup 部署边缘微服务
- 假设微服务有 svc-a、svc-b、svc-c,服务间存在调用关系或服务需要一起部署,对应的是 deployment-a、deployment-b、deployment-c。
- 分别创建 deploymentGrid-a、deploymentGrid-b、deploymentGrid-c,并且关联相同的 NodeGroup,假设名为 service-group-1。
- 创建 serviceGrid-a、serviceGrid-b、serviceGrid-c,关联 service-group-1,分别绑定 deploymentGrid-a、deploymentGrid-b、deploymentGrid-c。
- 在 service-group-1 中管理 NodeUnit 及各 NodeUnit 下的机器节点。
完成上述操作后,即可实现每个 NodeUnit 中的 a、b、c 的调用流量在本 NodeUnit 中闭环。
注意:服务间的调用不能使用原来的 svc-a、svc-b、svc-c,而是使用 svc-a-svc、svc-b-svc、svc-c-svc,需在原来的 servicename 后面增加
-svc
字符串。