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

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

云计算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.kler.cn/a/326358.html

相关文章:

  • Python 网络爬虫入门教程
  • C++深度搜索(2)
  • 使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan
  • 【软件测试】一个简单的自动化Java程序编写
  • vue如何实现组件切换
  • Linux下编译安装Nginx
  • 开放词汇目标检测
  • Unity实战案例全解析:RTS游戏的框选和阵型功能(4)阵型功能
  • 【单元测试】任务1:白盒测试1
  • 完成UI界面的绘制
  • DRF实操学习——购物车及订单生成
  • 【Redis 源码】1下载与源码编译
  • 使用CAPTCHA对反爬虫有优势吗
  • java 解析excel (网络资源)
  • Matlab|计及需求响应消纳风电的电热综合能源系统经济调度
  • 防火墙的区域划分+来自公网、内网的ip欺骗攻击+防御
  • 24.9.25学习笔记
  • 语音识别控制(软件、硬件)
  • 【Pytorch图像+序列双输入网络源代码】
  • mac 触控板 三指拖动
  • 【软件工程】模块化思想概述
  • 线性模型到神经网络
  • PyCharm开发工具的安装和基础使用
  • JVM(HotSpot):字符串常量池(StringTable)
  • DK5V100R20ST1直插TO220F功率12V 3A同步整流芯片
  • 解决目标主机showmount -e信息泄露(CVE-1999-0554)