边缘容器服务 TKE Edge 提供 ServiceGroup 特性,只需两个 yaml 文件即可轻松实现上百地域的服务部署,且无需进行应用适配或改造。本文以在边缘部署 nginx 为例。若您希望在多个节点组内分别部署 nginx 服务,请参考本文依次执行以下步骤。
该步骤进行逻辑规划,无需任何实际操作。边缘容器将目前要创建的 ServiceGroup 逻辑标记使用的 UniqKey 设置为 zone。
该步骤需要通过 TKE Edge 控制台或者 kubectl 对边缘节点打 Label。TKE Edge 控制台操作步骤如下:
zone=nodeunit1
。Node21及 Node23编辑 Label:zone=nodeunit2
。 apiVersion: superedge.io/v1
kind: DeploymentGrid
metadata:
name: deploymentgrid-demo
namespace: default
spec:
gridUniqKey: zone
template:
selector:
matchLabels:
appGrid: nginx
replicas: 2
template:
metadata:
labels:
appGrid: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
protocol: TCP
apiVersion: superedge.io/v1
kind: ServiceGrid
metadata:
name: servicegrid-demo
namespace: default
spec:
gridUniqKey: zone
template:
selector:
appGrid: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
说明:可查看此处 gridUniqKey 字段设置为 zone,因此对应 通过 Label 将边缘节点分组 步骤中对节点进行分组时 Label 的 key 也应设置为 zone。如果有三组节点,则分别添加
zone: zone-0
,zone: zone-1
,zone: zone-2
的 Label 即可。
这时,每组节点内都有了 nginx 的 Deployment 和对应的 Pod,在节点内访问统一的 service-name 也只会将请求发向本组的节点。验证方式如下:
[root@VM_1_34_centos ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
deploymentgrid-demo-zone-0 2/2 2 2 85s
deploymentgrid-demo-zone-1 2/2 2 2 85s
deploymentgrid-demo-zone-2 2/2 2 2 85s
[root@VM_1_34_centos ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 172.19.0.1 <none> 443/TCP 87m
servicegrid-demo-svc ClusterIP 172.19.0.177 <none> 80/TCP 80s
另外,对于部署了 DeploymentGrid 和 ServiceGrid 后才添加进集群的节点组,该功能会在新的节点组内自动创建指定的 Deployment 和 Service。
本页内容是否解决了您的问题?