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

K8S概念及其常见组件和整体架构

1.概念

  • 什么是Kubernetes

    • 官网:Kubernetes 文档 | Kubernetes

    • K8S的本质是一组服务器集群,可以在对应服务器集群的每个节点上运行程序,来对节点中的容器进行管理

    • 类似Master-Work方式,每个服务器上安装特定的K8S组件,就可以形成集群,然后部署对应的应用即可

  • K8S常见的功能

    • 服务发现和负载均衡
      • Kubernetes可以使用DNS名称或自己的IP地址来暴露容器
      • 如果进入容器的流量很大,Kubernetes能够自动实现请求的负载均衡分配网络流量,从而使部署稳定
    • 存储编排
      • Kubernetes允许自动挂载选择的存储系统,例如本地存储、云提供商存储等
    • 自动部署和回滚
      • 可以用K8S自动化部署创建新容器,删除现有容器并将它们的所有资源用于新容器
      • 当版本发布错误,可以立刻回退到之前的版本
    • 自我修复
      • 如果某个容器宕机了,K8S可以快速重新启动新的容器,替换旧的容器
    • 密钥与配置管理
      • K8S允许存储和管理敏感信息,例如密码、OAuth令牌和ssh密钥

2.K8S常见概念组件

  • K8S整体架构,也是Client-Server模型

    • 控制节点Master-Node,负责集群的管理
    • 工作节点Worker-Node,负责为集群提供运行环境
  • K8S常见概念

    • Master

      • 集群控制节点(相当于整个集群的指挥中心),在每个Kubernetes集群里都需要一个Master来负责整个集群的管理和控制
    • Node

      • 除了Master,K8S集群中的其他机器被称为Node节点,Node节点才是Kubernetes集群中的工作负载节点
      • 每个Node节点都会被Master分配一些工作负载(docker容器),Node节点上的docker负责容器的运行
    • Pod

      • Pod是一组容器,在K8S中最小的单位是Pod,一个Pod可以包含多个容器,但通常情况下我们在每个Pod中仅使用一个容器
      • 可以理解成豌豆荚,Pod内的每个容器是一颗颗豌豆
      • 分类
        • 自主创建:直接创建出来的Pod,这种Pod删除后就没有了,也不会自动重建
        • 控制器创建:通过控制器创建的Pod,这类Pod删除了之后还会自动重建
    • Pod Controller

      • 控制器是管理Pod的中间层,只需要告诉Pod控制器,想要创建多少个什么样的Pod,它会创建出满足条件的Pod并确保每一个Pod资源处于用户期望的目标状态。如果Pod在运行中出现故障,它会基于指定策略重新编排Pod
      • 通过它来实现对Pod的管理,比如启动Pod、停止Pod、扩展Pod的数量等等
      • 类型
        • ReplicaSet、Deployment、Horizontal Pod Autoscaler、DaemonSet等
    • Service

      • 在K8S里面,每个Pod都会被分配一个单独的IP地址,但这个IP地址会随着Pod的销毁而消失
      • Service(服务)就是用来解决这个问题的,对外服务的统一入口,用于为一组提供服务的Pod抽象一个稳定的网络访问地址
      • 一个Service可以看作一组提供相同服务的Pod的对外访问接口,作用于哪些Pod是通过标签选择器来定义的
    • Label

      • K8S提供了一种机制来为Pod进行分类,那就是Label(标签),同一类Pod会拥有相同的标签
      • Label的具体形式是key-value的标记对,可以在创建资源的时候设置,也可以在后期添加和修改
      • 给某个资源对象定义一个Label,就相当于给它打了一个标签,可以通过Label Selector(标签选择器)查询和筛选拥有哪些Label的资源对象,K8S通过这种方式实现了类似SQL的对象查询机制
    • Label选择器

      • 对应的资源打上标签后,可以使用标签选择器过滤指定的标签
      • 标签选择器目前有两个
        • 基于等值关系:等于、不等于
        • 基于集合关系:属于、不属于、存在
    • NameSpace

      • 可以在一个物理集群上运行多个虚拟集群,这种虚拟集群被称为命名空间,用来隔离Pod的运行环境
      • 同一个命名空间中的资源名称必须唯一
      • NameSpace是不能嵌套的,每一个Kubernetes的资源都只能在一个NameSpace内
      • 命名空间是在多个用户之间划分集群资源的一种方法(通过资源配额)
      • 不必使用多个命名空间来分隔轻微不同的资源,例如同一软件的不同版本,应该使用标签来区分
      • Kubernetes会创建四个初始NameSpace命名空间
        • default:没有指明使用其它命名空间的对象所使用的默认命名空间
        • kube-system Kubernetes:系统创建对象所使用的命名空间
        • kube-public:是自动创建的,命名空间下的资源可以被所有人访问(包括未认证用户)
        • kube-node-lease:集群节点之间的心跳维护
  • 应用分类

    • 有状态应用
      • 不能简单的实现负载均衡的服务,有数据产生的服务,redis、mysql、rabbitMQ等
      • 相关服务需通过一些较复杂的配置才能做到负载均衡
      • 有状态的应用,建议直接在物理机部署,方便维护管理
    • 无状态应用
      • 没有对应业务数据的应用,可以简单的实现负载均衡,复制一个节点即可快速扩容,如SpringCloud中的业务服务
      • 无状态的应用适合部署在K8S中或者容器中

