【Kubernetes】Kubernetes 集群的组件介绍

news2024/11/14 8:59:53

  • 基本概念
  • 控制平面组件(Control Plane Components)
    • kube-apiserver
    • etcd
    • kube-scheduler
    • kube-controller-manager
    • cloud-controller-manager(可选)
    • kube-apiserver的重要性 ❗
  • Node 组件
    • kubelet
    • kube-proxy
    • 容器运行时(Container Runtime)
  • 感谢 💖
  • 参考🔎

基本概念

当你部署完 Kubernetes,便拥有了一个完整的集群。

下面先介绍一些基本概念:

节点Node):即一组工作机器, 会运行容器化应用程序。每个集群至少有一个工作节点。

Pod:工作节点会托管 Pod,而 Pod 就是作为应用负载的组件。Pod里面至少会运行一个容器。

控制平面(Control Plane) :管理集群中的工作节点和 Pod。 在生产环境中,控制平面通常跨多台计算机运行, 一个集群通常运行多个节点,提供容错性和高可用性。

在K8s集群中,我们通常会有一个master节点和多个worker节点。master节点上起的启动所有控制平面组件。而worker节点会运行容器化应用程序。

下面这张图展现了一个正常运行的 Kubernetes 集群所需的各种组件。
在这里插入图片描述

控制平面组件(Control Plane Components)

控制平面组件会为集群做出全局决策,比如资源的调度。
控制平面组件可以在集群中的任何节点上运行。 然而,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件, 并且不会在此计算机上运行用户容器。这个机器通常叫做master机器。

kube-apiserver

kube-apiserver是 Kubernetes 控制平面中的一个核心组件,它是整个集群的 API 入口点,被认为是控制平面的"前端"。它提供了与集群交互的方式,让用户、开发人员和其他组件可以通过 API 请求来管理和操作集群中的资源。

Kube-apiserver 的关键特性包括:

  • API 暴露: Kube-apiserver 暴露了 Kubernetes API,允许用户和外部组件通过 HTTP请求进行交互。这些请求可以用于创建、更新、删除和查询各Kubernetes 资源,如 Pod、Service、Deployment等。
  • 授权和认证: Kube-apiserver 管理集群中的用户和身份验证,确保只有经过授权的用户能够访问API。它支持多种认证方式,如基本身份验证、令牌、客户端证书等。
  • 资源管理: Kube-apiserver 处理对集群资源的请求,通过 API 请求来创建和管理资源,如Pod、ReplicaSet、Namespace 等。它确保资源的合理分配和正确状态。
  • 扩展性: Kube-apiserver 支持水平扩展,可以通过部署多个实例来平衡流量和提高可用性。多个 kube-apiserver实例可以通过负载均衡器来分担请求。
  • 版本控制: Kubernetes API 支持多个版本,允许不同版本的客户端与不同版本的服务器进行交互。Kube-apiserver管理这些不同的 API 版本,并确保向后兼容性。

etcd

etcd是一个一致性且高可用的键值存储数据库

etcd 的关键特性包括:

  • 数据存储: Kubernetes 集群中的所有数据,包括集群状态、配置信息、资源定义等,都存储在 etcd 中。这使得集群的状态和配置可以在整个集群中保持一致。
  • 一致性: etcd 使用 Raft 算法来确保数据的一致性和可用性。这意味着它可以在各个节点之间实现数据的同步和复制,从而避免数据丢失或不一致。
  • 高可用性: etcd 支持多节点部署,可以配置为高可用集群。这确保了即使某个节点出现故障,集群仍然可以继续正常运行。

由于 etcd 承载了 Kubernetes 集群的关键数据,确保定期备份 etcd 数据非常重要。在数据损坏、故障或其他紧急情况下,备份可以帮助恢复集群状态。

kube-scheduler

kube-scheduler 负责监视新创建且未指定运行节点(node)的 Pods,并根据一系列规则和策略,选择合适的节点来让 Pod 在上面运行。kube-scheduler 的目标是在集群中实现高效的资源利用、负载均衡和高可用性。

kube-scheduler 的关键特性包括:

  • 节点选择: 当用户创建一个新的 Pod 时,Pod 通常不会直接指定运行在哪个节点上。kube-scheduler 通过考虑各种因素,为每个 Pod 选择一个适合的节点。
  • 负载均衡: kube-scheduler 的目标之一是实现负载均衡。它会考虑节点的当前负载情况,避免将过多的 Pod 放置在某个节点上。

kube-controller-manager

kube-controller-manager 是 Kubernetes 控制平面中的一个重要组件,它负责运行多个控制器进程,这些控制器进程用于监视和管理集群的状态。尽管从逻辑上看,每个控制器都是一个独立的进程,但出于简化和管理方便的考虑,它们被编译到同一个可执行文件中,并在同一个进程中运行。

