当前位置: 首页 > news >正文

k8s组件原理

文章目录

    • 1、kubernetes控制平面组件
      • 1、kube-apiserver
      • 2、etcd
      • 3、controller-manager
      • 4、schedule
    • 2、node组件
      • 1、kubelet
      • 2、container runtime
      • 3、kube-proxy
    • 3、附加组件
      • 1、kubedns
      • 2、dashboard
    • 4、创建pod的原理

1、kubernetes控制平面组件

img

1、kube-apiserver

  • 是公开kubernetes api 的集群的中心枢纽,具有高度的可扩展性,可以处理大量的并发请求

  • 是所有组件的通信枢纽,就是接收,验证和处理集群内的各类请求,创建,更新,删除,同时将所有的数据和状态持久化到etcd中

  • 多个kube-apiserver实例可以在集群中同时运行,分担请求压力,提高高可用

  • k8s对外的唯一接口,所有请求都要到这里来

img

2、etcd

  • 保存k8s集群中配置信息和各种资源的状态信息,当数据发生变化时。etcd会快速的通知k8s相关组件,etcd是一个独立的组件,不属于k8s集群

  • 不仅提供数据存储,还提供了监听机制,用于监听和推送变更,etcd的变化会通知api server,并通过watch api 向客户端输出

3、controller-manager

  • 负责管理k8s集群各种资源,保证资源处于预期状态,controller-manager由多种controller组成,包括replication controller、endpoints,controller、namespace controller、serviceaccounts controller等

  • 相当于是一个主要的控制器

4、schedule

  • 资源调度,负责决定pod运行在哪一个node上面,调度时,会对集群的结构进行分析,比如,负载等

2、node组件

1、kubelet

  • 是node的agent,scheduler确定在某个node上运行pod后,会将pod的具体配置信息image,volume发送到kubelet,然后kubelet根据这些信息创建和运行容器。并且向master报告运行状态

2、container runtime

  • 每一个node都需要容器运行时环境,负责下载镜像并运行容器

3、kube-proxy

  • service在逻辑上面代理了多个pod,外界通过service访问pod,service接收到请求就需要kube-proxy完成转发到pod,每一个node上面都会运行kube-proxy服务,负责将访问的service的tcp|udp数据流转发到后端的容器

3、附加组件

1、kubedns

  • 运行提供dns服务的pod,同一个集群内的其他pod可以使用dns服务来解决主机名

2、dashboard

  • 基于web 的ui,管理应用好集群自身

4、创建pod的原理

  • 客户端提交创建请求,可以通过api server的reseful api,也可以使用kubectl命令行工具

  • api server处理用户请求,进行身份验证和授权检查,确保请求的用户是合法的

  • 通过后,存储pod数据到etcd

  • scheduler通过api server查看没有调度的pod,尝试为pod分配主机,中间经过了一系列的算法

  • 过滤出不符合要求的主机,比如pod需要的资源量

  • kubelet创建并运行pod,kubelet通过资源的信息来创建

  • pod创建和运行的过程中,kubelet会不断的向api server报告pod的状态信息,api server将这些状态更写入到etcd中保存,这样用户和其他组件可以通过api server查询pod的当前状态

http://www.lryc.cn/news/480062.html

相关文章:

  • 0基础跟德姆(dom)一起学AI 深度学习02-Pytorch基本使用
  • 九州未来再度入选2024边缘计算TOP100
  • 《物理化学学报》
  • 【数据集】【YOLO】【目标检测】树木倒塌识别数据集 9957 张,YOLO道路树木断裂识别算法实战训练教程!
  • iOS 18.2 六大新功能外媒實測|ChatGPT進化版SIRI、自製Genmoji
  • 简单介绍一下mvvm mvc mvp以及区别、历史
  • 达梦8-达梦数据实时同步软件(DMHS)配置-Oracle-DM8
  • mysql常见死锁的分析
  • Go Energy 跨平台(GUI)应用编译和安装包制作
  • 众测遇到的一些案列漏洞
  • 大华乐橙设备私有平台EasyCVR视频设备轨迹回放平台支持哪些摄像机?摄像机如何选型?
  • 实战攻略 | ClickHouse优化之FINAL查询加速
  • 5G NR gNB 逻辑架构及其功能拆分选项
  • PyQt入门指南四十六 性能优化策略
  • 【RMA】基于知识注入和模糊学习的多模态歧义分析
  • CulturalBench :一个旨在评估大型语言模型在全球不同文化背景下知识掌握情况的基准测试数据集
  • Git 入门篇(一)
  • 一个灵活且功能强大的动画库 Popmotion
  • 如何解决传统能源企业后备人才不足、人才规划缺失问题
  • PDF模板制作与填充(Java)
  • LeetCode题练习与总结:迷你语法分析器--385
  • Unity WebGL交互通信
  • 王道考研之数据结构
  • 实习冲刺Day17
  • 我自己nodejs练手时常用的一些库基础用法
  • 岛屿数量问题
  • 智能制造基础- TPM(全面生产维护)
  • C++学习笔记----11、模块、头文件及各种主题(一)---- 模板概览与类模板(4)
  • 【力扣热题100】[Java版] 刷题笔记-160. 相交链表
  • 多线程和线程同步复习