3.K8S整体架构

  • K8S整体架构,也是Client-Server模型

    • 控制节点Master-Node,负责集群的管理
      • apiserver:提供操作K8S集群资源的唯一入口,restful方式请求,并提供认证、授权、访问控制、API注册和发现等
      • scheduler:负责资源调度,按照预定的调度策略,计算将Pod调度到相应的Node节点进行应用部署
      • controller-manager:控制器管理中心,负责维护集群的状态,比如故障检测、滚动更新等,根据调度器的安排通知对应的节点创建Pod
      • etcd:存储中心,是兼具一致性和高可用性的键值数据库,可以作为保存Kubernetes所有集群数据的后台数据库
    • 工作节点Worker-Node,负责为集群提供运行环境
      • Node是Pod真正运行的主机,可以是物理机也可以是虚拟机,Node本质上不是K8S创建的,K8S只是管理Node上的资源,为了管理Pod,每个Node节点上至少需要运行container runtime(Docker)、kubelet和kube-proxy服务
      • kubelet:相当于主节点派到工作节点的一个代表,用于管理本机容器(相当于master节点的化身),负责维护容器的生命周期,也负责Volume(CVI)和网络(CNI)的管理
      • kube-proxy:负责为Service提供cluster内部的服务发现/网络代理/负载均衡等操作,为部署的应用程序提供访问入口,和apiserver是不一样的,后者是操作K8S集群内部
  • 架构图

    在这里插入图片描述

相关文章:

K8S概念及其常见组件和整体架构

1.概念 什么是Kubernetes 官网:Kubernetes 文档 | Kubernetes K8S的本质是一组服务器集群,可以在对应服务器集群的每个节点上运行程序,来对节点中的容器进行管理 类似Master-Work方式,每个服务器上安装特定的K8S组件&#xff0c…...

LabVIEW继电器视觉检测系统

随着制造业的自动化与高精度要求不断提升,传统的人工检测方法逐渐难以满足高效和高精度的需求。特别是在航空航天、医疗设备等高端领域,密封继电器推动杆部件的质量直接影响到设备的性能与可靠性。LabVIEW自动化视觉检测系统,能对推动杆部件进…...

linux操作系统进程

linux操作系统是对下的软硬件进行管理,为了能够对上提供稳定,快速,安全的服务而诞生的软件。 广义上的操作系统是包含搭载在操作系统上的软件和函数库等文件的。 狭义上的操作系统就是操作系统内核,进行进程管理,文件…...

jeecgbootvue2菜单路由配置静态文件夹(public)下的html

需求:想要在菜单配置src/assets/iconfont/chart.html显示页面(目的是打包上线以后运维依然可以修改数据) 官网没有相关数据:菜单配置说明 JeecgBoot 开发文档 看云 问题现象: 我把文件放在src/assets/iconfont/chart.html然后在vue中作为 iframe 的 src 属性&am…...

PHP反序列化原生类字符串逃逸框架反序列化利用

