k8s架构了解

Kubernetes(k8s)是用于自动部署、扩展和管理“容器化应用程序”的开源系统

k8s由control plane以及cluster nodes构成
在这里插入图片描述

control plane

control plane是维护所有k8s对象记录的系统,持续管理着对象状态,并且对集群的变化做出响应,并使状态匹配所期望的

  • kube-apiserver: API Server 为不同类型的应用程序提供了支持生命周期编排(缩放、更新等)的 API。它还充当集群的网关,因此 API 服务器必须能够被集群外部的客户端访问。客户机通过 API 服务器进行身份验证,并将其用作节点和 pods (以及服务)的代理/通道。
  • kube-controller-manager: 负责将资源转变维持到期望状态。期望状态就是描述资源期望的元数据
  • kube-scheduler: 负责编排集群中容器
  • etcd: 一个分布式和容错的开源键值存储数据库,用于存储配置数据和关于集群状态的信息。etcd可以在外部配置,尽管它通常是Kubernetes控制平面的一部分。

Kubernetes control plane

kube-apiserver

在这里插入图片描述

具体负责如下

  • api管理:保留集群API并处理所有API请求
  • 认证与授权
  • 唯一与etcd交流的组件
  • 协调control plane和cluster nodes之间的进程
  • 内置的 bastion apiserver 代理,支持从集群外部访问 ClusterIP 服务

etcd

etcd提供了

  • 储存了所有配置、状态以及k8s对象的元数据
  • 允许客户端(apiserver)跟踪对象状态的变化
  • 通过grpc暴露key-value API

kube-scheduler

在这里插入图片描述

scheduler通过采用筛选和评分选择最好的node,随后应用该调度

controller manager

controller是运行控制流的程序,在观察到对象状态与预期不一致,会进行纠正。

kube controller manager用于管理所有k8s controller的组件

在这里插入图片描述

cluster nodes

cluster nodes是运行容器且被master节点管理的机器

在这里插入图片描述

  • kubelet: 是主要且最重要的控制器,与control plane沟通来驱动容器在pod中运行
  • kube-proxy: 运行在集群中每个节点的网络代理,维持每个节点的网络规则。
  • container runtime: 负责运行容器。支持containerd、CRI-O等

kubelet

kubelet负责向api server注册node,并使用来自api server的pod规格与runtime沟通使容器达到所期望状态

skubelet不以容器的形式运行,而是作为daemon被systemd管理

主要做以下事情

  • 从pod创建、修改、删除容器
  • 通过读取 pod 配置并在主机上创建各自的卷安装目录来负责安装卷。
  • 收集汇报pod状态

kube-proxy

为了理解kube-proxy首先要了解service和endpoint对象

k8s中service指的是一种向内部或外部流量公开一组pod的方法。当创建service对象时,将获得分配的虚拟IP(clusterIP),只能在Kubernetes集群中访问。

Endpoint对象包含Service对象下pod组的所有IP地址和端口。endpoint控制器负责维护pod IP地址(端点)列表。service控制器负责配置service的endpoint。

不能ping通ClusterIP,因为它只用于服务发现,不像pod ip可以ping通。

接着来介绍一下kube-proxy

Kube-proxy是一个守护进程,在每个节点上作为守护进程运行。它是为pod实现Kubernetes Services概念的代理组件。(为一组具有负载平衡的pod提供单个DNS)。它主要代理UDP、TCP和SCTP,不理解HTTP。

当您使用Service (ClusterIP)公开pod时,Kube-proxy将创建网络规则,将流量发送到分组在Service对象下的后端pod(endpoint)。也就是说,所有的负载平衡和服务发现都由Kube代理处理。

在这里插入图片描述

kube-proxy默认采用iptables模型进行处理

container runtime

runtime负责拉取镜像、运行容器、分配和隔离容器资源、管理容器整个生命周期

Container Runtime Interface(CRI):是一组 API,允许 Kubernetes 与不同的容器运行时进行交互。它允许不同的容器运行时与 Kubernetes 交换使用。CRI 定义了用于创建、启动、停止和删除容器以及管理映像和容器网络的 API

Open Container Initiative (OCI) : 一组用于容器规格和运行时的标准

  1. kubelet接收来自api server请求,随后通过CRI与CRI-O对话来启动要求的容器
  2. CRI-O检查并拉取镜像
  3. CRI-O为容器生成OCI runtime规格
  4. CRI-O随后启动OCI兼容runtime(runc)安装规格去启动容器进程

在这里插入图片描述

Ref

  1. https://platform9.com/blog/kubernetes-enterprise-chapter-2-kubernetes-architecture-concepts/
  2. https://kubernetes.io/docs/concepts/overview/components/
  3. https://avinetworks.com/glossary/kubernetes-architecture/
  4. https://devopscube.com/kubernetes-architecture-explained/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/19923.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

matlab实验三程序设计与优化

学聪明点,自己改,别把我卖了 一、实验目的及要求 一、实验的目的与要求 1、掌握 MATLAB的函数 2、掌握 MATLAB的程序流 3、掌握 MATLAB脚本和函数文件的编写 4、熟悉基于矩阵的程序设计与优化 二、实验原理 1、MATLAB的M文件:脚本文件与函数…

MMM(Master-Master replication manager for MySQL)

MMM(Master-Master replication manager for MySQL,MySQL主主复制管理器) 是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语言开发,主要用来监控和管理 MySQL Master-Master (双主)复制&…

matlabR2021b启动很慢和初始化时间很长解决

