Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes:如何确保在每个工作节点上安排一个pod?_Kubernetes_Kubernetes Pod - Fatal编程技术网

Kubernetes:如何确保在每个工作节点上安排一个pod?

Kubernetes:如何确保在每个工作节点上安排一个pod?,kubernetes,kubernetes-pod,Kubernetes,Kubernetes Pod,目标:在每个节点上至少安排一次pod,即“日志刮板”,但不得超过一次 假设集群具有以下节点 节点 主/控制平面 工人-1 工人-2 工人-2 和我一起工作的吊舱 添加关联以仅选择“工作”节点或非主节点 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions:

目标:在每个节点上至少安排一次pod,即“日志刮板”,但不得超过一次

假设集群具有以下节点

节点

主/控制平面 工人-1 工人-2 工人-2 和我一起工作的吊舱

添加关联以仅选择“工作”节点或非主节点

  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配置为守护程序以向集群提供日志记录的。