【K8S】K8S架构及相关组件

文章目录
- 1 K8S总体架构
- 2 相关组件
- 2.1 控制面板组件
- 2.2 节点组件
- 2.3 附加组件
- 写在最后
1 K8S总体架构
K8S,全称Kubernetes,是一个开源的容器部署和管理平台,由Google开发,后捐献给云原生计算基金会(CNCF)。K8S提供了容器编排、容器运行时、以容器为中心的基础设施编排、负载平衡、自我修复机制和服务发现等功能。K8S的架构采用主从设备模型(Master-Slave架构),即由Master节点负责集群的调度、管理和运维,Slave节点作为集群中的运算工作负载节点。

- 中央控制节点(Master Node): 位于集群的中心,包含API Server、Scheduler、Controller Manager和etcd等组件。这些组件协同工作,负责集群的管理、调度和状态监控。
- 工作节点(Worker Node): 围绕在Master Node周围,每个Node节点上运行Kubelet、Kube-Proxy和容器运行时等组件。这些节点负责执行Master节点分配的任务,运行和管理容器实例。
- Pod: Pod是Kubernetes中的最小调度单元,由一个或多个容器组成,这些容器共享存储和网络资源。Pod是Kubernetes生态系统中的核心管理单元。作为最小调度单元,分布在各个Node节点上,由容器组成,共享存储和网络资源。
- 服务(Service): 为Pod提供稳定的网络接入点,实现服务发现和负载均衡。
2 相关组件
K8S的控制面板组件(Master)是集群的核心部分,负责整个集群的管理和调度。这些组件协同工作,确保了Kubernetes集群的稳定运行和高效管理。而K8S的节点组件主要包括Node节点上的组件,这些组件负责在Node节点上运行容器化应用,并与管理节点(Master节点)进行通信。

2.1 控制面板组件
- etcd
● 功能:etcd是一个高度可靠的分布式键值存储,用于存储集群配置信息的持久化存储。etcd保存了Kubernetes集群的所有状态数据,如Pods、Services等资源的定义和状态。当数据发生变化时,etcd会快速地通知Kubernetes相关组件。
● 特点:etcd是一个独立的服务组件,并不隶属于Kubernetes集群。在生产环境中,etcd通常以集群方式运行,以确保服务的可用性。 - kube-apiserver
● 功能:kube-apiserver是Kubernetes集群的API服务器,是集群的前端服务器,提供了HTTP/HTTPS RESTful API,即Kubernetes API。所有的请求都需要经过这个接口进行通信。它负责接收、校验并响应所有的REST请求,并将结果状态持久化存储在etcd中。
● 认证与授权:kube-apiserver支持多种身份验证机制,如基于令牌、证书和用户名/密码的身份验证。同时,它还使用RBAC(Role-Based Access Control)机制来管理Kubernetes资源的授权。
● 架构:kube-apiserver的架构是一个多层的系统,由HTTP Server提供HTTP(S)服务。所有的API请求都通过HTTP(S)进行传输,并由kube-apiserver处理。 - kube-controller-manager
● 功能:kube-controller-manager是Kubernetes集群中的控制器管理器,负责管理集群中所有的控制器(controller)。这些控制器包括节点控制器(Node Controller)、副本控制器(Replication Controller)等。它们不断地监听集群状态变化,并根据期望状态和实际状态的差异来进行调谐。
● 架构:从逻辑上讲,每个控制器都是一个单独的进程,但为了降低复杂性,它们都被编译到同一个可执行文件,并在同一个进程中运行。 - cloud-controller-manager(可选)
● 功能:cloud-controller-manager用于管理与特定云平台相关的控制器。它的作用是将云平台的功能封装成Kubernetes的API,以便与其他组件进行交互。 - kube-scheduler
● 功能:kube-scheduler是Kubernetes集群的默认调度器,负责将新创建的Pod调度到合适的节点上。调度决策考虑的因素包括单个Pod及Pods集合的资源需求、软硬件及策略约束、亲和性及反亲和性规范、数据位置、工作负载间的干扰及最后时限等。
● 调度算法:kube-scheduler通过Predicate(预选)和Priority(优选)两种调度算法来选择最合适的节点。Predicate用于过滤掉不满足条件的节点,Priority用于在剩余节点中选择优先级最高的节点。
2.2 节点组件
- kubelet:在每个节点上运行的代理,负责管理该节点上的容器、Pod 和容器相关的资源。是节点与主节点通信的桥梁,执行主节点下发的指令。
- kube-proxy:网络代理,负责实现 Kubernetes 服务的网络抽象和负载均衡。它将对服务的访问转发到后端的一组 Pod 上。提供服务的网络访问能力,确保服务的可靠性和可扩展性。
- 容器运行时(Container Runtime):负责在节点上运行容器的运行时环境。Kubernetes 支持多种容器运行时,如 Docker、containerd、CRI-O 等。是容器化应用运行的基础,提供容器的创建、运行和管理能力。
2.3 附加组件
- kube-dns/coredns:DNS 服务,负责为 Pod 提供 DNS 解析服务,使得在集群内部可以使用域名来访问其他服务。
- Ingress Controller:负责将外部流量引入到集群内部的服务,并执行负载均衡、SSL 终止等功能。
- Monitoring and Logging:用于监控和日志记录集群中的应用程序和基础设施,如 Prometheus、EFK Stack 等。
- Cluster Autoscaler:自动扩展集群节点数量,根据负载情况自动增加或减少节点数量以满足需求。
- Horizontal Pod Autoscaler:自动扩展 Pod 的副本数量,根据 CPU 使用率或自定义指标调整 Pod 的数量。
写在最后
本文已被专栏 Kubernetes 收录,欢迎 点击订阅专栏
以上便是本文的全部内容啦!创作不易,如果你有任何问题,欢迎私信,感谢您的支持!

