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

K8S

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

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

图片

K8S通过管理容器的生命周期,确保系统在大规模的生产环境中,可以高效稳定地运行。

K8S组件

k8s采用主从架构,其中集群中的所有节点都由控制平面管理、和调度。

如下图所示:

图片

K8S组件,主要会包含两大最核心的组件:控制平面(Control Plane)、工作节点(Worker Nodes)。

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

工作节点(Worker Nodes):运行实际的应用容器,负责:容器的运行、和管理。

如果你想掌握好K8s,最核心的就是掌握好:控制平面(Control Plane)和工作节点(Worker Nodes)。

下面,我就分别详解:控制平面(Control Plane)和工作节点(Worker Nodes)@mikechen

控制平面组件

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

它由以下组件组成,重点关注下图的“黄色框”:

图片

“黄色框”会涉及到如下组件:API Server、Scheduler、Controller...等核心组件。

API Server

API Server:它是集群的入口,类似微服务网关这样,所有操作必须通过 API Server。

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

Controller Manager

Controller Manager :是集群管理中的重要组件,它负责确保集群的实际状态与期望状态的一致性。

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

如下图所示:

图片

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

常见的控制器包括:

  • Deployment Controller:管理无状态应用的部署,包括“处理副本的创建、更新和滚动升级;
  • StatefulSet Controller:管理有状态应用的部署,适合需要持久化存储、和有序部署的应用(如:数据库);
  • ReplicaSet Controller:确保指定数量的 Pod 副本始终运行,用于确保 Pod 副本数目符合期望;
  • Job Controller:Job 可以创建多个 Pod,并在成功完成任务后终止 Pod;
  • CronJob Controller:类似于 Linux 的 Cron 任务,它会在指定的时间间隔内创建 Job 实例;
  • DaemonSet Controller:确保每个节点上都有一个 Pod 实例,适合需要在每个节点上运行的服务,如:日志收集器、监控代理...等;
  • Namespace Controller:管理命名空间的生命周期,包括:创建/和删除命名空间,以及相关资源的清理。

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

Scheduler

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

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

并且,通过调度策略,比如:公平调度、优先级...等,确保资源的合理分配和高效利用。

etcd

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

etcd,重点保证数据的一致性、和持久性。

以及,提供集群状态的快速读取、和修改能力。

工作节点的组件

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

每个工作节点,包含以下“绿色框”所示组件:

图片

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

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

Kubelet

每个节点上的代理,负责确保 Pod 正常运行。

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

如下图所示:

图片

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

它们可以包含一个、或多个容器,这些容器共享:网络、存储资源,并在同一个环境中运行。

当创建一个 Pod 时,K8S调度器,会将 Pod 调度到合适的工作节点上。

调度器根据资源需求、节点的负载、和调度策略来选择节点。

一旦 Pod 被调度到节点上,kubelet 在节点上启动并运行 Pod 中的容器。

Kube-proxy

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

比如:使用 iptables 、或 ipvs 维护网络规则,将流量转发到相应的 Pods。

容器运行时

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

主要复制:拉取容器镜像,创建、和运行容器。

以及,提供容器的生命周期管理,如:启动、停止和监控容器...等等。

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