控制器的作用是确保集群的期望状态与实际状态一致。它们监视集群资源和事件,然后采取相应的操作来维护资源的状态。无论是故障恢复、自动伸缩、任务管理还是网络配置,控制器在 Kubernetes 中起着关键作用,使集群能够自动适应变化和需求。

Kubernetes 中有许多不同类型的控制器,每个控制器负责特定类型的任务和功能。以下是一些示例:

  • 节点控制器(Node Controller):负责在节点出现故障时进行通知和响应
  • 副本控制器(Replication Controller): 负责维护 Pod 副本数量的稳定性。如果副本数量不足或过多,副本控制器将自动进行扩容或缩减。
  • 任务控制器(Job Controller): 监测代表一次性任务的 Job 对象。当任务需要运行时,Job 控制器创建 Pods 来运行任务,确保任务完成后进行清理。
  • 端点分片控制器(EndpointSlice Controller): 填充 EndpointSlice 对象,以提供 Service 和 Pod 之间的连接。它与 Service 控制器一起确保网络流量正确路由到服务后端。
  • 服务账号控制器(ServiceAccount Controller): 为新的命名空间创建默认的服务账号。这有助于确保新命名空间中的应用程序可以使用适当的服务账号。

cloud-controller-manager(可选)

cloud-controller-manager这个组件是可选的,云控制器管理器的主要目标是将与特定云平台的交互逻辑从核心 Kubernetes 控制器中分离出来,使集群可以更轻松地连接到云提供商的 API,并根据需要与云平台进行交互。

kube-apiserver的重要性 ❗

Kubernetes 控制平面中的 kube-apiserver 与其他组件之间的关系非常密切,它被认为是控制平面的"前端",负责公开 Kubernetes API 并处理来自用户、应用程序和其他组件的请求。

它为什么这么重要?因为它:

  • 与用户和应用程序交互: kube-apiserver 是控制平面的入口点,允许用户和应用程序通过 API 请求与 Kubernetes 集群交互。它接收并处理创建、修改、删除资源(如 Pod、Service、Deployment 等)的请求。
  • 与其他控制平面组件交互: 其他控制平面组件,如 kube-controller-manager、kube-scheduler 和 cloud-controller-manager,也通过 kube-apiserver 进行交互。它们通过 API 请求查询和修改集群状态、配置和资源。
  • 与节点组件交互: 节点组件,如 Kubelet 和 Kube Proxy,也通过 kube-apiserver 与控制平面交互。例如,Kubelet 会定期向 kube-apiserver 报告节点状态和资源使用情况。

Node 组件

节点组件会在每个节点上运行,负责维护运行的 Pod 并提供 Kubernetes 运行环境。

kubelet

kubelet 会在集群中每个节点(node)上运行。它会监控 Pod 中的容器状态。如果容器失败或停止,kubelet 会尝试重新启动容器,保持 Pod 中所有容器的健康状态。它还会提供健康检查、资源管理和网络设置等功能。

kube-proxy

kube-proxy 是集群中每个节点(node)上所运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分。kube-proxy 维护节点上的一些网络规则, 这些网络规则会允许从集群内部或外部的网络会话与 Pod 进行网络通信。

容器运行时(Container Runtime)

节点的底层由一个叫做容器运行时的软件进行支撑,它负责比如启停容器这样的事情。最广为人知的容器运行时当属Docker,但它不是唯一的。事实上,我们使用K8s插件API:容器运行时接口(Container Runtime Interface, CRI)。例如 containerdCRI-Ocri-docker

感谢 💖

好啦,这次的分享就到这里,感谢大家看到这里🤞

参考🔎

Kubernetes官方文档

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

糟改押ong韵诗词,末三字改qiao ben zhong

题目给出诗词行的汉语拼音,糟改诗词押ong诗词行末三字“敲笨钟“。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》&#xff…

Spark大数据分析与实战笔记(第一章 Scala语言基础-2)

文章目录 章节概要1.2 Scala的基础语法1.2.1 声明值和变量1.2.2 数据类型1.2.3 算术和操作符重载1.2.4 控制结构语句1.2.5 方法和函数 章节概要 Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术&#xf…

基于Java+SpringBoot+Vue前后端分离相亲网站系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

基于Java+SpringBoot+Vue前后端分离智能无人仓库管理设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

10 - 网络通信优化之通信协议:如何优化RPC网络通信?

微服务框架中 SpringCloud 和 Dubbo 的使用最为广泛,行业内也一直存在着对两者的比较,很多技术人会为这两个框架哪个更好而争辩。 我记得我们部门在搭建微服务框架时,也在技术选型上纠结良久,还曾一度有过激烈的讨论。当前 Sprin…

如何让ESP8266恢复出厂设置

