【K8s】Kubernetes 服务调度详解

2024-09-02 12:45:33 浏览数 (2)

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~

基本介绍

在 Kubernetes 中,服务调度是指 kube-scheduler 组件根据特定的调度算法和策略,将 Pod 分配到最合适的 Node 节点上,以满足应用程序的资源需求和 Kubernetes 集群的资源限制,实现集群资源充分、合理的利用。

工作原理

kube-scheduler 持续监听 kube-apiserver,当检查到没有绑定 Node 节点的 Pod(即 PodSpec.NodeName 为空)时,会为其分配 Node 节点并进行绑定。

整个调度过程大致可以分为 3 个阶段:

  • 预选阶段:过滤掉不满足条件的 Node 节点,这个过程称为 Predicates
  • 优选阶段:对满足条件的 Node 节点进行优先级排序,称之为 Priorities
  • 选定阶段:从多个优选出的 Node 节点中随机选择一个

如果中间任何一个阶段出现错误,就会直接返回错误。

节点绑定

节点绑定(Node Selector)是一种调度机制,该机制基于 Node 节点的标签,将 Pod 调度到具有特定标签的 Node 节点上,实现与指定 Node 节点的绑定。

资源清单示例如下:

代码语言:javascript复制
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-deployment
  template:
    metadata:
      labels:
        app: demo-deployment
    spec:
      containers:
      - name: demo-container
        image: demo-image:latest
        ports:
        - containerPort: 80
      nodeSelector:
        kubernetes.io/hostname: my-node01
 



	

0 人点赞