K8S组件详解的更多相关文章

  1. Android中Intent组件详解

    Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件.Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙 ...

  2. Android笔记——四大组件详解与总结

     android四大组件分别为activity.service.content provider.broadcast receiver. ------------------------------- ...

  3. vue.js基础知识篇(6):组件详解

    第11章:组件详解 组件是Vue.js最推崇也最强大的功能之一,核心目标是可重用性. 我们把组件代码按照template.style.script的拆分方式,放置到对应的.vue文件中. 1.注册 V ...

  4. Echars 6大公共组件详解

    Echars 六大组件详解 : title  tooltip toolbox legend  dataZoom visualMap 一.title标题详解 myTitleStyle = { color ...

  5. Angular6 学习笔记——组件详解之组件通讯

    angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...

  6. Angular6 学习笔记——组件详解之模板语法

    angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...

  7. admin组件详解

    admin组件详解 先根据admin组件启动流程复习下django项目启动至请求过来发生的事 1将admin组件注册进app 2django项目启动 3在运行到定制的admin时执行其下面的apps文 ...

  8. OpenStack各组件详解和通信流程

    一.openstack由来 openstack最早由美国国家航空航天局NASA研发的Nova和Rackspace研发的swift组成.后来以apache许可证授权,旨在为公共及私有云平台建设.open ...

  9. Tomcat系列之服务器的安装与配置以及各组件详解

    Tomcat系列之服务器的安装与配置以及各组件详解 大纲 一.前言 二.安装与配置Tomcat 三.Tomcat 目录的结构 四.Tomcat 配置文件 注,本文的测试的操作系统为CentOS 6.4 ...

  10. Logstash组件详解(input、codec、filter、output)

    logstash组件详解 logstash的概念及特点. 概念:logstash是一个数据采集.加工处理以及传输(输出)的工具. 特点: - 所有类型的数据集中处理 - 不同模式和格式数据的正常化 - ...

随机推荐

  1. 2053C - Bewitching Stargazer

    简化题意 一个$ 1至n \(的区间,如果其长度是奇数,\)ans \(+=\) mid\(,再分为两个区间\)l\(~\)mid-1\(和\)mid+1\(~\)r\(,否则分为\)l\(~\)mi ...

  2. Dotnetbar自定义DateTimeInput(时间)控件的显示格式,使其同时显示日期和时间

    DateTimeInput控件已有的几种格式可以在Format属性中选择: 但这几种格式仍无法满足我的要求怎么办? 例如想将显示格式定为类似这样的格式:2010-06-11 20:02:52,两步搞定 ...

  3. 即时通讯技术文集(第27期):实时音视频技术合集(Part2) [共17篇]

    ​为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第27 期. [- 1 -] 专访微信视频技术负责人:微信实时视频聊天技术的演进 [链接] h ...

  4. HUAWEI MindStudio安装配置

    HUAWEI MindStudio安装配置 官网: 链接 安装流程 获取软件包 软件包 说明 获取链接 MindStudio_{version}_linux.tar.gz MindStudio软件包, ...

  5. 【BUG排查记】HttpUtil和SpringSecurity结合的坑

    一.背景 最近为了做微服务高可用和优化上线流程,我参与了一个微服务的改造开发. 主要包括redis切换哨兵模式.接入高可用xxljob集群.配置和升级脚本优化. 二.问题描述   项目改造提测后,测试 ...

  6. 把.netcore console 安装到Windows 系统服务。

    用个工具:NSSM 下载:最新的那个pre版本 http://www.nssm.cc/download 测试.netcore 的一个控制台程序(Console),仅仅用来定时写入一些日志, 代码如下: ...

  7. 一致性hash和普通hash和hash槽

    普通hash Hash函数:一般翻译做散列.杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值.碰撞(冲突):如果两个关键字通过 ...

  8. 如何快速的开发一个完整的iOS直播app(推流篇)

    开发一款直播app,肯定需要流媒体服务器,本篇主要讲解直播中流媒体服务器搭建,并且讲解了如何利用FFMPEG编码和推流,并且介绍了FFMPEG常见命令. 效果 一.安装Homebrew Homebre ...

  9. 芯片半导体基础(二) :20世纪最伟大的发明,PN结与晶体二极管

    liwen01 2025.01.12 前言 PN结 是晶体管的基础,它使得晶体管能够作为一个放大或是开关元器件.晶体管的发明不仅是一个技术上的突破,也标志着电子学的一个新时代.它极大地推动了科技和社会 ...

  10. 用DeepSeek写程序之一:编写在linux终端窗口右上角动态显示时间的c++程序

    一. 简单需求 早前有个需求当SSH进入linux时,希望在终端窗口动太显示当前的时间,原来是用脚本解决的 while sleep 1;do tput sc;tput cup 0 $(($(tput ...