AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1053350
Accepted
Justin
Justin
Asked: 2021-02-12 16:33:26 +0800 CST2021-02-12 16:33:26 +0800 CST 2021-02-12 16:33:26 +0800 CST

Kubernetes 强制将副本分布在工作节点之间

  • 772

我有一个本地 Kubernetes 集群,最近它需要物理重启所有工作节点(运行三个工作节点)。当 Pod 重新启动时,我注意到所有 Pod 都安排在一个物理工作节点上,而不是均匀分布在三个工作节点上。我假设其他两个工作节点需要更长的时间才能从重启中恢复在线,而 Kubernetes 只是将我们所有的应用程序安排在唯一的工作节点上。

部署 yaml 中是否有办法指定所有部署副本最终应分布在所有工作节点上?IE 阻止 Kubernetes 在单个工作节点上启动所有 pod?

kubernetes
  • 1 1 个回答
  • 441 Views

1 个回答

  • Voted
  1. Best Answer
    Matt
    2021-02-13T01:08:15+08:002021-02-13T01:08:15+08:00

    有一种叫做inter pod 反亲和性的东西就是这样做的。

    来自 k8s 文档:

    pod 间亲和性和反亲和性允许您根据节点上已经运行的 pod 上的标签而不是基于节点上的标签来限制您的 pod 有资格调度的节点。规则的形式是“如果 X 已经在运行一个或多个满足规则 Y 的 Pod,则该 Pod 应该(或者,在反亲和的情况下,不应该)在 X 中运行”。

    例子:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-server
    spec:
      selector:
        matchLabels:
          app: web-store
      replicas: 3
      template:
        metadata:
          labels:
            app: web-store
        spec:
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
              - labelSelector:
                  matchExpressions:
                  - key: app
                    operator: In
                    values:
                    - web-store
                topologyKey: "kubernetes.io/hostname"
          containers:
          - name: web-app
            image: nginx:1.16-alpine
    

    它将确保没有两个相同部署的 Pod 是同一节点上的调度。如果没有更多节点可用于调度 pod,则 pod 将保持挂起状态(不会被调度)。

    • 2

相关问题

  • 无法通过 Docker 在本地运行 Hyperkube (kubernetes)

  • 跨 Kubernetes 分散工作负载

  • Kubernetes升级回滚机器类型

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve