k8s设置非强一致反亲和性示例

 更新时间:2023年10月29日 11:27:50   作者:ponponon  
这篇文章主要为大家介绍了k8s设置非强一致反亲和性示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Q:如何设置反亲和性

尽可能让 pod 部署在不同的 node 上,如果需要部署的pod数大于节点数,也可以在一个节点上部署多个 pod,如何设置?

A:要设置反亲和性(PodAntiAffinity),以尽可能让Pod部署在不同的节点上,但允许多个Pod在一个节点上部署,您可以使用适当的PodAntiAffinity规则。这通常涉及到使用适当的标签和拓扑域。

以下是如何设置这样的反亲和性规则的一般步骤:

  • 为节点添加标签:首先,您需要为集群中的节点添加适当的标签,以便您可以在反亲和性规则中使用它们。例如,您可以为节点添加一个标签,如rackzone,以表示节点所在的机架或区域。
  • 创建PodAntiAffinity规则:在您的Pod定义中,您可以使用affinity字段来定义反亲和性规则。以下是一个示例:
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 100  # 设置优先级
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: "app"
              operator: In
              values:
              - my-app
          topologyKey: "kubernetes.io/hostname"  # 使用节点的主机名标签,或者您设置的标签

上述示例中,我们创建了一个PodAntiAffinity规则,该规则使用preferredDuringSchedulingIgnoredDuringExecution字段,这表示这是一个"优先级规则",而不是绝对必需的规则。该规则要求不同Pod的my-app标签值必须匹配,但它们不能调度到相同的节点上,使用节点的主机名标签(kubernetes.io/hostname)作为拓扑域键来实现这一点。

部署Pod

当您部署多个Pod时,Kubernetes调度器将根据反亲和性规则尽力确保它们不会在相同的节点上调度。如果有足够的节点可用,它们可以分布在不同的节点上,以满足反亲和性规则。如果节点数量少于Pod数量,一些Pod可能需要共享节点,但反亲和性规则会尽力确保它们分布在尽可能多的不同节点上。

请注意,设置preferredDuringSchedulingIgnoredDuringExecution而不是requiredDuringSchedulingIgnoredDuringExecution允许一些Pod仍然可以共享节点,如果没有足够的节点可供选择。这可以帮助在节点资源有限的情况下仍然尽量满足反亲和性规则。

确保您的集群中有足够的节点来容纳您的Pod,以便反亲和性规则可以正常工作。如果节点资源不足,Pod可能会被迫在同一节点上调度,这可能会违反反亲和性规则。

Q:帮我修改

affinity:
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution: #设置调度策略。
      - labelSelector:
          matchExpressions:
            - key: app
              operator: In
              values:
                - imdb-match-api
        topologyKey: kubernetes.io/hostname

A: 您提供的配置是使用requiredDuringSchedulingIgnoredDuringExecution,这表示Pod之间的反亲和性是强制的,而且如果违反规则,Pod将不会被调度。

如果您希望Pod之间的反亲和性是强制的,但仍然允许多个Pod在一个节点上部署,您可以使用preferredDuringSchedulingIgnoredDuringExecution,这样如果没有足够的节点来满足规则,Pod仍然可以共享节点。

修改版本

以下是您的配置的修改版本:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 100  # 设置优先级
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: app
              operator: In
              values:
              - imdb-match-api
          topologyKey: kubernetes.io/hostname

这将创建一个"优先级规则",它要求不同Pod的imdb-match-api标签值必须匹配,但它们不能调度到相同的节点上。如果没有足够的节点来满足这一规则,Pod仍然可以共享节点,但反亲和性规则将尽力确保它们分布在尽可能多的不同节点上。

以上就是k8s设置非强一致反亲和性示例的详细内容,更多关于k8s设置非强一致反亲和性的资料请关注脚本之家其它相关文章!

相关文章

  • CentOS 7.9 升级内核 kernel-ml-5.6.14版本的方法

    CentOS 7.9 升级内核 kernel-ml-5.6.14版本的方法

    这篇文章主要介绍了CentOS 7.9 升级内核 kernel-ml-5.6.14版本,默认内核版本为3.10.0,现升级到 5.6.14 版本,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • Kubernetes探针使用介绍

    Kubernetes探针使用介绍

    这篇文章主要为大家介绍了Kubernetes探针使用详细介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • K8S prometheus operator监控工作原理介绍

    K8S prometheus operator监控工作原理介绍

    这篇文章主要为大家介绍了K8S prometheus operator监控工作原理介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 云原生系列Kubernetes深度解析YAML文件使用

    云原生系列Kubernetes深度解析YAML文件使用

    这篇文章主要为大家介绍了云原生系列Kubernetes深度解析YAML文件使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 使用sealos快速搭建K8s集群环境的过程

    使用sealos快速搭建K8s集群环境的过程

    这篇文章主要介绍了使用sealos快速搭建K8s集群环境,主要包括sealos安装方法,虚拟机设置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • CentOS 7下YUM 本地仓库的搭建详细步骤

    CentOS 7下YUM 本地仓库的搭建详细步骤

    这篇文章主要介绍了CentOS 7下YUM 本地仓库的搭建详细步骤的相关资料,希望通过本文能帮助到大家实现这样的功能,需要的朋友可以参考下
    2017-09-09
  • Rainbond使用Dockerfile构建便捷应用运行流程

    Rainbond使用Dockerfile构建便捷应用运行流程

    这篇文章主要为大家介绍了Rainbond使用Dockerfile构建便捷应用运行流程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • k8s中如何实现pod自动扩缩容详解

    k8s中如何实现pod自动扩缩容详解

    在实际生产系统中,经常会遇到某个服务需要扩容的场景,可能会遇到由于资源紧张或者工作负载降低而需要减少服务实例数量的场景,下面这篇文章主要给大家介绍了关于k8s中如何实现pod自动扩缩容的相关资料,需要的朋友可以参考下
    2022-08-08
  • Kubernetes(K8S)彻底卸载详细教程

    Kubernetes(K8S)彻底卸载详细教程

    网络上有很多的K8S安装安装教程,但是唯独很少有卸载教程,有也讲得不清不楚,下面这篇文章主要给大家介绍了关于Kubernetes(K8S)彻底卸载的相关资料,需要的朋友可以参考下
    2024-01-01
  • Kubernetes 权限管理认证鉴权详解

    Kubernetes 权限管理认证鉴权详解

    这篇文章主要为大家介绍了Kubernetes 权限管理认证鉴权详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11

最新评论