PostgreS雷竞技下载官网QL Percona分布组件绑定到特定的Kubernetes / OpenShift节点¶
操作员是否好自动分配新的豆荚和足够的资源来实现平衡节点跨集群分布。还有些情况下,值得以确保吊舱将土地特定节点上:例如,SSD装备机的速度优势,或降低网络成本选择节点在一个相同的可用性区域。
适当的部分部署/ cr.yaml文件(如pgPrimary或pgReplicas)包含键可以用来做这个,这取决于特定情况是最好的。
亲和力和anti-affinity¶
亲和力让豆荚资格(或不合格的,所以称为“anti-affinity”)是预定的节点已经吊舱与特定的标签,或者特定的标签本身(所谓的“节点关联”)。特别是Pod anti-affinity好降低成本确保几个豆荚密集数据交换会占据相同的可用性区域甚至相同的节点——或者,相反,让他们的土地在不同的节点上,甚至不同的高可用性和可用性区域平衡的目的。节点关联有助于将PostgreSQL实例分配给特定Kubernetes节点(与特定的硬件的,区等)。
豆荚anti-affinity控制的antiAffinityType选项,该选项可以投入pgPrimary,pgBouncer,备份部分部署/ cr.yaml配置文件。这个选项可以设置为两个值之一:
首选豆荚anti-affinity是一种软规则。它使Kubernetes尝试安排豆荚anti-affinity匹配的规则,不同的节点。如果它是不可能的,那么一个或多个吊舱将相同的节点。默认使用这种变体。要求豆荚anti-affinity是一种硬性的规则。它迫使Kubernetes安排每个吊舱anti-affinity匹配的规则不同的节点。如果它是不可能的,那么一个圆荚体将不会安排。
可以控制的节点关联pgPrimary.affinity.nodeAffinityType选项部署/ cr.yaml配置文件。这个选项可以设置为首选或要求类似于antiAffinityType选择。
简单的方法——基于nodeLabel配置节点关联¶
运营商提供pgPrimary.affinity.nodeLabel选项,它应该包含一个或多个键值对。如果没有标记的节点与每个键-值对nodeAffinityType被设置为要求,吊舱将无法登陆。
下面的例子迫使运营商借Percona PostgreSQL实例的节点的分布雷竞技下载官网kubernetes.io /地区:us-central1标签:
亲和力:nodeAffinityType:要求nodeLabel:kubernetes.io /地区:us-central1
先进的方法——使用标准Kubernetes约束¶
以前的方法可以用于任何特殊的知识Kubernetes豆荚分配给特定的节点。仍然在某些情况下可能需要更复杂的调优。在这种情况下pgPrimary.affinity.advanced选择放置在部署/ cr.yaml文件关闭的影响nodeLabel并允许使用标准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文档中。
默认的关联规则¶
以下anti-affinity规则应用于所有Percona PostgreSQL豆荚分布:雷竞技下载官网
亲和力:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:- - - - - -podAffinityTerm:labelSelector:matchExpressions:- - - - - -关键:供应商操作符:在值:- - - - - -crunchydata- - - - - -关键:pg-pod-anti-affinity操作符:存在- - - - - -关键:pg-cluster操作符:在值:- - - - - -cluster1topologyKey:kubernetes.io /主机名重量:1
你可以看到这些关联选项的解释Kubernetes文档中。
请注意
设置要求anti-affinity类型会导致把所有吊舱在不同的节点,所以默认配置需要7 Kubernetes节点部署集群与单独的节点分配给一个PostgreSQL主,两个PostgreSQL实例复制品,三个pgBouncer pgBackrest吊舱。
的纵容¶
的纵容允许豆荚让他们能够土地上与匹配节点污染了。宽容是表示为一个关键和操作符,这是存在或平等的还需要(后者变体价值关键是等于)。此外,宽容应该指定效果,这可能是自解释的NoSchedule,没有那么严格PreferNoSchedule,或NoExecute。意味着,如果最后一个变体污染与NoExecute是分配给节点,那么任何舱不容忍呢污染将立即从节点,还是后tolerationSeconds间隔,像下面的例子。
您可以使用pgPrimary.tolerations的关键部署/ cr.yaml配置文件如下:
的纵容:- - - - - -关键:“node.alpha.kubernetes.io /遥不可及的”操作符:“存在”效果:“NoExecute”tolerationSeconds:6000年
的Kubernetes污染和Toleratins包含有关此主题的更多的例子。