MongoDB组雷竞技下载官网件的Percona Server绑定到特定Kubernetes/OpenShift节点¶
操作员很好地将新pod自动分配给节点,以实现在集群内的均衡分布。在某些情况下,您必须确保pods降落在特定的节点上:例如,为了在配备ssd的机器上获得速度优势,或者通过选择相同可用分区中的节点来降低成本。
适当的(子)部分(replset,replsets.arbiter,备份等)的部署/ cr.yaml文件中包含了可以用来给节点分配pod的键。
节点选择器¶
的nodeSelector包含一个或多个键-值对。如果节点没有使用Pod中的每个键值对进行标记nodeSelector,豆荚将无法降落在上面。
下面的例子将Pod绑定到任何具有自解释的节点disktype: ssd标签:
nodeSelector:disktype:固态硬盘
亲和与反亲和¶
亲和性定义了可以在已经拥有带有特定标签的pod的节点上调度的符合条件的pod。反亲和性定义不符合条件的pod。这种方法通过确保具有密集数据交换的多个pod占用相同的可用性区域甚至相同的节点来降低成本,或者相反,将pod分散在不同的节点甚至不同的可用性区域上以实现高可用性和平衡目的。
雷竞技下载官网Percona Operator for MongoDB提供了两种方法:
- 简单的方法来设置Pods的反亲和性,内置到操作符中,
- 基于使用标准Kubernetes约束的更先进的方法。
简单方法-使用Percona Operator的antiAffinityTopologyKey用于Mong雷竞技下载官网oDB¶
雷竞技下载官网Percona Operator for MongoDB提供了一个antiAffinityTopologyKey选项,该选项可能具有以下值之一:
kubernetes.io /主机名pod将避免驻留在同一个主机中failure-domain.beta.kubernetes.io /区豆荚将避免居住在同一区域failure-domain.beta.kubernetes.io /地区豆荚将避免居住在同一区域没有一个-不应用任何约束。
下面的例子强制Percona Server for Mon雷竞技下载官网goDB Pods避免占用同一个节点:
亲和力:antiAffinityTopologyKey:“kubernetes.io /主机名”
先进的方法-使用标准Kubernetes约束¶
前一种方法可以在不了解Kubernetes将Pods分配到特定节点的情况下使用。不过,在某些情况下,可能需要更复杂的调优。在这种情况下,先进的选项。部署/ cr.yaml属性的效果antiAffinityTopologyKey并且允许使用任何复杂度的标准Kubernetes亲和约束:
亲和力:先进的:podAffinity:requiredDuringSchedulingIgnoredDuringExecution:-labelSelector:matchExpressions:-关键:安全操作符:在值:-S1topologyKey:failure-domain.beta.kubernetes.io /区podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:-重量:One hundred.podAffinityTerm:labelSelector:matchExpressions:-关键:安全操作符:在值:-S2topologyKey:kubernetes.io /主机名nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:-matchExpressions:-关键:kubernetes.io / e2e-az-name操作符:在值:-e2e-az1-e2e-az2preferredDuringSchedulingIgnoredDuringExecution:-重量:1偏好:matchExpressions:-关键:another-node-label-key操作符:在值:-another-node-label-value
请参阅高级亲和选项的说明在Kubernetes文档中.
的纵容¶
的纵容允许pod能够降落在匹配的节点上污染了.容忍用a表示关键和操作符,即存在或平等的(相等的变体需要对应的价值比较)。
公差应有规定效果,例如:
NoSchedule-不严格PreferNoScheduleNoExecute
当一个污染与NoExecute效果被分配给一个节点,任何Pod配置为不容忍这个污染从节点上移除。这种去除可以立即或之后tolerationSeconds时间间隔。下面的例子定义了这个效果和移除间隔:
的纵容:-关键:“node.alpha.kubernetes.io /遥不可及的”操作符:“存在”效果:“NoExecute”tolerationSeconds:6000
的Kubernetes污染和耐受包含有关此主题的更多示例。
优先级类¶
豆荚可能属于其中一些优先级类.这种灵活性允许调度器在需要时区分更重要和更不重要的Pod,例如当高优先级Pod无法调度而不驱逐低优先级Pod时。这种能力可以通过在Kubernetes集群中添加一个或多个PriorityClasses来实现,并指定PriorityClassName在部署/ cr.yaml文件:
priorityClassName:高优先级的
看到Kubernetes Pods优先级和抢占文档以了解如何在集群中定义和使用优先级类。
豆荚中断预算¶
创建吊舱破坏预算Kubernetes的方法是否限制了应用程序的pod数量自愿中断例如集群管理员在部署更新期间的操作。分发预算允许大型应用程序在维护和其他管理活动期间保持高可用性。的maxUnavailable而且minAvailable的选项。部署/ cr.yaml文件可用于设置这些限制。推荐的版本如下:
podDisruptionBudget:maxUnavailable:1