1,安装python,2.7或者更高版本 2,运行:get-pip.py 3,运行:pip install esptool 4,运行的指令:esptool.exe --port COM3 erase_flash, 如果报错 就改成这样的命令试试&am…

算法通过村第三关-数组白银笔记|数组双指针

文章目录 前言什么是数组双指针数组中删除元素专题原地移除所有等值val的元素快慢双指针对撞双指针对撞覆盖 删除有序数组中的重复项 总结 前言 提示:世间从不缺少辉煌的花冠,缺少的是被花冠渲染的淡定。 什么是数组双指针 这是一种长期总结下来的思想&…

基于Java+SpringBoot+Vue前后端分离在线考试与学习交流网页平台设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

象小朋友学识字一样建构战略

战略认知派: 就像小孩子学识字的过程一样【安志强趣讲268期】 趣讲大白话:提高认知中长大 **************************** 基于认知心理学 战略的形成是认知构建的过程 最找连战略这个词都不一定知道 慢慢有些概念 慢慢形成整体的认知 战略认知派分两个分支 第一分支…

VMware安装OpenEuler

VMware安装OpenEuler 需要考虑的因素: 安装系统的用途:桌面开发、服务器、Linux学习使用;磁盘分区规划:最小120G,划分 boot, swap, 根分区等网络:是否对外提供服务(NAT模式、桥接模式、仅主机…

ModaHub魔搭社区:WinPlan经营大脑数据采集

目录 WinPlan经营大脑数据采集介绍 WinPlan经营大脑数据采集模版 WinPlan经营大脑数据采集介绍 基于指标、维度来创建业务表单,通过业务表单的形式来采集实际数据,最终生成企业统一的经营数据库。由于需要客户创建数据采集模版(业务流程),然后可以基于各个业务模版作为…

WebSocket详解以及应用

😜作 者:是江迪呀✒️本文关键词:websocket、网络、长连接、前端☀️每日 一言:任何一个你不喜欢而又离不开的地方,任何一种你不喜欢而又无法摆脱的生活,都是监狱! 一、前言 我们在…

定州市社会保险待遇手机app-定州社会保障

社会保险的缴纳主要包括养老保险、医疗保险、生育保险,单位职工还有工伤保险和失业保险的缴纳,社会保险的缴纳一般都在当地人力资源和社会保障部门,在定州,社会保险登记的流程是怎样走的?下面由法律指南小编为大家解答…

改进YOLO系列:6.添加ECA注意力机制

添加ECA注意力机制 1. ECA注意力机制论文2. ECA注意力机制原理3. ECA注意力机制的配置3.1common.py配置3.2yolo.py配置3.3yaml文件配置1. ECA注意力机制论文 论文题目:ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 论文链接:ECA-N…

oracle 12c怎样修改varchar2允许的最大长度

12C单实例测试,varchar2在早期版本中最大长度限制为4000,当字段长度指定的比较长的时候会报错:ORA-00910: specified length too long for its datatype。 早期版本中虽然SQL数据类型限制为4000(如表中的列的varchar2类型&#x…

抖音web频道爬虫

抖音web频道爬虫代码&#xff1a; <?php header(Content-Type:application/json; charsetutf-8);//抖音频道爬虫class DouyinChannel{private $app_id 1;private $spider_code 1;private $channels [["channel_name" > "热点","url"…

Java实现自定义注解

前言 &#xff08;1&#xff09;Java实现自定义注解其实很简单&#xff0c;跟类定义差不多&#xff0c;只是属性的定义可能跟我们平时定义的属性略有不同&#xff0c;这里会给大家详解&#xff0c;先来看代码&#xff1a; Target(ElementType.FIELD) Retention(RetentionPoli…

iOS App的设计规范

iOS App 的设计规范是苹果公司为开发人员和设计师提供的一系列准则和建议&#xff0c;旨在确保应用在 iOS 设备上的外观、交互和用户体验保持一致。以下是一些常见的 iOS App 设计规范要点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包…

LEADTOOLS V22 for Python -Crack

LEAD Technologies Inc 是面向所有主要平台和编程语言的应用程序开发的人工智能 SDK 的领先提供商&#xff0c;很高兴地宣布在其最新的 LEADTOOLS 版本 22 更新中添加了完整的 Python 支持。 Python是一种动态的高级编程语言&#xff0c;广泛应用于科学计算、数据分析、人工智…

似懂非懂的 AspectJ

今天想和小伙伴们聊一下我们在使用 Spring AOP 时&#xff0c;一个非常常见的概念 AspectJ。 1. 关于代理 小伙伴们知道&#xff0c;Java 23 种设计模式中有一种模式叫做代理模式&#xff0c;这种代理我们可以将之称为静态代理&#xff0c;Spring AOP 我们常说是一种动态代理…