PHP反序列化 概念 序列化的原因:为了解决开发中数据传输和数据解析的一个情况(类似于要发送一个椅子快递,不可能整个椅子打包发送,这是非常不方便的,所以就要对椅子进行序列化处理,让椅子分成很多部分在一起打包发送…...

6.1、属性动画

使用显式动画产生布局更新动画 1.旋转动画 只修改对应的属性 rotate({angle: this.angle}) 即可达到效果 动画效果 对应实现代码 @Entry @Component struct AnimationPage {@State angle:number = 0aboutToAppear() {...

v-model还可以作用于其他表单元素的使用

1、文本输入框 直接双向绑定输入的元素值 初始化默认值为空字符串 2、复选按钮 直接双向绑定输入的元素值 初始化默认值为flase,不选中 3、单选按钮, 1.使用name分组,产生互斥效果。 2.使用value存值, 3再用v-model双向绑定…...

最短路的求解

实验类型:◆验证性实验 ◇综合性实验 ◇设计性实验 实验目的:学会使用Matlab求解最短路。 实验内容:1.熟练运用Floyd算法;2. 熟练运用Dijkstra算法;3.利用Matlab编程实现最短路的计算。 例1:已知无向图…...

四:java 基础知识(4)-- 异常 字符串

目录 1. 异常处理 1.1 什么是异常 1.2 异常的类型 1.2.1 检查异常 1.2.2 运行时异常 1.3 异常的捕获与处理 1.3.1 try-catch 语句 1.3.2 finally 块 1.3.3 throw 和 throws 关键字 1.4 自定义异常 1.5 异常的最佳实践 2. 字符串 2.1 String 类的概述 2.2 字符串的…...

Uniapp 实现app自动检测更新/自动更新功能

实现步骤 配置 manifest.json 在 manifest.json 中设置应用的基本信息,包括 versionName 和 versionCode。 一般默认0.0.1,1. 服务器端接口开发 提供一个 API 接口,返回应用的最新版本信息,版本号、下载链接。客户端检测更新 使…...

7.0、RIP

RIP (Routing Information Protocol) 简介 RIP是由Xerox在20世纪70年代开发的,最初定义在RFC1058中。RIP用两种数据包传输更新:更新和请求,每个有RIP功能的路由器在默认情况下,每隔30s利用UDP520端口向与它直连的网络邻居广播(RIP1)或组播(R…...

C#与C++结构体的交互

C#在和C进行交互时,有时候会需要传递结构体。 做一些总结,避免大家在用的时候踩坑。 一般情况 例如我们在C里定义了一个struct_basic结构体 1 struct struct_basic 2 { 3 WORD value_1; 4 LONG value_2; 5 DWORD value_3; 6 UINT v…...

sql纵表转横表

项目上有一个需求(例子): 用户表 user{ id, name, workCode } id name workCode 1 张三 WC1001 2 李四 WC1002 工作信息表 work{ id, name, workCode, workTimeSun } id name …...

数据采集-Kepware OPCUA 服务器实现

KepserverEX OPC UA server设置 系列文章目录 数据采集-Kepware 安装证书异常处理 目录 KepserverEX OPC UA server设置系列文章目录一、OPC UA(OPC Unified Architecture)二、防火墙的配置三、配置KepserverEX的OPC UA3.1 启用远程连接3.2 启动OPCUA服务器接口 四、管理OPCU…...

初识计算机网络

🌎初识计算机网络 文章目录: 初识计算机网络 计算机网络背景 网络协议       初识协议       制定协议标准的组织或公司       OSI七层模型       操作系统和计算机网络关系       再谈协议 网络传输的基本流程     …...

Oracle 第11章:异常处理

在 Oracle PL/SQL 中,异常处理是一个重要的概念,它用于管理程序执行过程中可能发生的错误或特殊情况。异常可以是系统预定义的,也可以是由用户自定义的。 异常类型与处理机制 PL/SQL 提供了两种类型的异常: 预定义异常&#xf…...

导航栏渐变色iOS

- (void)viewDidLoad {[super viewDidLoad];// 设置导航栏属性self.navigationBar.translucent NO;[self.navigationBar setTitleTextAttributes:{NSForegroundColorAttributeName : [UIColor whiteColor], NSFontAttributeName:[UIFont boldSystemFontOfSize:28]}];// 修复iO…...

mysql读写分离

一、proxysql实现mysql读写分离 二、mycat...

计算机的错误计算(一百四十二)

摘要 本节探讨 MATLAB中 附近数的正弦函数的计算精度问题。 例1. 已知 计算 与 直接贴图吧: 另外, 16位的正确值分别为 -0.3077518861551721e-8 与 0.4106402475009074e-3(ISRealsoft 提供)。 容易看出,MATLAB的…...

利用大模型辅助科研论文写作·第一期|论文写作·24-11-02

小罗碎碎念 从这期推文开始,开一个新的系列——如何利用大语言模型辅助论文写作。 我目前的推文主要都集中于分享已经发表的论文,前期背景积累到一定程度以后,我们要动手做实验然后写自己的论文。如果从头到尾,全都自己写&#xf…...

JavaScript。—关于语法基础的理解—

一、程序控制语句 JavaScript 提供了 if 、if else 和 switch 3种条件语句&#xff0c;条件语句也可以嵌套。 &#xff08;一&#xff09;、条件语句 1、单向判断 &#xff1a; if... &#xff08;1&#xff09;概述 < if >元素用于在判断该语句是否满足特定条…...

Tomcat 11 下载/安装 与基本使用

为什么要使用Tomcat&#xff1f; 使用Apache Tomcat的原因有很多&#xff0c;以下是一些主要的优点和特点&#xff1a; 1. 开源与免费 Tomcat是一个完全开源的项目&#xff0c;任何人都可以免费使用。它由Apache软件基金会维护&#xff0c;拥有一个活跃的社区&#xff0c;这…...

Linux系统时间服务——Chrony服务器

文章目录 Linux系统时间服务——Chrony服务器前言时间同步的重要性Linux系统的两种时钟系统时钟&#xff08;System Clock&#xff09;相关命令硬件时钟 (RTC - Real Time Clock)相关命令 Chrony介绍NTP Chronyc相关命令服务管理相关命令chronyc 基本命令时间校正和控制命令NTP…...

C# 接口(Interface)

C# 接口&#xff08;Interface&#xff09; 接口在C#中是一种非常重要的概念&#xff0c;它定义了一个约定&#xff0c;实现该接口的类必须遵循这个约定。接口可以包含方法、属性、事件和索引器&#xff0c;但不包含实现。这使得接口成为定义抽象行为的理想选择。在本文中&…...

《高频电子线路》—— 电容三端LC振荡器

文章内容来源于【中国大学MOOC 华中科技大学通信&#xff08;高频&#xff09;电子线路精品公开课】&#xff0c;此篇文章仅作为笔记分享。 电容三端LC振荡器 基本原理&#xff08;考毕兹电路&#xff09; 反馈电压从C2上取得&#xff0c;作为输入电压&#xff0c;形成正反馈&a…...

leetcode35.搜索插入位置

1&#xff09;题目描述&#xff1a; 2&#xff09;本题要求使用 时间复杂度O(log n)的算法&#xff0c;这里使用二分查找的方法&#xff0c;这道题本身不复杂&#xff0c;但是&#xff0c;在使用递归调用时&#xff0c;笔者经常把递归结束的边界搞错&#xff0c;这里给出几版代…...

Redis全系列学习基础篇之位图(bitmap)常用命令的解析

文章目录 描述常用命令及解析常用命令解析 应用场景统计不确定时间周期内用户登录情况思路分析实现 统计某一特定时间内活跃用户(登录一次即算活跃)的数量思路分析与实现 描述 bitmap是redis封装的用于针对位(bit)的操作,其特点是计算效率高&#xff0c;占用空间少,常被用来统计…...

Copilot功能

Copilot 1、简介&#xff1a;Copilot是由GitHub与OpenAI共同开发的一款AI编程助手&#xff0c;旨在帮助开发者提高工作效率&#xff0c;改善代码质量。 2、主要功能包括&#xff1a; 1.代码补全&#xff1a;Copilot可以在开发者编写代码时提供代码建议&#xff0c;包括函数、循…...

《GBDT 算法的原理推导》 11-13初始化模型 公式解析

本文是将文章《GBDT 算法的原理推导》中的公式单独拿出来做一个详细的解析&#xff0c;便于初学者更好的理解。 公式(11-13)是GBDT算法的第一步&#xff0c;它描述了如何初始化模型。公式如下&#xff1a; f 0 ( x ) arg ⁡ min ⁡ c ∑ i 1 N L ( y i , c ) f_0(x) \arg \m…...

# Easysearch 与 LLM 融合打造高效智能问答系统

LangChain通过提供统一的抽象层和丰富的工具&#xff0c;极大地简化了LLM应用程序的开发过程&#xff0c;使得开发者能够更加专注于业务逻辑。RAG技术则通过索引和检索生成两步流程&#xff0c;利用最新数据或私有数据作为背景信息来增强大模型的推理能力。然而&#xff0c;对于…...