Kubernetes“白名单”节点池实现及专属部署调度需求咨询
Kubernetes“白名单”节点池实现及专属部署调度需求咨询
当然可以实现这种专属节点池的需求!不用挨个修改现有部署,咱们可以通过**污点(Taints)+ 容忍度(Tolerations)+ 节点亲和性(Node Affinity)**的组合来搞定,具体操作步骤如下:
第一步:给目标节点池的所有节点打上污点
给节点池里的节点添加专属污点,这样没有对应容忍配置的Pod会被直接拒绝调度到这些节点上。如果是单个节点操作,执行命令:kubectl taint nodes <你的节点名称> dedicated=my-special-deployment:NoSchedule要是需要给整个节点池批量打污点,可以结合节点标签操作:
kubectl taint nodes -l <节点池标签键>=<节点池标签值> dedicated=my-special-deployment:NoSchedule这里的
dedicated=my-special-deployment是自定义的污点键值对,:NoSchedule是污点效果,代表无对应容忍度的Pod绝对不能调度到该节点。第二步:给你的专属部署添加容忍度+节点亲和性
打开你想要绑定到这个节点池的Deployment配置文件,在spec.template.spec下补充以下配置:tolerations: - key: "dedicated" operator: "Equal" value: "my-special-deployment" effect: "NoSchedule" affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: <节点池标签键> operator: In values: - <节点池标签值>容忍度的作用是让你的Pod能“绕过”节点上的污点限制,而节点亲和性则是强制你的Pod只能调度到这个节点池的节点上,避免它占用其他节点资源。
这样配置完成后,现有所有没加对应容忍度的部署,都没法调度到这个带污点的节点池;而你的目标部署因为有容忍度+亲和性的双重配置,会稳稳运行在这个专属节点池里,完全不用修改其他任何部署的配置,正好匹配你的需求!
备注:内容来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