工具:MatlabR2021b。 问题记录,在网上下载安装包后,安装后,发现软件启动时间很长。进入界面后软件需要较长时间的初始化。才能就绪。 查询原因为软件需要在启动是查询licence。 首先在安装文件夹中启动Activate MATLAB R2021b。…

图解LeetCode——240. 搜索二维矩阵 II

一、题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 二、示例 2.1> 示例 1: 【输入】matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,1…

leaflet根据坐标点设置多边形,生成geojson文件,计算面积值(133)

第133个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中根据坐标点设置多边形,通过.toGeoJSON() 来生成geojson文件,通过turf.area来计算面积值。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共123…

Java基础之ConcurrentHashMap答非所问

ConcurrentHashMap的数据结构是什么? ConcurrentHashMap仅仅是HashMap的线程安全版本,针对HashMap的线程安全优化,所以HashMap有的特点ConcurrentHashMap同意具有, ConcurrentHashMap的数据结构跟HashMap是一样的。 在JDK7版本使用…

QTableView编程——Model/View架构(单元格随意拖拽交换)

QTableView编程——Model/View架构 基础知识 添加表头 //准备数据模型QStandardItemModel *student_model new QStandardItemModel();student_model->setHorizontalHeaderItem(0, new QStandardItem(QObject::tr("Name")));student_model->setHorizontalHea…

Python Scrapy爬虫框架安装和创建

1、检查Win环境 python版本 python 2、whl方式安装 twisted twisted异步网络框架,可加快下载速度。优点是用少量的代码实现快速的抓取。 由于scrapy需要twisted的环境,我们直接去下载whl文件根据自己的Python版本选择 https://www.lfd.uci.edu/~gohlke/p…

STM32F103ZET6驱动TOF250激光测距传感器

STM32驱动TOF250激光测距传感器 TOF250介绍I2C通讯协议I2C寄存器地址 TOF250引脚说明和STM32的接线和STM32的接线 程序实验结果总结 TOF250介绍 TOF250是一款基于TOF原理的单点测距雷达,采用940nm红外光源,提供了精确和可重复的远 距离测量用于高速自动对…

集群时间同步

集群时间同步 时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。 1.配置时间同步具体实操: 1.1)时间服务器配…

有没有中国版的chatGPT?

ChatGPT是一个基于人工智能的聊天机器人,它可以通过自然语言处理技术与用户进行交互和对话。ChatGPT的目的是为用户提供便捷的问答服务和娱乐,它可以回答各种问题,例如天气、新闻、历史、文化、科技、娱乐等等。ChatGPT的核心技术是基于GPT模…

银河麒麟系统Arm64编译opencv指南

进入opencv官网下载版本;我这边下载的是2.4.13.6 ;根据需要下载最新的 Releases - OpenCV 拷贝进麒麟系统我这边是麒麟V10 sp1 2204;并解 cmake 在麒麟应用商城中安装; 打开cmake 设置opencv路径;builder文件夹可以自…

内卷时代,大厂产品经理仅用3步破局

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"! 作者:申悦|慕课网讲师 在当下互联网环境下,产品经理究竟要如何破局? 我认为,既然要破局…

分组卷积和深度可分离卷积

文章目录 一、常规卷积操作二、分组卷积三、深度可分离卷积 一、常规卷积操作 在图中,输入的特征图大小为 H * W * 4 卷积核个数为 2 个,每个卷积核的大小为 K * K * 4 输出的特征图大小为 H’ * W’ * 2 二、分组卷积 !!&#…

Maven构建生命周期

目录 Default (Build) 生命周期 命令行调用 Site 生命周期 如何清除本地 Maven 仓库并重新构建项目 Maven 构建配置文件 mvn dependency:purge-local-repository 这个命令是干什么的? mvn clean install这个命令是干什么的? 配置文件激活 1、配…

数据湖与数据仓库区别

数据湖是近两年中比较新的技术在大数据领域中,对于一个真正的数据湖应该是什么样子,现在对数据湖认知还是处在探索的阶段,像现在代表的开源产品有iceberg、hudi、Delta Lake。 那对于数据湖应该是什么样子,先来看数据湖的作者AWS…

【STL】string的使用

放在专栏【C知识总结】,会持续更新,期待支持🌹 STL简介 STL的诞生 STL为英文Standard Template Library的缩写,译为标准模板库。是C标准库的重要组成部分。 长久以来,软件届一直希望建立一种可重复运用的东西。所谓…

元宇宙又“死”了!Epic老板:你当6亿用户是摆设?

“扎克伯格花了数年时间试图让Metaverse成为现实,但现在它已被AI取代,并走向科技创意的坟墓。”一篇表达“元宇宙已死”的文章近期在推特上引发热议,而游戏制作公司Epic Games CEO Tim Sweeney的还击更是让这个话题热上加热。 “搞一次在线守…

远程桌面基本原理

远程桌面基本原理 远程桌面是一种技术,它允许用户通过互联网或局域网远程访问另一台计算机的桌面。这种技术可以让用户在不同的地方使用同一台计算机,或者在同一地方使用不同的计算机。远程桌面技术在现代计算机应用中发挥着重要的作用,本文将…

数据结构(堆)

文章目录 一、概念二、堆的使用三、PriorityQueue 介绍3.1 PriorityQueue 的特性3.2 PriorityQueue 的方法3.3 集合框架中PriorityQueue的比较方式 四、堆的应用 一、概念 1.什么是优先级队列 队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数…