Kubernetes 架构的两种节点

前言

Kubernetes 采用主从(master-node)架构模式,主要由主节点,也称 控制平面(Control Plane)和工作节点(node)组成。

master 节点职责:

  • ‌集群管理‌:负责整个集群的全局决策和状态管理
  • API服务‌:通过 kube-apiserver 提供集群的统一入口,处理所有操作请求
  • ‌调度决策‌:由 kube-scheduler 决定 Pod 应该运行在哪个节点上
  • ‌状态维护‌:通过控制器管理器(kube-controller-manager)确保集群实际状态与期望状态一致
  • ‌数据存储‌:使用 etcd 持久化存储集群的所有配置数据和状态信息

node 节点职责:

  • ‌容器运行‌:负责该节点的容器运行
  • ‌Pod生命周期管理‌:通过 kubelet 管理节点上 Pod 的创建、启动和停止
  • ‌网络代理‌:由 kube-proxy 维护节点网络规则,实现服务发现和负载均衡
  • ‌资源报告‌:向控制平面报告节点资源使用情况和容器状态
  • ‌容器运行时‌:通过 Docker/containerd 等运行时实际执行容器操作

master 节点

master 节点是 Kubernetes 集群的控制节点,运行着例如 kube-apiserver、kube-scheduler 等核心系统组件,为了避免用户 Pod 与系统组件竞争资源,导致集群不稳定,默认情况下,Master 节点不允许部署用户 Pod。

系统核心组件运行在kube-system命名空间下,如下是一个集群默认运行的系统组件:

> kubectl get po -n kube-system
NAME                           READY   STATUS    RESTARTS     AGE
coredns-6d58d46f65-26k5m       1/1     Running   0            18d
coredns-6d58d46f65-5dpbm       1/1     Running   0            18d
etcd-node                      1/1     Running   2            18d
kube-apiserver-node            1/1     Running   2            18d
kube-controller-manager-node   1/1     Running   2            18d
kube-proxy-lcc5j               1/1     Running   0            18d
kube-scheduler-node            1/1     Running   9 (8d ago)   18d
  • coredns Kubernetes 集群默认的 DNS 服务组件,用于提供基于 Service 名称的 DNS 解析服务,将 Service 名称解析为对应的 ClusterIP,支持Pod通过服务名而非硬编码IP访问其他服务等。
  • etcd 分布式键值数据库,用于持久化保存Kubernetes所有对象数据(Pod、Service等),集群配置信息和节点状态、网络配置和Secret等敏感数据。
  • kube-apiserver 整个集群的控制中枢,提供集群管理的REST API接口,处理所有资源对象(Pod、Service等)的增删改查操作。
  • kube-controller-manager 集群状态管理器,负责运行各种控制器(Controller)来确保集群状态与期望配置保持一致。例如我们期望运行三个Pod,控制器会负责创建 Pod 或 销毁多余的 Pod。
  • kube-proxy 集群的关键网络组件,运行在每个工作节点上,主要负责实现Service的网络代理和负载均衡功能。为Service提供稳定的虚拟IP(ClusterIP)作为访问入口,实现4层(TCP/UDP)负载均衡等。
  • kube-scheduler 集群的核心调度组件,负责将新创建的Pod分配到合适的节点上运行。通过 API Server 监听获取未调度的Pod信息,再根据调度策略为Pod选择最优节点。

node 节点

node 节点是 Kubernetes 集群中实际运行工作负载的节点,负责执行由 master 节点分配的任务。集群中的每个 node 节点都必须具备容器的Runtime(运行时),比如 Docker 或其他遵循 CRI 标准的 Runtime 等。

node 节点主要处理以下任务:

  • 部署 Pod
  • 为容器提供计算、存储和网络资源
  • 定期向 Master 节点汇报自身状态(资源使用情况、Pod运行状态等)
  • 监控容器健康状况并自动重启故障容器

