首页 > 其他分享 >在k8S中,Pod被调度到一个节点的具体过程是什么?

在k8S中,Pod被调度到一个节点的具体过程是什么?

时间:2024-02-21 09:59:51浏览次数:30  
标签:Kubernetes 调度 Server API Pod k8S 节点

在 Kubernetes (k8S) 中,Pod 被调度到一个节点的具体过程可以分为以下步骤:

  1. 创建 Pod

    • 用户通过 kubectl apply 或 Kubernetes API Server 创建或更新 Pod 的 YAML 配置文件。
    • Kubernetes API Server 接收到创建 Pod 的请求后,会验证该请求的正确性和有效性。
  2. 准入控制

    • 在 API Server 确认请求有效之后,它会将这个待创建的 Pod 信息传递给准入控制器(Admission Controllers)进行进一步处理和校验。这些控制器可能包括 Namespace 生命周期、ResourceQuota、ServiceAccount 等控制器,以及用户自定义的准入 webhook 控制器,用于执行特定策略。
  3. Pending 状态

    • 当 Pod 通过了所有准入控制阶段后,API Server 将其存储在 etcd 中,并标记为“Pending”状态,此时 Pod 没有被分配到任何具体的节点上。
  4. 调度

    • kube-scheduler 组件通过监听 API Server 来发现处于 Pending 状态的 Pod。
    • kube-scheduler 使用一组预定义的调度算法和策略对集群中的各个节点进行评估,以确定最适合运行该 Pod 的节点。这一过程包括:
      • 过滤(Filtering):kube-scheduler 根据资源需求、亲和性/反亲和性规则、NodeSelector、Taints 和 Tolerations 等约束条件过滤出符合条件的节点列表。
      • 打分(Scoring):对通过过滤阶段的节点按照不同的评分标准进行打分,如资源利用率、污点容忍度等,选择得分最高的节点。
  5. 绑定

    • 当 kube-scheduler 选择出最佳节点后,它会在 API Server 中将该 Pod 与所选节点绑定,即设置 Pod 的 .spec.nodeName 字段为选定节点的名称。
    • API Server 更新 Pod 状态,并通知 kubelet 组件。
  6. kubelet 初始化 Pod

    • 相应节点上的 kubelet 从 API Server 获取到已绑定到本节点的新 Pod 信息。
    • kubelet 根据 Pod 的具体配置下载所需的容器镜像,准备并挂载卷,然后调用容器运行时(如 Docker 或 containerd)来启动 Pod 中的所有容器。
  7. Pod 运行

    • 当容器成功启动并且健康检查(如果配置了的话)通过后,Pod 进入“Running”状态,在所选节点上开始正常工作。

综上所述,整个调度流程体现了 Kubernetes 对于应用弹性伸缩和资源优化的核心能力,确保了 Pod 能够根据集群资源状况和用户指定的调度策略高效地部署和运行。

标签:Kubernetes,调度,Server,API,Pod,k8S,节点
From: https://www.cnblogs.com/huangjiabobk/p/18024506

相关文章

  • 在k8S中,Jenkins发布详细流程是什么?
    在Kubernetes(k8S)中,使用Jenkins进行发布流程通常涉及以下步骤:环境准备:在Kubernetes集群中部署Jenkins服务,可以是通过HelmChart、Operator或直接创建Deployment等方式部署。如果需要,配置Jenkins的持久化存储以保存构建记录和数据。安装并配置与Kubernetes......
  • 在k8S中,当一个Pod有多个容器时,如何连接到指定容器?
    在Kubernetes(k8S)中,当一个Pod包含多个容器时,可以通过kubectlexec命令连接到指定的容器。kubectlexec命令允许您在运行中的Pod中执行命令或打开交互式shell。要连接到多容器Pod中的特定容器,请按照以下格式执行命令:kubectlexec-it<pod-name>-c<container-nam......
  • k8s-权限管理
    目录1.身份认证node节点操作创建普通用户并授权1.生成私钥2.生成zhangsan用户证书请求文件3.为zhangsan用户颁发证书4.创建命名空间及pod5.创建角色6.绑定角色给用户7.编辑kubeconfig文件8.嵌入密钥文件9.验证权限静态token登录1.生成token在apiserver加入参数2.尝试......
  • Kubernetes (K8S) 一
    K8Sansible#应用级别的跨主机编排工具docker#容器引擎容器运行时dockerfile#构建镜像docker-compose#单机容器集群编排工具docker-swarm#Docker旗下的容器跨主机编排工具,是实现在多级上Docker容器集群管理调度的工具mosos|marathonmosos:分布式资......
  • RocketMQ搭建(单组节点单副本模式)
    RocketMQ搭建(单组节点单副本模式) 1、下载RocketMQ二进制包wgethttps://archive.apache.org/dist/rocketmq/5.1.2/rocketmq-all-5.1.2-bin-release.zip 2、解压,移动程序包至安装目录并创建软连接。unziprocketmq-all-5.1.2-bin-release.zipmvrocketmq-all-5.1.2-b......
  • 在k8S中,有状态应用如何上云?
    在Kubernetes(k8s)中部署有状态应用上云时,需要考虑的关键因素包括数据持久化、服务发现与身份标识、以及高可用性和伸缩性。以下是一些关键步骤和注意事项:数据持久化:使用PersistentVolume(PV)和PersistentVolumeClaim(PVC)对象来保证数据的持久存储。PV是集群中的......
  • 在k8S中,如何对接外部ceph?
    在Kubernetes(k8s)中对接外部Ceph存储集群通常涉及以下几个关键步骤:1.准备Ceph配置和密钥文件将Ceph配置文件(ceph.conf)复制到所有Kubernetes节点的/etc/ceph目录下,以便集群中的节点可以访问到正确的配置信息。获取Ceph的客户端管理员密钥环ceph.client.admi......
  • 在k8S中,生产环境的pv回收策略该如何选择?
    在Kubernetes(k8s)中,持久卷(PersistentVolume,PV)的回收策略是一个重要的配置项,它决定了当与PV绑定的持久卷声明(PersistentVolumeClaim,PVC)被删除后,集群如何处理该PV上的数据。以下是三种主要的PV回收策略及其适用场景:Retain:选择此策略时,当PVC被删除后,PV将保持其状态,并......
  • 在k8S中,K8S持久化可以对接哪些储存,为什么要选择它?
    在Kubernetes(k8s)中,持久化存储可以对接多种类型的存储系统,以满足不同场景下的需求。Kubernetes的设计使得它可以与各种云服务提供商的存储解决方案、本地存储系统以及第三方开源或商业存储产品进行集成。以下是一些常见的存储类型:云服务提供商的块存储/卷:AWSEBS(Elastic......
  • 在k8S中,rook概念是什么?
    在Kubernetes(k8s)中,Rook是一个开源的云原生存储编排系统,它为容器环境提供了一种便捷的方式来部署、管理和扩展多种分布式存储解决方案。Rook通过Operator模式将复杂的存储集群配置和管理任务自动化,使得存储服务能够与Kubernetes的资源模型无缝集成。具体来说:自定义......