配置高性能和高可用的ASM网关,可确保业务连续性并提升用户体验。本文介绍如何配置ASM网关,将网关Pod部署到指定节点上,从而提高ASM网关的高可用性并增强与业务Pod的隔离性。
相关概念
- 污点(Taint):作用于节点上, 它能使节点能够排斥一类特定的Pod。
- 容忍度(Toleration):容忍度应用于Pod上。容忍度允许调度器将该Pod调度到带有对应污点的节点上。
- 污点和容忍度相互配合,可以用来避免Pod 被分配到不合适的节点上。每个节点上都可以应用一个或多个污点,这表示对于那些不能容忍这些污点的Pod,是不会被该节点接受的。如果将容忍度应用于Pod 上,则表示这些Pod 可以(但不要求)被调度到具有匹配污点的节点上。
- 节点亲和性(nodeAffinity):规定了Pod调度时的软需求或者偏好,且在这种偏好不被满足时成功调度该Pod到其他节点。
操作步骤
步骤一:添加标签到节点
执行 kubectl get nodes 命令获取集群的节点名称。选择一个你要增加标签的节点,然后执行 kubectl label nodes = 命令将标签添加到你所选择的节点上。
比如,
kubectl label nodes node1 mykey4pod=asmgateway
步骤二:添加污点到节点
使用命令 kubectl taint 给节点增加一个 污点。比如,
kubectl taint nodes node1 mykey=myvalue:NoSchedule
给节点 node1 增加一个污点,它的 key 是 mykey,value 是 myvalue,effect 是 NoSchedule。这表示只有拥有和这个污点相匹配的容忍度 的Pod 才能够被分配到 node1 这个节点。
步骤三:为ASM网关设置节点亲和性和容忍度
首先, 在ASM网关中配置nodeAffinity参数, 使ASM网关的Pod分布到指定的节点上。配置tolerations参数与上面例子中使用 kubectl taint 命令创建的污点相匹配。这样可以使得网关的Pod 能够被分配到指定的节点上。
具体操作如下:
1) 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理。
2) 在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择ASM网关 > 入口网关。
3) 在入口网关页面,在对应网关的右侧菜单栏内, 单击查看YAML。
4) 在弹出的YAML编辑窗口内, 在spec下补充如下内容:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: mykey4pod
operator: In
values:
- asmgateway
tolerations:
- key: "mykey"
operator: "Equal"
value: "myvalue"
effect: "NoSchedule"
在ACK控制台中, 查看网关的Pod 所在的节点是否符合预期。