不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • Docker

  • K8S

    • 01_Kubernetes概述

      • 01.K8S概述
      • 02.K8S架构
      • 03.K8S工作原理
        • 01.K8S工作原理
        • 02.创建pod的流程
      • 04.K8S生产环境部署的两种方法
    • 02_二进制搭建K8s集群

    • 03_kubeadm部署K8s

    • 04_Kubectl命令行管理工具

    • 05_资源编排(YAML)

    • 06_Pod对象管理

    • 07_Pod对象调度

    • 08_常用负载控制器

    • 09_Service统一入口访问

    • 10_Ingress对外暴露应用

    • 11_项目中实际应用K8s

  • 容器原理

  • Istio

  • 容器
  • K8S
  • 01_Kubernetes概述
xiaonaiqiang
2021-02-12
目录

03.K8S工作原理

# 01.K8S工作原理

  • ① 部署应用:

    • 开发者提交应用描述文件(YAML格式)到API Server
    • 指定Pod、Service、ConfigMap等资源的期望状态
  • ② API Server处理请求:

    • API Server 接收到请求后,首先将应用描述文件中的信息存储在etcd中,确保集群状态数据的一致性
  • ③ 调度器决定节点分配:

    • Scheduler 读取etcd中存储的应用期望状态
    • 并根据当前集群中节点的资源利用情况,选择最合适的节点运行Pod
  • ④ Kubelet拉起容器:

    • Kubelet接收到Scheduler的指令后
    • 通过容器运行时(如Docker或containerd)拉取指定镜像并启动容器
  • ⑤ 服务发现与负载均衡:

    • Kube-proxy设置相应的网络规则
    • 使应用服务能够被外部访问或在内部Pod之间进行通信
  • ⑥ 自动扩缩容和故障恢复:

    • Controller Manager持续监控Pod的运行状态
    • 并在Pod故障或节点失效时自动创建新的副本或迁移Pod

# 02.创建pod的流程

一:获取创建请求

  • 1.用户提交创建Pod的请求,可以通过API Server的REST API ,也可用Kubectl命令行工具,支持Json和Yaml两种格式;

  • 2.API Server 处理用户请求,存储Pod数据到Etcd,以便后续组件能够读取Pod状态;

  • 3.Schedule通过和 API Server的watch机制,查看到新的pod,尝试为Pod绑定Node;

二:选择Pod主机节点

  • 4.过滤主机:调度器用一组规则过滤掉不符合要求的主机(比如Pod指定了所需要的资源,那么就要过滤掉资源不够的主机);

  • 5.主机打分:对第一步筛选出的符合要求的主机进行打分,在主机打分阶段,调度器会考虑一些整体优化策略

    • 比如:把一个Replication Controller的副本分布到不同的主机上,使用最低负载的主机等;
  • 6.选择主机:选择打分最高的主机,进行binding操作,结果存储到Etcd中;

三:调用docker引擎,创建容器

  • 7.kubelet根据调度结果执行Pod创建操作:
    • 1)绑定成功后,会启动container, docker run,
    • 2)scheduler会调用API Server的API在etcd中创建一个bound pod对象,描述在一个工作节点上绑定运行的所有pod信息。
    • 3)运行在每个工作节点上的kubelet也会定期与etcd同步bound pod信息
    • 4)一旦发现应该在该工作节点上运行的bound pod对象没有更新,则调用Docker API创建并启动pod内的容器。

上次更新: 2024/9/27 11:33:57
02.K8S架构
04.K8S生产环境部署的两种方法

← 02.K8S架构 04.K8S生产环境部署的两种方法→

最近更新
01
04.数组双指针排序_子数组
03-25
02
08.动态规划
03-25
03
06.回溯算法
03-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式