Kubernetes:如何确保在每个工作节点上安排一个pod?
目标:在每个节点上至少安排一次pod,即“日志刮板”,但不得超过一次 假设集群具有以下节点 节点 主/控制平面 工人-1 工人-2 工人-2 和我一起工作的吊舱 添加关联以仅选择“工作”节点或非主节点Kubernetes:如何确保在每个工作节点上安排一个pod?,kubernetes,kubernetes-pod,Kubernetes,Kubernetes Pod,目标:在每个节点上至少安排一次pod,即“日志刮板”,但不得超过一次 假设集群具有以下节点 节点 主/控制平面 工人-1 工人-2 工人-2 和我一起工作的吊舱 添加关联以仅选择“工作”节点或非主节点 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "worker"
operator: In
values:
- "true"
问题1:如何确保每个节点运行一个且仅一个pod类型的日志刮板
问题2:应该应用/添加哪些其他清单来实现这一点?您可能应该使用专门为每个节点安排一个pod的清单,并在集群自动缩放的情况下自动添加到新节点。您可能应该使用专门为每个节点安排一个pod的清单节点,并在群集自动缩放时自动添加到新节点。概念
在将POD分配给节点时,有两件重要的事情-亲和性和反亲和性
亲和性将基本上根据给定的标准进行选择,而反亲和性将根据给定的标准进行避免。
使用Affinity和Anti-Affinity,您可以使用In、NotIn、Exist、DoesNotExist、Gt和Lt等运算符。当您使用NotIn和DoesNotExist时,它将变为Anti-Affinity。
现在,在亲和性/反亲和性中,您有两个选择-节点亲和性/反亲和性和pod间亲和性/反亲和性
节点亲和性/反亲和性
节点关联在概念上类似于nodeSelector—它允许您根据节点上的标签约束pod符合调度条件的节点。
荚间亲和力/反亲和力
pod间关联和反关联允许您基于节点上已运行的pod上的标签而不是基于节点上的标签来约束您的pod有资格调度哪些节点。
你的解决方案
基本上你需要的是反亲和力,在那个盒子里是反亲和力,而不是节点。因此,您的解决方案应该如下所示。请注意,由于我没有3节点群集,因此无法测试此解决方案,因此您可能需要进行少量代码调整的可能性很小:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
labelSelector:
- matchExpressions:
- key: worker
operator: In
values:
- log-scraper
阅读更多内容,特别是复习一遍示例。概念
在将POD分配给节点时,有两件重要的事情-亲和性和反亲和性
亲和性将基本上根据给定的标准进行选择,而反亲和性将根据给定的标准进行避免。
使用Affinity和Anti-Affinity,您可以使用In、NotIn、Exist、DoesNotExist、Gt和Lt等运算符。当您使用NotIn和DoesNotExist时,它将变为Anti-Affinity。
现在,在亲和性/反亲和性中,您有两个选择-节点亲和性/反亲和性和pod间亲和性/反亲和性
节点亲和性/反亲和性
节点关联在概念上类似于nodeSelector—它允许您根据节点上的标签约束pod符合调度条件的节点。
荚间亲和力/反亲和力
pod间关联和反关联允许您基于节点上已运行的pod上的标签而不是基于节点上的标签来约束您的pod有资格调度哪些节点。
你的解决方案
基本上你需要的是反亲和力,在那个盒子里是反亲和力,而不是节点。因此,您的解决方案应该如下所示。请注意,由于我没有3节点群集,因此无法测试此解决方案,因此您可能需要进行少量代码调整的可能性很小:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
labelSelector:
- matchExpressions:
- key: worker
operator: In
values:
- log-scraper
请阅读更多内容,特别是浏览上面的示例。看起来您正在尝试使用上述关联概念编写自定义日志记录系统,而守护程序为日志记录提供了最佳用例。请参阅用于将fluentd配置为守护程序以向群集提供日志记录的。看起来您正在尝试使用上述关联概念编写自定义日志记录系统,而守护程序为日志记录提供了最佳用例。请参阅用于将fluentd配置为守护程序以向集群提供日志记录的。