node 节点的核心组件:

  • kubelet‌ Kubelet 作为守护进程运行在 Worker 节点上,负责与Master通信协作,管理该节点上的Pod,对容器进行健康检查及监控,同时负责上报节点和节点上面Pod的状态。
  • kube-proxy 负责实现Service的网络代理和负载均衡功能。为Service提供稳定的虚拟IP(ClusterIP)作为访问入口,实现4层(TCP/UDP)负载均衡等。
  • CRI 容器运行时,负责对容器的管理维护

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

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

相关文章

数据迷雾中的灯塔:奥威BI+AI数据分析如何照亮企业决策之路

决策进化史:从“盲人摸象”到“智能导航” 在每天83%的中国企业所面临的决策场景中,数据往往沉默不语,无法为管理者提供明确的指引。从决策依赖人工统计的“石器时代”(2010年前),到依赖静态报表的“铁器时…

Flutter 与 原生(Android/iOS)通信 Platform Channel

在Flutter中,Platform Channel是实现Flutter与原生平台(Android/iOS)通信的核心机制,其设计遵循轻量级异步通信原则,用于解决Flutter跨平台开发时与原生功能的交互需求。 一、核心作用 Flutter作为跨平台框架&#x…

django调用 paramiko powershell 获取cpu 个数

在Django中调用paramiko库执行PowerShell命令来获取CPU个数,可以通过以下步骤实现: 步骤1:安装paramiko 首先,确保你的Django项目中已经安装了paramiko库。如果尚未安装,可以通过pip安装: pip install pa…

React 表单太卡?也许你用错了控制方式

🎙 欢迎来到《前端达人 播客书单》第 23 期。 视频版(播客风格更精彩) 今天我们聚焦一个「写前端永远逃不掉」的主题:表单处理。 你有没有遇到过这些问题: 表单怎么一改就卡?state 是不是用错了&#xff1…

`customRef` 在实战中的使用:防抖、计算属性缓存和异步数据获取

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

腾讯混元3D制作角色模型的教程-3

腾讯混元3D中实现角色骨骼绑定与动画生成的详细操作指南,结合官方功能说明及实操要点整理: ⚙️ 一、前期准备:模型要求 角色姿态规范 仅支持标准T-pose(大字型站立) 的全身人物模型(如卡通角色)。 非标准姿态或非人形模型(如动物、道具)暂不支持自动绑骨。 模型来源…

