在不同节点上设置副本

问题描述 投票:0回答:3

我正在开发一个用于处理 kubernetes 运行时微服务的应用程序。我实际上做了一些很酷的事情,比如将微服务从一个节点移动到另一个节点。问题是所有副本都在一起。

因此,想象一个微服务有两个副本,并且它在具有两个节点的命名空间上运行。

我想在每个节点设置一个副本。这可能吗?即使在 yaml 文件中,这可能吗? 我正在尝试做我自己的调度程序来做到这一点,但直到现在我还没有成功。

谢谢大家

kubernetes
3个回答
0
投票

我认为您正在寻找的是副本集的 NodeSelector。来自文档:

pod 间亲和性和反亲和性允许您根据已在节点上运行的 pod 上的标签(而不是基于节点上的标签)来限制您的 pod 可以调度哪些节点。

这里是文档:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity-beta-feature


0
投票

我找不到它的文档记录,但我最近在某处读到,当您在部署/副本集之前创建 kubernetes 服务时,副本将跨节点分布。


0
投票

你应该使用 pod anti-affinify。 YAML 配置示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100 # Strong preference
            podAffinityTerm:
              topologyKey: kubernetes.io/hostname
              labelSelector:
                matchLabels:
                  app: my-app
...
© www.soinside.com 2019 - 2024. All rights reserved.