什么是Kubernetes?K8s基础与工作原理
什么是 Kubernetes(K8s)?
Kubernetes,通常简称为 K8s,是一个用于自动化部署、扩展和管理容器化应用程序的开源容器编排平台。它由 Google 于 2014 年开源,后来交由 CNCF(Cloud Native Computing Foundation)管理。Kubernetes 的名字来自希腊语,意思是“舵手”或“飞行员”,表明它的作用是为容器化应用提供控制与调度。
Kubernetes 解决了容器管理的复杂性,通过集群化的方式将一组物理或虚拟机器组织起来,形成一个统一的计算资源池,并在这个资源池上自动化地部署、扩展、负载均衡和恢复应用程序。
Kubernetes 的基础组件
Kubernetes 的架构分为两个主要部分:控制平面(Control Plane)和工作节点(Worker Nodes)。这两者共同管理和调度容器化应用的生命周期。
1. 控制平面(Control Plane)
控制平面是 Kubernetes 的“大脑”,负责集群的管理和调度工作。其核心组件包括:
-
API Server:API Server 是 Kubernetes 集群的入口,负责处理所有的 API 请求。开发者、运维人员、以及 Kubernetes 内部组件都通过 API Server 来与 Kubernetes 交互。它是整个集群管理的核心组件。
-
Etcd:Kubernetes 使用 etcd 作为分布式键值存储,用于存储集群的所有状态数据。Etcd 是集群的一致性数据存储,保存着集群的配置、Pod 的状态信息等。
-
Controller Manager:它负责管理 Kubernetes 的各种控制器,包括节点控制器、复制控制器等。控制器负责监控集群的状态,确保实际状态与期望状态一致。例如,如果某个 Pod 异常退出,控制器将启动新的 Pod 进行替换。
-
Scheduler:调度器负责为未分配的 Pod 选择合适的节点(Node)来运行。它根据资源利用率、节点健康状况等多种因素来做出决策,确保应用的高可用性和性能。
2. 工作节点(Worker Nodes)
工作节点是实际运行容器化应用程序的地方。每个节点上都有几个关键组件:
-
Kubelet:这是在每个节点上运行的主要代理进程,负责与控制平面通信,并执行调度器分配的任务。它会监控 Pod 的状态,并向控制平面报告。
-
Kube-proxy:这是 Kubernetes 内部的网络代理,负责为每个 Pod 提供网络通信,并实现服务的负载均衡。
-
Container Runtime:这是在节点上负责运行容器的实际工具,常见的有 Docker、containerd 等。Kubernetes 支持多种容器运行时接口(CRI)。
Kubernetes 的核心概念
Kubernetes 提供了一系列抽象层,用来管理容器化应用的运行、扩展、和故障恢复。以下是 Kubernetes 中几个关键的抽象和概念:
1. Pod
Pod 是 Kubernetes 的最小部署单元,代表着运行在集群上的一个或多个容器。通常,容器会共享同一个 Pod 的网络和存储资源。尽管每个 Pod 通常只包含一个容器,但也可以将多个紧密耦合的容器放在同一个 Pod 中共同工作。
2. Service
Service 是 Kubernetes 提供的持久服务抽象,用于定义一组运行在 Pod 上的容器服务。它为这些容器分配一个静态 IP 地址和 DNS 名称,并负责负载均衡。通过 Service,可以实现在 Pod 动态创建和销毁的情况下保持外部的访问稳定。
3. Deployment
Deployment 是一种声明式的资源对象,负责管理 Pod 的副本数、滚动更新等。它可以保证某个应用的指定数量的副本始终在集群中运行,并且提供了自动滚动更新、回滚等功能。
4. Namespace
Namespace 是 Kubernetes 中用来进行资源隔离的逻辑分组机制。不同的 Namespace 中可以有相同名称的资源对象,它们之间互不影响。常用来对大型集群进行资源管理和权限隔离。
5. Ingress
Ingress 是 Kubernetes 提供的入口资源,用来控制从外部流量如何进入集群内部的服务。通过 Ingress,可以定义 HTTP 和 HTTPS 路由规则,将外部请求转发给相应的服务。
Kubernetes 的工作原理
Kubernetes 的核心工作原理是基于 声明式管理(Declarative Management)和 控制循环(Control Loop)来实现的。用户通过配置文件定义期望的集群状态,Kubernetes 通过控制器不断对比实际状态和期望状态,并自动进行调整,使两者保持一致。
1. 声明式管理
在 Kubernetes 中,用户通过声明式配置文件(通常为 YAML 或 JSON 格式)来定义期望的状态。这个期望状态可以包括应用运行的 Pod 数量、容器镜像版本、服务的暴露方式等。
当用户提交这些配置文件后,Kubernetes 的控制平面会将这些声明保存到 etcd 中,并开始调度和管理相应的资源,直到集群的实际状态与声明的期望状态一致。
2. 控制循环
控制循环是 Kubernetes 的核心原理之一。它不断监控集群的实际状态(如 Pod 的数量、健康状况等),并与期望状态进行比较。如果检测到差异,控制器会采取行动修复这些差异。例如,如果某个 Pod 异常退出,控制器会自动创建新的 Pod,以恢复到期望的副本数。
这个循环持续不断地运行,确保 Kubernetes 集群始终处于一致的状态,无需手动干预。
3. 调度与扩展
当用户定义了 Pod 或 Deployment,Kubernetes 的调度器会根据当前集群的资源情况选择合适的节点运行这些 Pod。Kubernetes 支持横向自动扩展(Horizontal Pod Autoscaler),可以根据 Pod 的 CPU 或内存使用情况动态增加或减少 Pod 的数量。
4. 自愈能力
Kubernetes 具备强大的自愈能力,能够在应用或节点出现故障时,自动进行修复。例如,当某个节点失效时,Kubernetes 会自动将该节点上运行的容器重新调度到其他健康的节点上运行,确保应用的高可用性。
Kubernetes 的优势
-
自动化管理:Kubernetes 能够自动调度、扩展和恢复应用,减少了人工干预的需要,提高了系统的可管理性。
-
弹性与扩展性:Kubernetes 支持自动扩展容器集群,可以根据流量动态调整资源,确保系统的性能和稳定性。
-
自愈能力:Kubernetes 能够自动检测应用故障并进行修复,保证系统的高可用性。
-
跨平台支持:Kubernetes 支持多种云平台和本地部署环境,使得应用能够轻松迁移和扩展,避免厂商锁定。
总结
Kubernetes 是一个强大的容器编排平台,通过抽象复杂的基础设施细节,提供了一种声明式的管理方式。其核心组件包括控制平面和工作节点,利用声明式配置和控制循环来管理容器化应用的生命周期。借助 Kubernetes,开发和运维人员能够更高效地管理、扩展和维护容器化的应用程序,从而大幅提升系统的可扩展性、可靠性和自动化管理水平。
相关文章:
什么是Kubernetes?K8s基础与工作原理
什么是 Kubernetes(K8s)? Kubernetes,通常简称为 K8s,是一个用于自动化部署、扩展和管理容器化应用程序的开源容器编排平台。它由 Google 于 2014 年开源,后来交由 CNCF(Cloud Native Computin…...
HTML5新增属性
1、HTML5 1.1 新增布局标签 header:用于定义文档或者section的页眉;footer:用于定义页面或section的底部信息;nav:用于定位页面上的导航链接部分;article:用于定位文档或者页面中的独立部分&a…...
软件开发术语(E开头)---持续更新
e—business 电子商务EAI (enterprise application integration)企业应用程序集成(整合)EBCO (empty base class optimization) 空基类优化(机制)Edge and Vertex Connectivity 割边/割点 Edge Coloring 边染色 EDI (Dlectronic Data Interchange)电子数据交换effic…...
多机器人编队避障算法(1)
文章目录 前言一、基于感知的避障1.基于感知的Epuck2避障思路(理论)2.基于感知的Epuck2避障实现(现实)3.距离传感器结合红外传感器修复避障Bug4.问题5.代码逻辑图 二、基于人工势场力的避障1.基于人工势场的Epuck2避障思路(理论)2.基于人工势场力的Epuck2避障实现(现实) 三、两…...
【网站项目】SpringBoot401超市收银系统
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板ÿ…...
KD树详解:多维数据高效搜索的利器
摘要 在处理多维数据时,如何高效地进行搜索与查询成为一个关键问题。KD树(K-Dimensional Tree)作为一种高效的多维数据结构,广泛应用于计算机视觉、机器人导航、数据库检索等领域。本文将详细介绍KD树的基本概念、结构、构建算法…...
从裸机到70B大模型2:基础设施设置与脚本
从裸机到70B大模型2:基础设施设置与脚本 随着深度学习技术的不断发展,神经网络模型的规模逐渐扩大,从单个模型到大型70B模型,所需的计算资源和存储空间也在不断增加。为了训练这些大型模型,我们需要一套高效的基础设施…...
shodan4,挂黑网站查找,弱口令网站搜索
myip参数 shodan myip(查看自己的出口IP,哪个地址链接的公网)挂黑网站查找 我们今天看一看找一下,有些已经被黑的网站好吧,就是利用shodan查看一下哪些网站已经被黑了。 shodan search -limit 10 -fields ip_str,port http.title:hacked b…...
spring boot 整合Knife4j
项目依赖配置 在本项目中,我们使用了以下关键依赖,以支持 Spring Boot 和 API 文档生成。 1. Spring Boot 版本 为了构建一个可靠和高效的 Spring Boot 应用程序,我们使用以下父级依赖: <parent><groupId>org.springframework.boot</groupId><art…...
攻防世界的新手web题解
攻防世界引导模式 1、disabled_button 好,给了一个按钮,第一道题目就不会做 看的wp<input disabled class"btn btn-default" style"height:50px;width:200px;" type"submit" value"flag" name"auth&q…...
【国潮来袭】华为原生鸿蒙 HarmonyOS NEXT(5.0)正式发布:鸿蒙诞生以来最大升级,碰一碰、小艺圈选重磅上线
在昨日晚间的原生鸿蒙之夜暨华为全场景新品发布会上,华为原生鸿蒙 HarmonyOS NEXT(5.0)正式发布。 华为官方透露,截至目前,鸿蒙操作系统在中国市场份额占据 Top2 的领先地位,拥有超过 1.1 亿 的代码行和 6…...
pytest 单元框架里,前置条件
1.使用 setup 函数级的(setup_function、teardown_function)只对函数用例生效,而且不在类中使用类级的(setup_class、teardown_class)在类中使用,类执行之前运行一次,类执行之后运行一次 类中方…...
数字IC后端实现 | Innovus各个阶段常用命令汇总
应各位读者要求,小编最近按照Innovus流程顺序整理出数字IC后端项目中常用的命令汇总。限于篇幅,这次只更新到powerplan阶段。有了这份Innovus常用命令汇总,学习数字IC后端从此不再迷路!如果大家觉得这个专题还不错,想继…...
MySQL全文索引检索中文
MySQL全文索引检索中文 5.7.6版本不支持中文检索,需要手动修改配置 ft_min_word_len 1 ,因为默认配置 4 SHOW VARIABLES LIKE ft%; show VARIABLES like ngram_token_size;配置 修改 MySQL 配置文件 vim /etc/my.cnf在配置的 [mysqld] 下面添加**ft_…...
pikachu靶场-Cross-Site Scripting(XSS)
sqli-labs靶场安装以及刷题记录-dockerpikachu靶场-Cross-Site Scripting pikachu靶场的安装刷题记录反射型xss(get)反射型xss(post)存储型xssDOM型xssDOM型xss-xxss盲打xss之过滤xss之htmlspecialcharsxss之href输出xss之js输出 pikachu靶场的安装 刷题记录 反射型xss(get) …...
在数据库访问中,使用localhost、127.0.0.1和IP地址有什么差异
在数据库访问中,使用127.0.0.1和IP地址(在本地环境中通常指的是局域网IP或环回地址)的速度差异,实际上是非常微小的,甚至在很多情况下可以忽略不计。不过,为了更深入地理解这个问题,我们可以从以…...
C语言 | Leetcode C语言题解之第513题找树左下角的值
题目: 题解: #define MAX_NODE_SIZE 10000int findBottomLeftValue(struct TreeNode* root){int ret;struct TreeNode** queue (struct TreeNode **)malloc(sizeof(struct TreeNode) * MAX_NODE_SIZE);int head 0;int tail 0;queue[tail] root;whil…...
人工智能:改变未来生活与工作的无尽可能
随着科技的飞速发展,人工智能(AI)正成为推动全球变革的重要力量。无论是在医疗、企业,还是日常生活中,AI技术通过赋能各行业,正在深刻地改变我们的生活和工作方式。这些变化为我们提供了便捷与效率的同时&a…...
讲一讲 kafka 的 ack 的三种机制?
大家好,我是锋哥。今天分享关于【K讲一讲 kafka 的 ack 的三种机制?】面试题?希望对大家有帮助; 讲一讲 kafka 的 ack 的三种机制? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka的消息确认机制&…...
若依框架部署到服务器后头像资源访问404
排错过程 第一开始以为是代理出问题了 官网给出的解决方案 第一种是用代理后端接口,第二种是重写路径直接访问静态文件 接口通过捕获profile开头的路径/profile/avatar…,转为/home…/avatar找到我们在该路径下的文件 但是我想了一下,我ngin…...
纯GO语言开发RTSP流媒体服务器-RTSP推流直播、本地保存录像、录像回放、http-flv及hls协议分发
温馨提示:我们分享的文章是给需要的人,不需要的人请绕过,文明浏览,误恶语伤人! 前言 在软件开发中遇到使用流媒体音视频的行业比较多,如安防监控系统、无人机巡逻视频上云处理、直播平台、教育与企业培训…...
el-table相关的功能实现
1. 表格嵌套表格时,隐藏父表格的全选框 场景:当table表格设置复选(多选)功能时,如何隐藏表头的复选框,不让用户一键多选。 <el-table :header-cell-class-name"cellClass">// 表头复选框禁…...
衡石分析平台系统分析人员手册-展示类控件创建富文本攻略
富文本 富文本控件是一种常见的控件,可用来展示文本信息、用户属性信息,在数据分析中起到辅助分析的功能。 富文本常见的使用场景有: 仅展示纯文本信息。在富文本中展示数据集字段、指标、参数等信息。使用富文本展示用户属性相关信息。在…...
为什么在网络中不能直接传输数据
为什么在网络中不能直接传输数据 原因 在网络中不能直接传输原始数据形式,主要有以下几方面原因: 数据表示的多样性:不同的计算机系统、编程语言和应用程序对数据的表示方式可能各不相同。例如,整数在不同的编程语言中可能有不同…...
javascript实现aes算法(支持微信小程序)
概述: 本代码是本人从c代码上转换成的javascript代码,并测试验证通过的。代码比较长1000多行,考虑放其他地方要么要会员要么容易关闭,不容易被需要的获取到,故直接贴在本文档下面的章节,功能代码。 测试平…...
Centos系统新增网卡后获取不到网卡的IP地址解决方法
一、问题描述 当我们给Centos系统添加了新的网卡后,使用查看IP地址命令【ip addr】时,发现新网卡没有获取到对应的IP地址信息,如下图所示: 二、解决方法 有两种解决方法:一种是自动获取IP地址;另外一种是手动配置IP地址; 2.1、自动获取IP地址 #自动获取网卡的IP地址命…...
U-net医学分割网络——学习笔记
《U-Net: Convolutional Networks for Biomedical Image Segmentation》 一、提出背景 U-Net 的提出是为了解决生物医学图像分割的几个关键问题:需要像素级的精确分割、标注数据稀缺、滑动窗口方法效率低以及多尺度特征融合的需求。U-Net 通过对称的 U 型全卷积结…...
CIM+全场景应用,铸就智慧城市发展新篇
在数字化浪潮的推动下,智慧城市建设正成为全球城市发展的新趋势。而CIM(城市信息模型)作为智慧城市建设的核心,正以其强大的数据集成和分析能力,引领着城市发展的新篇章。今天,让我们一起探讨CIM全场景应用…...
ts:对象数组的简单使用
ts中对象数组的简单使用 一、主要内容说明二、例子1、源码12、源码1运行效果 三、结语四、定位日期 一、主要内容说明 平常ts创建数组的格式如下: let array:string[]["元素1","元素2","元素3","元素3","元素4"…...
当我们在微服务中使用API网关时,它是否会成为系统的瓶颈?这种潜在的瓶颈如何评估和解决?如何在微服务架构中保证高效请求流量?|API网关|微服务|异步处理
目录 1. API网关在微服务中的角色与重要性 2. API网关瓶颈的评估 2.1 请求延迟分析 2.2 并发请求量监控 2.3 内存和CPU使用情况 2.4 限流和熔断机制评估 2.5 日志分析 3. API网关瓶颈的解决方案 3.1 缓存机制优化 3.2 负载均衡优化 3.3 异步处理与消息队列 3.4 限流…...
营销型网站的三元素/seo关键词优化方法
将以下代码复制粘贴到txt文件中,另存为bat格式,并将文件编码格式修改为ANSI,跟要处理的文件放一个文件夹内运行。 代码中制定的是删除1,2行,可根据需求自行修改。 echo off rem 根据指定的行号范围删除多个txt文件里的连续多行内…...
做vue用哪个网站/郑州seo实战培训
现在市场上的一些茶,闻起来非常香,泡出来却没有茶味,这是不良商家在茶叶里添加了香精的缘故。那么如何辨别茶叶里有没有添加香精呢?下面我们以铁观音为例。 第一,因为铁观音的特殊加工工艺,铁观音在干茶时的香味并不高…...
wordpress 3.8 侧边栏 仪表盘/网站seo排名优化方法
libevent的evhttp不适合多线程,libevhtp重新设计了libevent的http API,采用了和memcached类似的多线程模型。 worker线程的管道读事件的回调函数为htp__run_in_thread_: #ifndef EVHTP_DISABLE_EVTHR static void htp__run_in_thread_(evthr_t * thr, vo…...
网站建设在哪里进行/营销 推广
2018-09-05EPSON 1600K4打印机如何打印明信片EPSON 1600K4打印机对纸张的厚度是有范围要求的,太厚的纸张容易对设备造成伤害,请见下参数表是否越过范围(纸张厚度 0。065-0。52mm ) 打印针数(针) 24 最高分辨率 360dpi 打印速度 149字/秒 打印宽度 单页纸…...
wordpress 动态背景/模板之家
给出一个二维的字母板和一个单词,寻找字母板网格中是否存在这个单词。 单词可以由按顺序的相邻单元的字母组成,其中相邻单元指的是水平或者垂直方向相邻。每个单元中的字母最多只能使用一次。 样例 给出board [ “ABCE”, “SFCS”, “ADEE” ]…...
乐清网站网络公司/厦门人才网官网招聘
首先说一句,本文适合对Makefile了解的同学阅读。不过看了这句可能就会有同学开始批评我我,Makefile难道不就是随便调用shell命令吗?是的,一般介绍Makefile的文章都是这样事的:target ... : prerequisites ...command..…...