React 和 Vue 项目中集成基于 Svelte 的 `Bytemd` 库 || @bytemd/react` 底层实现原理

Bytemd 并使用Svelte 框架编写的。Svelte 是一种不同的前端框架,它的核心思想是在编译时将组件代码转换成高效、原生 JavaScript,从而避免运行时虚拟 DOM 的开销。 理解了这一点,我们就可以深入探讨如何在 React 和 Vue 项目中适配 Svelte 编…

【新品解读】高性能紧凑型 RFSoC FPGA 开发平台 AXW22,重塑射频开发体验

如果您正在烦恼如何在有限的物理空间和预算内,依然实现卓越的射频带宽与处理能力,ALINX 基于 AMD RFSoC FPGA 开发板 AXW22 正是为您准备的。 (AMD Zynq UltraScale RFSoC FPGA 射频开发平台 AXW22) 和所有 RFSoC 平台一样&#…

Spring @ModelAttribute注解全解析:数据绑定与模型管理

Spring 的 @ModelAttribute 注解主要用于数据绑定和模型属性管理,支持方法级别和参数级别的应用,以下是其核心特性和使用场景: 🔧 一、核心功能 数据绑定 将 HTTP 请求参数(如表单字段、查询参数)自动绑定到 Java 对象。支持从请求参数、URI 路径变量、请求头等多来源获…

[project-based-learning] 开源贡献指南 | 自动化链接验证 | Issue模板规范

第四章:贡献指南 欢迎回来!在上一章《项目分类体系》中,我们探讨了README.md文件如何通过编程语言和子类别组织教程,从而提升检索效率。 现在已了解教程列表的构成(《教程列表》)、条目编写规范&#xff…

OSCP备战-LordOfTheRoot靶机复现步骤

PDF下载: Target-practice/Range at main szjr123/Target-practice 一、靶机描述 靶机地址:https://www.vulnhub.com/entry/lord-of-the-root-101,129/ 靶机难度:中等(CTF) 靶机描述:这是KoocSec为黑…

苹果或140亿美元收购Perplexity,AI搜索格局面临重构

据多家媒体报道,苹果内部高管近期就竞购AI初创公司Perplexity的可能性举行了初步会谈。若交易最终达成,可能将以接近140亿美元的估值完成,成为苹果历史上最大规模的收购案12。尽管讨论仍处于早期阶段,且苹果尚未与Perplexity管理层…

屠龙刀策略

该策略是一个针对金融市场的自动化交易策略,主要用于日内交易,特别关注于在中国金融期货市场(如沪深300指数期货(IF))的日间交易时段(09:20至15:15)进行操作。下面是该策略核心部分的代码注解解析: 参数定义 - `Nnn1(5)` 和 `Nnn2(20)`:策略中的两个参数,用于内部计…

【本机已实现】使用Mac部署Triton服务,使用perf_analyzer、model_analyzer

我们的目标是星辰大海 硬件配置:Apple M224 GB Tirtion实现过程 1️⃣Docker安装 Tirtion的实现,首先要确保系统上的Docker可用 使用默认源会导致拉取失败,因为墙 Error response from daemon: Get "https://registry-1.docker.io/v2…

idea依赖下载慢解决

setttings.xml <mirrors><mirror><id>aliyunmaven</id><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url><mirrorOf>*</mirrorOf> <!-- 匹配所有仓库请求 --></mirr…

C# WPF常用调试工具汇总

除了Live Visual Tree、Live Property Explorer和Snoop外&#xff0c;WPF开发还有多种强大的调试工具。以下是完整的工具集合及其详细使用方法&#xff1a; 1. WPF Performance Suite (WPF性能分析套件) 简介 微软官方提供的专业WPF性能分析工具&#xff0c;包含多个组件用于诊…

《Vuejs设计与实现》第 11 章(快速 diff 算法

目录 11.1 相同的前置元素和后置元素 11.2 判断是否需要进行 DOM 移动操作 11.3 如何移动元素 11.4 总结 我们将探讨第三种用于比较新旧子节点集合的方法&#xff1a;快速Diff算法。 这种算法的速度非常快&#xff0c;最早应用于 ivi 和 inferno 框架&#xff0c;DOM 操作方…

JavaScript 存储对象 sessionStorage (会话存储) 和 localStorage(本地存储)

深入理解 localStorage localStorage 是浏览器提供的一种客户端存储机制&#xff0c;用于在用户浏览器中存储键值对数据。与 cookie 相比&#xff0c;它提供了更大的存储容量&#xff08;通常为 5-10MB&#xff09;&#xff0c;并且不会随 HTTP 请求发送到服务器&#xff0c;因…

Z-Ant开源程序是简化了微处理器上神经网络的部署和优化

​一、软件介绍 文末提供程序和源码下载 Z-Ant &#xff08;Zig-Ant&#xff09; 是一个全面的开源神经网络框架&#xff0c;专门用于在微控制器和边缘设备上部署优化的 AI 模型。Z-Ant 使用 Zig 构建&#xff0c;为资源受限的硬件上的模型优化、代码生成和实时推理提供端到端…

Linux系统---Nginx配置nginx状态统计

配置Nignx状态统计 1、下载vts模块 https://github.com/vozlt/nginx-module-vts [rootclient ~]# nginx -s stop [rootclient ~]# ls anaconda-ks.cfg nginx-1.27.3 ceph-release-1-1.el7.noarch.rpm nginx-1.27.3.tar.gz info.sh …