写点什么

Kubernetes 的 pod 调度

作者:周杰伦本人
  • 2022-10-17
    贵州
  • 本文字数:793 字

    阅读完需:约 1 分钟

Kubernetes 的 pod 调度

创建 pod 流程

用户通过 kubectl 进入 apiserver 中,把相关信息存储到 etcd 中,scheduler 进入 apiserver 中看有没有 pod 的创建,如果有,通过 etcd 读取到对应的 pod,然后通过调度算法,把 pod 调度到某个 node 节点中,结果信息更新到 API Server 中,API Server 更新到 etcd 存储系统。pod 被调度到的 node 节点通过 kubelet 访问 apiserver,从而在 etcd 中读取到 pod 信息,然后通过 docker 创建容器


创建 pod 命令:


kubectl create deployment web --image=nginx
复制代码


然后复制三次


kubectl scale deployment web --replicas=3
复制代码


查看 pod 在节点上的分配情况


kubectl get pods -o wide
复制代码

影响 pod 调度的属性

pod 的 yaml 文件中对资源的限制影响 pod 的调度,节点选择器 nodeSelector 标签也会影响 pod 的调度


对于附带标签的资源对象,使用标签选择器挑选出符合条件的资源完成所需操作。创建资源的时候,可以直接在其 metadata 中的 labels 属性设置标签,标签以 key-value 形式设置,也可以使用下面的命令


对节点创建标签的命令:


kubectl label node node1 env_role=dev
复制代码


scheduler 守护进程负责在各工作节点中基于系统资源的可用性挑选一个来运行待创建的 pod 对象,Kubernetes 将所有工作节点抽象成资源池的资源统一分配使用。


用户先为 node 资源对象设定标签,然后配置 pod 对象通过节点标签选择器进行匹配检测,完成节点的调度


节点亲和性 nodeAffinity 也是和调度有关,节点亲和性分为硬亲和性和软亲和性,硬亲和性表示条件必须满足,软亲和性条件尽量满足。

污点

污点 Taint 是节点的属性


查看污点信息:


kubectl describe node node1 | grep Taint
复制代码


值为 NoSchedule 表示不会被调用,PreferNoSchedule 表示尽量不调度,NoExecute 表示不会被调度的同时会把当前节点的 pod 删掉


添加污点信息:


kubectl taint node node1 env_role=yes:NoSchedule
复制代码


删除污点信息:


kubectl taint node node1 env_role:NoSchedule-
复制代码


有污点容忍属性,表示某个节点即使设置了污点也有可能被调度到

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2020-02-29 加入

公众号《盼盼小课堂》,多平台优质博主

评论

发布
暂无评论
Kubernetes的pod调度_10月月更_周杰伦本人_InfoQ写作社区