zoukankan      html  css  js  c++  java
  • kubernetes 的工作过程 listwatch

    k8s 有两种节点,master 节点和 worker-node 节点。master 节点组件包括 apiserver,scheduler,controller-manager;node 节点组件包括 kubelet,kube-proxy,容器 engine;另外,除了这两个,还有一个 etcd 存储。

    整个 k8s 的工作过程是一个 list-watch 机制。有 3 个 list watch 分别是 controller manager,scheduler,kubelet。

     

    k8s 工作过程:

    • 客户端的请求通过 Kubectl 发送请求给集群的唯一入口 API Server。API Server 先将相关的元信息写入到 etcd 存储中。
    • etcd 写完信息后,会给予反馈给客户端,还会发送 created 事件给 apiserver,apiserver 把 created 事件发送给监听着 apiserver 的 Controller manager。
    • Controller manager 会调用控制器来保证 pod 副本数量,维持集群处于预期状态。然后 Controller Manager 将创建 pod 的相关信息发送给 apiserver ,apiserver 将相关的信息写入到 etcd 中(pod 的模板,如什么镜像,多少实例,健康检查等)。
    • etcd 将信息记录完毕,会将创建 pod 的信息发送给 apiserver。apiserver 再将创建 pod 的信息发送给 scheduler。Scheduler 通过 API Server 在 etcd 存储中读取 node 节点的资源信息(信息由 kubelet 发送到 master),通过预算策略和优选策略,从 node 节点中挑选最优的,并把 pod 调度到这个节点运行。
    • Scheduler 将调度信息反馈给 apiserver,apiserver 再将信息发送给 etcd,写入到 etcd 中进行保存。
    • etcd 记录完毕后,将更新 pod 的信息发送给 apiserver。apiserver 再将更新信息反应给相应 node 节点的 kubelet 上。
    • kubelet 接受到更新 pod 的信息后,根据相关的要求,调用容器引擎,创建 pod ,启动容器。同时 kubelet 还会将容器和 pod 的运行状态反馈给 apiserver,由 apiserver 将这些信息写入到 etcd 中。
    • etcd 写入信息完毕,会把相关的确认信息发送给 apiserver,由 apiserver 发送给相关的 kubelet。
    • kube-proxy 创建网络规则,制定转发规则。创建 service 作为负载均衡的访问入口(有 cluster-ip、nodepode 类型等),把用户的请求通过负载均衡转发到关联的 pod 上,从而发布 pod 里的业务。

     PS:

    预算策略:将所有 node 节点的剩余资源和 pod 所需的资源对比,找出符合 pod 资源需求的 node 节点。
    优选策略:预算策略筛选后的 node 节点被交给优选策略。通过 cpu 负载,内存剩余等因素,找出最合适的 node 节点。把 pod 调度到这个节点运行。

  • 相关阅读:
    基于NFS实现WordPress
    基于三台主机部署phpwind
    phpMyAdmin安装部署
    配置LAMP实现WordPress
    配置HTTPS服务
    部署DNS服务
    文本三剑客---awk(gawk)基础
    文本三剑客---sed 基础
    2019-2020-1 20199308《Linux内核原理与分析》第七周作业
    2019-2020-1 20199308《Linux内核原理与分析》第六周作业
  • 原文地址:https://www.cnblogs.com/shenyuanhaojie/p/15704547.html
Copyright © 2011-2022 走看看