相关文章:
【K8S】K8S架构及相关组件
文章目录 1 K8S总体架构2 相关组件2.1 控制面板组件2.2 节点组件2.3 附加组件 写在最后 1 K8S总体架构 K8S,全称Kubernetes,是一个开源的容器部署和管理平台,由Google开发,后捐献给云原生计算基金会(CNCF)…...
【MATLAB第108期】基于MATLAB的fast、vbsa、dynia、eet、glue、pawn、rsa敏感性分析模型合集(无目标函数)【更新中】
【MATLAB第108期】基于MATLAB的fast、vbsa、dynia、eet、glue、pawn、rsa敏感性分析模型合集(无目标函数)【更新中】 一、FAST(Fourier Amplitude Sensitivity Test) FAST(Fourier Amplitude Sensitivity Test&#…...
【K8S】为什么需要Kubernetes?
文章目录 1 什么是Kubernetes?2 三种常见的应用部署方式2.1 传统部署2.2 虚拟化部署2.3 容器化部署 3 Kubernetes的特点写在最后 1 什么是Kubernetes? Kubernetes是 一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernet…...
【Linux】Linux中查找字符串中的命令
在Linux中,查找字符串的命令通常使用grep。grep是一个强大的工具,用于在文件中搜索指定模式的字符串。以下是一些基本用法: 1.在文件中查找字符串 grep "字符串" 文件名例如,查找文件example.txt中包含“hello”的行&…...
最新HTML设计搜索表单
设计搜索表单 页眉中包含表单,表单中只需包含label和Input. 实现如下效果:文本框动态变宽效果 代码:6.2.4.设计搜索表单.html <!DOCTYPE html> <html><head><meta charset"utf-8"><title></t…...
JavaScript constructor原型原型继承
constructor 在 JavaScript 中,构造函数是一种特殊的函数,使用 new 关键字来调用,用于创建对象实例。JavaScript 中的构造函数通常通过 function 关键字定义。 例如: function Person(name, age) {this.name name;this.age a…...
使用Python+moviepy保存截取视频画面
一、 使用VideoFileClip对象的的save_frame函数保存截取的第1帧画面 from moviepy.editor import * mvVideoFileClip(/home/Download/leaves.mp4) mv.save_frame(/home/Download/fst.jpg) # 默认保存截取的第1帧画面 二、 使用VideoFileClip对象的的save_frame函数保存截…...
【DOCKER】显示带UI的软件
1. Linux 1.1 宿主机开放X server权限 xhost 1.2 启动容器 docker run -it --rm --privilegedtrue --useru20 --workdir/home/u20 \ -e DISPLAYhost.docker.internal:0 u20:dev1.3 测试 # 安装测试软件 sudo apt-get -y install x11-apps# 显示测试程序 xclock2. Windows …...
Atcoder Beginner Contest 366
传送门 A - Election 2 时间限制:2秒 内存限制:1024MB 分数:100分 问题描述 在 AtCoder 市举行市长选举。候选人是 Takahashi 和 Aoki。 目前有 N 张有效选票投给了这两个候选人,并且计票正在进行中。这里࿰…...
【hexo博客问题】
windows下使用gitbash即可使用 其他bash会产生权限问题 npm install失败 $ npm install npm error code ENOENT npm error syscall open npm error path F:\pf_project\blog_pf\package.json npm error errno -4058 npm error enoent Could not read package.json: Error: E…...
用数组模拟栈和队列
栈 先进后出 //stk 表示定义的栈 //tt表示栈顶的下标 int stk[N], tt 0;//在栈顶上加入一个新的元素 stk[ tt] x;//弹出 tt --;//判断栈是否为空 if (tt > 0) 不为空 else empty//取出栈顶 stk[tt];1.题目 给定一个长度为 N 的整数数列,输出每个数左边第一个…...
Django内置后端和自定义后端
【图书介绍】《Django 5企业级Web应用开发实战(视频教学版)》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 5.2.3 内置…...
嵌入式人工智能(OpenCV-基于树莓派的人脸识别与入侵检测)
1、人脸识别 人脸识别是一种技术,通过检测、跟踪和识别人脸上的关键特征,以确认人脸的身份。它通常用于安保系统、身份验证、社交媒体和人机交互等领域。 人脸识别技术的基本原理是先通过图像处理和计算机视觉算法,提取人脸的特征点和特征描…...
如何选择适合的香港云服务器提供商?
稳定性和可靠性 确保提供商有高水平的服务器正常运行时间,并提供可靠的数据备份和恢复选项。 网络速度和延迟 选择能够提供快速和低延迟网络连接的服务商,尤其是对于目标用户位于中国大陆的企业而言。 客户支持 查看提供商是否提供24/7的客户支持&#x…...
安卓Android JAVA校招/实习面试合集:多线程、强软弱虚引用、进程、内存管理、Activity、Fragment......
本人今年(2023年)参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。 整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来&a…...
Jeecgboot 字典值自动转化:DictAspect类方法改造,支持IPage、List、Object、Map类自动转化,附有源码
改造的是DictAspect类: 原来使用的 parseDictText(Object result)方法,针对返回对象为Result 的IPage的分页列表数据进行动态字典注入,当单个对象查询,列表查询,或者多个数据放到Map中时,就不会自动转化&am…...
DVWA DOM Based Cross Site Scripting (DOM型 XSS)
DVWA DOM Based Cross Site Scripting (DOM型 XSS) 文章目录 DVWA DOM Based Cross Site Scripting (DOM型 XSS)XSS跨站原理DOM型 LowMediumHighImpossible XSS跨站原理 当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就…...
LinkedList集合及迭代器的源码分析
一.介绍: 二.LinkedList集合特有的API: 三.迭代器的源码分析: package com.itheima.a03myarraylist;import java.util.ArrayList; import java.util.Iterator;public class A01_ArrayListDemo1 {public static void main(String[] args) {ArrayList<String> listnew Arr…...
Go调度器
线程数过多,意味着操作系统会不断地切换线程,频繁的上下文切换就成了性能瓶颈.Go提供一种机制 可以在线程中自己实现调度,上下文切换更轻量,从而达到线程数少,而并发数并不少的效果,而线程中调度的就是Goroutine 调度器主要概念: 1.G:即Go协程,每个go关键字都会创建一个协程…...
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
1.问题 当node节点当node节点kubectl 命令无法连接到 Kubernetes API 服务器 [rootnode1 ~]# kubectl get nodes The connection to the server localhost:8080 was refused - did you specify the right host or port?2. 确认 kubeconfig 文件 确保节点上有有效的 kubeco…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
