K8S:开源容器编排平台,助力高效稳定的容器化应用管理

embedded/2024/10/21 0:26:39/

云计算de小白

Kubernetes(简称K8s)是一个开源容器编排平台,用于自动化部署、扩展和管理容器化应用程序。

K8S诞生于Google,基于其多年在生产环境运行容器的经验,目前已成为现代微服务架构和云原生应用的核心技术。

790910603c3e44a4bac3bc8f57558f99.jpeg

图片

K8S对容器的生命周期进行管理,保证系统在大规模生产环境中高效稳定地运行。

K8S 组件

K8s采用主从架构,集群内所有节点都由控制平面进行管理和调度

如下图所示:

8c691936d8334f5c931e204e3e7cd2ae.jpeg

图片

K8S组件主要包括两个核心组件:Control Plane、Worker Nodes。

Control Plane:负责管理整个集群的状态,调度任务,监控集群的正常运行;

Worker Nodes:运行实际的应用程序容器,并负责:容器的运行和管理。

如果想掌握K8s,最重要的就是掌握:Control Plane 和 Worker Nodes。

接下来我会详细讲解:Control Plane 和 Worker Node@mikechen

控制平面组件

控制平面:负责管理 Kubernetes 集群中的所有节点和 Pod。

它由以下几个部分组成,重点关注下图中的“黄色框”:

cafaaa2902e54e9ab6bbdc287c975469.jpeg

图片

“黄色框”涉及以下组件:API Server,Scheduler,Controller……等核心组件。

API 服务器

API Server:集群的入口,类似微服务网关,所有的操作都要经过API Server。

负责接收用户和其他组件的请求,并通过REST API提供集群管理功能。

控制器管理器

控制器管理器(Controller Manager):是集群管理中的重要组件,负责保证集群的实际状态和预期状态的一致性。

Controller Manager由多个控制器组成,每个控制器负责处理集群中一个或多个资源对象的状态管理。

如下图所示:

c488aaa5168349428b3296d5d6fd187e.jpeg

图片

每个控制器负责:特定类型的资源或功能。

常见的控制器有:

总之,控制器的设计使得K8S能够在大规模环境下自动管理容器和服务。

调度

负责根据调度策略(如资源利用率、亲和性等)将新创建的Pod分配到合适的节点

例如:通过CPU、内存、GPU等的需求,Scheduler保证节点有足够的可用资源来满足Pod的需求。

另外通过公平调度、优先级等调度策略,保证资源的合理分配和高效利用。

etcd

用于存储集群所有配置信息和状态数据的分布式键值存储系统。

etcd 专注于保证数据的一致性和持久性。

并且,提供快速读取和修改集群状态的能力。

工作节点的组件

工作节点组件:运行实际的应用程序容器,并负责:容器的执行和管理。

每个工作节点包含以下绿色框中所示的组件:

8f0a02d5b9b249fab7b6f8209c013cbf.jpeg

图片

工作节点是实际应用程序运行的地方。它从 API Server 接收调度指令并运行 Pod。

工作节点上的核心组件包括:

库贝莱特

每个节点上的agent负责保证Pod正常运行。

Pod是K8S中最小的可部署单元,通常由一个或多个紧耦合的容器组成。

如下图所示:

c24eefbab05047c58b7df19290d40171.jpeg

图片

Pod是Kubernetes中的基本构建块,提供容器的封装和管理功能。

它们可以包含一个或多个共享网络和存储资源并在同一环境中运行的容器

当Pod被创建之后,K8S调度器会把该Pod调度到合适的工作节点上。

调度程序根据资源需求、节点负载和调度策略选择节点

一旦 Pod 被调度到某个节点,kubelet 就会启动并运行该节点上 Pod 中的容器

Kube-proxy

网络代理,管理网络规则并确保容器和服务之间的网络通信。

例如:使用iptables或者ipvs来维护网络规则,将流量转发到相应的Pod。

容器运行时

负责运行容器,例如Docker、containerd等。

主复制:拉取容器镜像,创建并运行容器

并且,提供容器的生命周期管理,比如:启动、停止、监控容器……等等。

总之,K8S 的控制平面和工作节点是集群正常运行的核心,通过这两部分的协同工作,K8S 可以实现高效的容器编排、管理和自动化运维。


http://www.ppmy.cn/embedded/120231.html

相关文章

Spring Boot 快速入门教程

1. Spring Boot 简介 Spring Boot 是一个基于 Spring 框架的项目,它简化了基于 Spring 的 Java 应用程序的创建和部署。Spring Boot 通过提供一系列的“Starters”来简化 Maven 配置,同时使用约定大于配置的原则,让开发者能够以最少的配置启…

C++(string字符串、函数)

4. string 字符串类&#xff08;掌握&#xff09; 4.1 基础使用 string不是C本身的基本数据类型&#xff0c;而是在C标准库std中的一个字符串类。 在使用时需要引入头文件<string>&#xff0c;而不是<string.h>&#xff0c;string用于在绝大多数情况下代替char*&a…

Spring简介

1. Spring简介 pring的基础架构起源于2000年早期&#xff0c;它是Rod Johnson在一些成功的商业项目中构建的基础设施2002后期&#xff0c;Rod Johnson发布了《Expert One-on-One J2EE Design and Development》一书2003年2月Spring框架正式成为一个开源项目&#xff0c;并发布…

PyQt5与Html的关于地图位置显示的动态交互

PyQt5与Html的关于地图位置显示的动态交互 1 前言2 python部分3 HTML代码4 注意总结 1 前言 上篇本是放弃关于Folium的动态显示&#xff0c;但是在仔细对比Folium在python的直接应用与Html中的写法&#xff0c;其实两者没有什么区别&#xff0c;都是基于Leaflet上建立区域&…

自动化测试中如何精确模拟富文本编辑器中的输入与提交?

最近在开发一个浏览器插件&#xff0c;目的是为了完成自动化测试工作&#xff0c;插件需要模拟用户在网页中的操作&#xff0c;尤其是在富文本编辑器中输入和提交内容。然而&#xff0c;当遇到非标准输入框的编辑器时&#xff0c;如何模拟用户行为并确保编辑器正确响应&#xf…

安全开发指南

1. 引言 目的与重要性&#xff1a;阐述安全开发的重要性和目标&#xff0c;比如保护用户数据、维护系统稳定性、避免经济损失等。适用范围&#xff1a;明确指南适用的项目类型、团队规模及开发阶段。 2. 安全原则与最佳实践 最小权限原则&#xff1a;确保每个组件或服务仅拥…

LORA模型与基座大模型合并并由transformer的AutoModel推理

网上看了看很多资料都是关于Lora后的模型直接由Peft 去读取的 &#xff0c;具体可以参考&#xff1a;LoRA 模型合并与保存 这里就不再赘述了&#xff0c;大概原理就是 def merge_lora_to_LLM():model_name_or_path "your_LLM_model_path"adapter_name_or_path &qu…

【Linux实践】实验六:LINUX系统管理

【Linux实践】实验六&#xff1a;LINUX系统管理 实验目的实验内容实验步骤及结果1. 包管理工具2. VMware Tools3. 修改主机名4. 网络配置① 临时修改② 永久修改 5. 查找文件6. 前后台执行7. 查看进程8. 结束进程 实验目的 4、掌握Linux下软件包管理&#xff0c;包括命令rpm、…