CKA(k8s) 05Kubernetes 完整工作流程描述

Kubernetes 完整工作流程描述

1. 用户请求的接收

  • 用户访问
    • 用户通过CLI(如kubectl)或YAML文件(资源对象文件)定义期望的资源状态(如Pod),并发出请求。该请求通过集群的入口(通常是Master节点的IP)进入Kubernetes集群。

2. Master节点的处理

  • 流量进入Master节点
    • 用户请求流量到达Master节点,Master节点包含多个关键组件:
      • kube-apiserver:作为Kubernetes的控制平面和API入口,负责接收和处理用户请求。
      • etcd:分布式键值存储,保存集群的所有状态数据。
      • kube-scheduler:负责Pod的调度。
      • kube-controller-manager:负责集群状态的管理和调整。
      • kube-proxy:负责网络流量的管理。

3. 处理请求并存储状态

  • 请求处理
    • kube-apiserver接收到用户的请求后,会验证请求的合法性,并将用户定义的期望状态(如Pod的定义)存储到etcd中。

4. Pod调度

  • 调度过程
    • kube-scheduler监听kube-apiserver的事件,检测到新的Pod请求后,从etcd中获取所有节点的信息。
    • 调度过程包括:
      • 预选:根据Pod的资源请求和节点的可用资源,筛选出符合条件的节点。
      • 优选:对预选出的节点进行进一步的评估,选择最适合的节点。
      • 绑定:将调度结果通过kube-apiserver通知被选中的节点的kubelet

5. Node节点的处理

  • kubelet的角色
    • 每个Node节点上运行kubelet,它是Kubernetes的主要工作负载代理。kubelet接收到来自kube-apiserver的调度指令后,会通过CRI(Container Runtime Interface)与底层容器引擎(如Docker或containerd)进行通信。
    • 在Kubernetes 1.24版本及之后,kubelet与Docker之间的连接需要通过cri-dockerd进行。

6. 创建Pod

  • Pod的创建过程
    • kubelet接收到调度指令后,通过CRI请求Docker创建Pod。Pod的创建过程如下:
      • 首先,kubelet会创建一个名为pause的容器,这个容器作为Pod的网络命名空间的基础。
      • 然后,基于用户定义的YAML文件,kubelet创建应用容器,并将其与pause容器共享网络命名空间。此时,应用容器可以通过pause容器访问网络。

7. 状态管理与反馈

  • 状态信息的管理
    • pause容器的相关数据(如网络和存储信息)被kubelet收集,并返回给kube-apiserverkube-apiserver将这些状态信息存储到etcd中。
    • kube-controller-manager监听kube-apiserver的状态变化,确保集群中的实际状态与用户的期望状态保持一致。

8. 状态调整

  • 实际状态与期望状态的对比
    • kube-controller-manager会对比实际状态与期望状态。如果发现实际状态与期望状态不一致,kube-controller-manager将指挥kubelet进行相应的调整。这可能包括重新启动Pod、迁移Pod到其他节点等操作,以确保Pod的状态符合预期。

9. 总结

  • 在这个完整的流程中,用户的请求从入口流入Master节点,通过kube-apiserver进行处理,存储到etcd,然后由kube-scheduler进行调度,最终在Node节点上由kubelet创建Pod。Pod的状态通过kube-controller-manager进行监控和调整,确保实际状态与期望状态一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值