首页 > 其他分享 >在k8S中,Pod的常见调度方式有哪些?

在k8S中,Pod的常见调度方式有哪些?

时间:2024-02-09 18:11:06浏览次数:31  
标签:标签 亲和性 调度 污点 Pod k8S 节点

在 Kubernetes (k8s) 中,Pod 的调度可以通过多种方式来实现其在集群中的节点分配。以下是 Pod 常见的调度方式:

  1. 默认调度

    • 默认情况下,Kubernetes 调度器会自动根据资源需求(CPU、内存等)、节点标签选择器、污点和容忍度(Taints and Tolerations)、亲和性和反亲和性规则等因素为 Pod 分配一个合适的节点。
  2. 节点选择器(Node Selector)

    • 在 Pod 定义中通过 nodeSelector 字段指定一组键值对,这些键必须与目标节点的标签相匹配才能将 Pod 调度到该节点上。
  3. 污点与容忍度(Taints and Tolerations)

    • 节点可以被打上污点(taint),表示某种限制条件,只有能容忍相应污点(具有对应容忍度 toleration)的 Pod 才能被调度到这个节点上。
  4. 亲和性和反亲和性(Affinity 和 Anti-affinity)

    • 更复杂的节点选择策略,包括节点亲和性和 pod 亲和性/反亲和性:
      • 节点亲和性(Node Affinity):允许更精细地控制 Pod 是否应该调度到带有特定标签的节点。
      • Pod 亲和性(Pod Affinity):使 Pod 有倾向性地与已运行的具有某些标签的其他 Pod 放在同一或不同节点上。
      • Pod 反亲和性(Pod Anti-affinity):防止 Pod 与具有特定标签的其他 Pod 运行在同一节点上,以实现负载均衡或故障隔离的目的。
  5. 静态预留(Static Reservations)

    • 静态预留是指提前创建一些具有特定标签的节点,并且配置 Pod 明确指派到这些节点上,例如使用 nodename 或者 nodeAffinity 指定特定节点。
  6. 拓扑分布约束(Topology Spread Constraints)

    • 用于在拓扑域(如区域、机架)之间均匀分布 Pod,确保高可用性和容错性。
  7. 优先级与抢占(Priority and Preemption)

    • Pod 可以被赋予优先级,高优先级的 Pod 在资源紧张时有可能抢占低优先级 Pod 的资源并将其从节点上移除。

综上所述,通过以上各种机制的组合,Kubernetes 提供了灵活而强大的调度策略,以满足不同类型工作负载的需求。

标签:标签,亲和性,调度,污点,Pod,k8S,节点
From: https://www.cnblogs.com/huangjiabobk/p/18012564

相关文章

  • k8s 常用命令
    pod:1、查看所有工作空间的podkubectlgetpods-A2、查看所有pod的标签kubectlgetpods--show-labels3、查看pod的详细信息(如ip)kubectlgetpods-owide4、查看某个pod的报错和详细信息(如查看pod为什么Pending)kubectldescribepoddb-mysql-f7fbfdd68-nf2jk......
  • 解决kubeadm部署的k8s 集群证书过期
    目录一、查看证书过期时间1.1方式一1.2方式二二、通过命令续期2.1修改集群内所有机器的时间,模拟证书在过期的边缘2.2查看证书有效期2.3备份原有数据2.4备份证书2.5更新证书2.6确认证书有效期2.7更新kubeconfig文件2.8更新客户端证书2.9重启相关的po......
  • 在K8S中,Pod可能位于的状态有什么?
    在Kubernetes(K8s)中,Pod可能处于以下几种状态:Pending:Pod已经被集群接受,但至少有一个容器镜像尚未创建。这个阶段包括调度Pod到节点的时间、下载容器镜像时间以及等待其他初始化条件满足的过程。ContainerCreating:这是一个过渡状态,表示kubelet正在为Pod创建容器,这包括从镜......
  • 在K8S中,创建一个Pod的主要流程是什么?
    在Kubernetes(简称K8s)中创建一个Pod的主要流程如下:用户请求:用户通过kubectl命令行工具或API接口提交一个Pod的定义,通常是通过YAML或JSON格式的配置文件来描述Pod的详细信息,包括容器镜像、环境变量、资源需求、卷挂载等。APIServer接收入口:用户的请求首先到达Kubernetes......
  • 在K8S中,Pod的重启策略是什么?
    在Kubernetes(K8S)中,Pod的重启策略是通过restartPolicy字段指定的,用于定义当Pod中的容器终止时kubelet应如何处理这些容器。以下是三种主要的重启策略:Always:这是默认的重启策略。如果一个容器终止(无论退出码是什么),kubelet都会自动重启该容器。这意味着只要Pod没有被删除或者节......
  • 在K8S中,Pod的健康检查方式有哪些?
    在Kubernetes(K8s)中,Pod的健康检查主要通过两种类型的探针实现:LivenessProbe和ReadinessProbe。LivenessProbe(存活探针):用于检测容器是否处于正常运行状态。如果LivenessProbe失败,则表明容器已不再健康,并且kubelet会采取相应行动,通常是重启容器。LivenessProbe可......
  • 在k8S中,Pod中的LivenessProbe探针常见方式有哪些?
    在Kubernetes(k8s)中,Pod的LivenessProbe探针常见的方式有以下三种:Exec:通过在容器内部执行一个命令来检查应用是否正常运行。如果命令的退出状态码为0,则认为应用程序是健康的;非0状态码则视为不健康。例如:livenessProbe:exec:command:-cat-/t......
  • kubernetes集群核心概念---pod
    1.pod介绍参考链接:https://kubernetes.io/zh/docs/concepts/workloads/pods/1.1.查看pod[root@centos~]#kubectlgetpod#pod或pods都可以,不指定namespace,默认是名为default的namespace [root@centos~]#kubectlgetpod-nkube-system1.2.pod的yaml资源清单格式......
  • 二刷 K8s 源码 - workqueue 的所有细节
    1.概述-何来此文2.Queue的实现2.1Queue.Add(iteminterface{})方法2.2Queue.Get()方法2.3Queue.Done(iteminterface{})方法3.DelayingQueue的实现4.RateLimitingQueue的实现5.rateLimiter限速器的实现6.控制器里用的默认限速器7.总结1.概述-......
  • Docker-compose至K8S迁移工具kompose
    参考Github:https://github.com/kubernetes/komposekompose工具用于将docker-compose配置文件转换的k8s可识别的yaml文件安装CentOS安装#yuminstallepel-release#yuminstallkompose使用源安装的版本较老可直接下载#Linuxcurl-Lhttps://github.com/kubernetes/......