k8s调度约束

List-Watch

Kubernetes 是通过 List-Watch的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。

List-Watch机制

复制代码
工作机制:

用户通过 kubectl请求给 APIServer 来建立一个 Pod。

APIServer会将Pod相关元信息存入 etcd 中,待写入操作完成,APIServer 即会返回确认信息至客户端。

当etcd 接受创建 Pod 信息后,会发送ReplicaSet事件给 APIServer。

由于 Controller Manager 会监听(Watch,通过https的6443端口)APIServer 中的事件。此时 APIServer 接受到了 Create 事件,就会发送给 Controller Manager。

Controller Manager 在接到 Create 事件以后,调用其中的 Replication Controller 来保证 Node 上面需要创建的副本数量。

在 Controller Manager 创建 Pod 副本以后,APIServer 会在 etcd 中记录这个 Pod 的详细信息。

之后etcd 会将创建 Pod 的信息通过事件发送给 APIServer。

Scheduler 在监听(Watch)APIServer,它会将待调度的 Pod 按照调度算法和策略绑定到集群中 Node 上。

Scheduler 调度完毕以后会更新更详细 Pod 的信息,并将上面的 Pod 信息更新至 API Server,由 APIServer 更新至 etcd 中,保存起来。

etcd 将更新成功的事件发送给 APIServer,APIServer 也开始反映此 Pod 对象的调度结果。

kubelet 是在 Node 上面运行的进程,它也通过 List-Watch 的方式监听(Watch,通过https的6443端口)APIServer 发送的 Pod 更新的事件。kubelet 会尝试在当前节点上调用 Docker 启动容器,并将 Pod 以及容器的结果状态回送至 APIServer。

APIServer 将 Pod 状态信息存入 etcd 中。在 etcd 确认写入操作成功完成后,APIServer将确认信息发送至相关的 kubelet,事件将通过它被接受。

命令

指定调度节点

复制代码
apiVersion: apps/v1  
kind: Deployment  
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      nodeName: node01
      containers:
      - name: myapp
        image: soscscs/myapp:v1
        ports:
        - containerPort: 80

查看pod
kubectl get pods -o wide

查看详细事件(发现未经过 scheduler 调度分配)
kubectl describe pod myapp-6bc58d7775-6wlpp
相关推荐
切糕师学AI12 小时前
Kubernetes DaemonSet 详细介绍
kubernetes·daemonset
zihan032112 小时前
将若依(RuoYi)框架从适配 Spring Boot 2 的版本升级到 Spring Boot 3
java·spring boot·github·若依框架
@insist12312 小时前
软考-软件设计师-数据表示核心考点详解:从进制转换到 IEEE 754 标准
java·数据结构·算法
柒.梧.12 小时前
Java拷贝精讲:彻底分清浅拷贝与深拷贝
java·开发语言·python
七夜zippoe12 小时前
微服务架构下Spring Session与Redis分布式会话实战全解析
java·redis·maven·spring session·分布式会话
vx_Biye_Design14 小时前
【关注可免费领取源码】云计算及其应用网络教学系统--毕设附源码35183
java·spring·spring cloud·servlet·eclipse·云计算·课程设计
码农阿豪21 小时前
Nacos 日志与 Raft 数据清理指南:如何安全释放磁盘空间
java·安全·nacos
直有两条腿21 小时前
【大模型】Langchain4j
java·langchain
love530love21 小时前
Scoop 完整迁移指南:从 C 盘到 D 盘的无缝切换
java·服务器·前端·人工智能·windows·scoop
消失的旧时光-194321 小时前
C++ 多线程与并发系统取向(二)—— 资源保护:std::mutex 与 RAII(类比 Java synchronized)
java·开发语言·c++·并发