K8S基础概念

news/2024/5/19 4:02:39

 一、MASTER

 Kubernetes里的Master指的是集群控制节点,在每个Kubernetes集群里都需要有一个Master来负责整个集   群的管理和控制,基本上 Kubernetes的所有控制命令都发给它,它负责具体的执行过程,我们后 面执行的所有命  令基本都是在Master上运行的。  Master通常会占据一个独立的服务器(高可用部署建议用3台服务器),主要原因 是它太重要了,是整个集群的“首脑” ,如果它宕机或者不可用,那么对集群内容器应用的管理都将失效。

在Master上运行着以下关键进程:

Kubernetes API Server(kube-apiserver):提供了HTTP Rest接口的关键服务进程,是Kubernetes里所有 资源的增、删、改、查等操作的唯一入口,也是集群控制的入口进程。
Kubernetes Controller Manager(kube-controller-manager):  Kubernetes里所有资源对象的自动化控 制中心,可以将其理解为资源对象的“大总管”。
Kubernetes Scheduler(kube-scheduler):负责资源调度(Pod调度)的进程,相当于公交公司的“调度 室”。
另外,在Master上通常还需要部署etcd服务,因为Kubernetes里的所有资源对象的数据都被保存在etcd中。 

 二、NODE

 与Master一样,  Node可以是一台物理主机,也可以是一台虚拟机。  Node是Kubernetes集群中的工作负载节 点,每个 Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,其上的工作负载会被Master自动转移到其他节点上。

在每个Node上都运行着以下关键进程:

kubelet:负责Pod对应的容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能。    
kube-proxy:实现Kubernetes Service的通信与负载均衡机制的重要组件。
Docker Engine(docker): Docker引擎,负责本机的容器创建和管理工作。 

三、POD

Pod是Kubernetes最重要的基本概念,如下图所示是Pod的组成示意图,我们看到每个Pod都有一个特殊的被称为“根容器” 的Pause容器。  Pause容器对应的镜像属于Kubernetes平台的一部分,除了Pause容器,每个Pod 还包含一个或多个紧密相关的用户业务容器。 

四、LABEL

Label(标签)是Kubernetes系统中另外一个核心概念。一个Label是一个key=value的键值对,其中key与value由用户自己指定。Label可以被附加到各种资源对象上,例如Node 、Pod 、Service 、RC等,一个资源对象可 以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上。  Label通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除。

我们可以通过给指定的资源对象捆绑一个或多个不同的Label来实现多维度的资源分组管理功能,以便灵活、方便地进行资源分配、调度、配置、部署等管理工作。例如,部署不同版本的应用到不同的环境中;监控和分析应 用(日志记录、监控、告警)等。一些常用的Label示例如下。

版本标签:  "release":"stable" 、"release":"canary"。
环境标签:  "environment":"dev" 、"environment":"qa" 、"environment":"production"。   架构标签:  "tier":"frontend" 、"tier":"backend" 、"tier":"middleware"。
分区标签:  "partition":"customerA" 、"partition":"customerB"。
质量管控标签:  "track":"daily" 、"track":"weekly"。

五、Deployment

Deployment相对于RC的一个最大升级是我们可以随时知道当前Pod“部署” 的进度。实际上由于一个Pod的创建、调度、绑定节点及在目标Node上启动对应的容器这一完整过程需要一定的时间,所以我们期待系统启动N个 Pod副本的目标状态,实际上是一个连续变化的“部署过程”导致的最终状态。
Deployment的典型使用场景有以下几个:

创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建
检查Deployment的状态来看部署动作是否完成(Pod副本数量是否达到预期的值)
更新Deployment以创建新的Pod(比如镜像升级)
如果当前Deployment不稳定,则回滚到一个早先的Deployment版本
暂停Deployment以便于一次性修改多个PodTemplateSpec的配置项,之后再恢复Deployment,进行新的发布
扩展Deployment以应对高负载
查看Deployment的状态,以此作为发布是否成功的指标
清理不再需要的旧版本ReplicaSets

六、Namespace          

 Namespace  (命名空间)是Kubernetes系统中的另一个非常重要的概念,  Namespace在很多情况下用于实现多租户的资源隔离。  

Namespace 通过将集群内部的资源对象“分配”到不同的Namespace中,形成逻辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源的同时还能被分别管理

Kubernetes集群在启动后会创建一个名为default的Namespace,通过kubectl可以查看

 七、volume

Volume  (存储卷)是Pod中能够被多个容器访问的共享目录。Kubernetes的Volume概念、用途和目的与Docker的Volume比较类似,但两者不能等价。

首先,Kubernetes中的Volume被定义在Pod上,然后被 一个Pod 里的多个容器挂载到具体的文件目录下;其次,  Kubernetes中的 Volume与Pod的生命周期相同,但与容器的生命 周期不相关,当容器终 止或者重启时,Volume中的数据也不会丢失。最后,Kubernetes支持多种类型的Volume,例如GlusterFS 、Ceph等先进的分布式文件系统。

Volume的使用也比较简单,在大多数情况下,我们先在Pod上声明 一个Volume,然后在容器里引用该Volume并挂载(Mount)到容器里的 某个目录上。

八、Persistent Volume        

Volume是被定义在Pod上的,属于计算资源的一部分,而实际上,网络存储是相对独立于计算资 源而存在的一种实体资源。比如在使用虚拟机的情况下,我们通常会先定义一个网络存储,然后从中 划出一个“ 网盘”并挂接到虚拟机上。  

Persistent Volume( PV)和与之相 关联的Persistent Volume Claim( PVC)也起到了类似的作用。PV可以被理解成Kubernetes集群中的某个网络存储对应的一块存储,它与Volume类似,但有以下区别: 

PV只能是网络存储,不属于任何Node,但可以在每个Node上访问
PV并不是被定义在Pod上的,而是独立于Pod之外定义的

九、ConfigMap    

Kubernetes 中的 ConfigMap 是一种用于存储非敏感配置数据的 API 资源。它可以用来存储应用程序、服务或其他组件所需的配置信息,如环境变量、配置文件、命令行参数等。ConfigMap 提供了一种将配置数据与应用程序分离的机制,使得配置可以在不重新构建镜像的情况下进行修改和管理。

以下是一些关键概念和特性:

配置数据存储:ConfigMap 可以存储键值对形式的配置数据,也可以存储配置文件的内容。

与容器的挂载:ConfigMap 中的配置数据可以通过卷挂载(Volume Mount)的方式,直接注入到容器内部。这使得容器可以访问 ConfigMap 中的配置信息。

应用于 Pod:ConfigMap 可以被多个 Pod 共享,一个 Pod 可以引用一个或多ConfigMap。

与环境变量的关联:ConfigMap 中的配置数据可以被映射到 Pod 的环境变量中,这样应用程序可以直接从环境变量中读取配置。

动态更新:一旦 ConfigMap 中的配置数据发生变化,与之相关联的 Pod 可以自动感知到变化并重新加载配置,无需重启 Pod。

不适用于敏感数据:由于 ConfigMap 存储的数据不加密,因此不适用于存储敏感信息,如密码、密钥等。

使用 ConfigMap 可以有效地管理应用程序的配置,提高了部署的灵活性和可维护性。

十、Service

在 Kubernetes 中,Service 是一种抽象,用于定义一组 Pod 的访问方式。它提供了一种持久的虚拟 IP 地址,可以将请求路由到一组具有相同标签的 Pod。Service 使得应用程序可以通过稳定的方式被其他应用或用户访问,而无需关注后端 Pod 的具体细节。Service服务也是Kubernetes里的核心资源对象之一,Kubernetes里的每个Service其实就是我们经常提起的微服务架构中的一个微服务。

它有以下一些关键概念和特性:

负载均衡:Service 会自动在其背后的一组 Pod 中实现负载均衡。当请求到达 Service 的虚拟 IP 地址时,它会将请求分发到相关联的 Pod 中的一个或多个。
服务发现:通过 Service,其他应用或服务可以轻松地发现和访问您的应用程序。无需知道后端 Pod 的具体 IP 地址,只需要知道 Service 的虚拟 IP 地址即可。
稳定的访问点:Service 提供了一个稳定的访问点,即使 Pod 的 IP 地址发生变化,也不会影响到外部应用程序的访问。
内部和外部服务:Service 可以被配置为 ClusterIP(仅内部可访问)、NodePort(外部和内部都可以访问)或 LoadBalancer(外部可访问,需要云提供商支持)类型,以满足不同场景下的需求。
服务标签:Service 通过标签选择器(Selector)来确定与其关联的后端 Pod。只有具有与 Service 标签选择器匹配的标签的 Pod 才会被 Service 所代理。
端口映射:Service 可以定义多个端口映射,将请求转发 到后端 Pod 的不同端口。


http://www.mrgr.cn/p/62152864

相关文章

C# 给图片添加文字水印

目录 应用场景 开发运行环境 方法说明 方法代码 调用示例 小结 应用场景 在某些应用项目(如电子档案信息管理)中,查看电子图片信息是经常使用到的功能,此时我们就需要给显示在浏览器中的图片添加文字水印版权或提示信息。…

如何设置微信自动回复?教你快速上手!

自动回复对于需要在微信上洽谈业务的人来说,无疑是非常实用的一个功能。 下面就一起来看看微信管理系统的机器人自动回复都有哪些设置吧! 1、自动通过好友 只要有新的好友请求发送到你的微信账号,系统会自动通过该请求,无需手动…

javaEE初阶——多线程(九)——JUC常见的类以及线程安全的集合类

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 小比特 大梦想 此篇文章与大家分享多线程专题的最后一篇文章:关于JUC常见的类以及线程安全的集合类 如果有不足的或者错误的请您指出! 目录 3.JUC(java.util.concurrent)常见的类3.1Callable接口3.2 RentrantLoc…

文件包含漏洞基础

php 中的文件包含函数: incude : require incude_once require_once 为了减少重复性代码的编写; 任意后缀的文件当中只要存在 php 代码就会被当作 php 执行; 本质:由于包含的文件不可控,导致文件包含…

huggingface模型下载至本地并调用教程

huggingface内有许多预训练模型,可以在线调用模型或者将模型部署至本地,但有时候通过网址调用模型会很慢,有些服务器甚至无法通过网址调用… 那么,正题,如何将huggingface的模型部署至本地呢?其实很简单&am…

重发布的原理及其应用

重发布的作用: 在一个网络中,若运行多种路由协议或者相同协议的不同进程;因为协议之间不能直接沟通计算,进程之间也是独立进行转发和运算的,所以,需要使用重发布来实现路由的共享。 条件 : 1&am…

TimThumb——超好用的 PHP 略缩图裁剪插件

TimThumb 是一个非常简洁方便的、用于裁图的 PHP 程序。只要给它设置一些参数,它就可以生成指定图片的缩略图甚至是直接给指定的网站截图。现在很多 WordPress 主题中,都使用的是 TimThumb 这个 PHP 类库进行缩略图处理。(本博客使用的 Nana 主题中的文章略缩图也是用 TimThu…

Laravel 6 - 第十四章 响应

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

接口自动化测试框架建设的经验与教训

为什么选择这个话题? 一是发现很多“点工”在转型迷茫期都会问一些自动化测试相关的问题,可以说自动化测试是“点工”升级的必经之路;二是Google一下接口自动化测试,你会发现很多自动化测试框架相关的文章,但是大部分…

同旺科技 USB TO SPI / I2C适配器读写24LC256--页写

所需设备: 1、USB 转 SPI I2C 适配器;内附链接 2、24LC256芯片 适应于同旺科技 USB TO SPI / I2C适配器升级版、专业版; 从00地址开始写入64个字节,然后再将64个字节读回; 页写时序: 读时序&#xff1a…

Docker(二)Docker+ server部署极简前端页面

本篇文章介绍如何使用 Dockerserver 将一个极简前端页面进行部署 1.本地运行一个简单的前端页面&#xff0c;再把它部署到服务器上 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&quo…

指令优化:基于大型语言模型的指令算子的进化多目标指令优化

指令优化:基于大型语言模型的指令算子的进化多目标指令优化 摘要 基于指令的语言建模在预训练的语言模型中受到了极大的关注。 提出了一种指令优化方法,将指令生成视为一个进化的多目标优化问题,利用大型语言模型(LLM)来模拟指令运算符,包括变异和交叉。 此外,为这些运算…

探索直播+电商系统中台架构:连接消费者与商品的智能纽带

随着直播电商的崛起&#xff0c;电商行业进入了全新的智能时代。直播形式的互动性和即时性为消费者提供了全新的购物体验&#xff0c;而电商平台则为商品的展示、销售和配送提供了强大的支持。在这一背景下&#xff0c;直播电商系统中台架构成为了连接消费者与商品的智能纽带&a…

【STM32+HAL+Proteus】系列学习教程---串口USART(DMA 方式)定长,不定长收发。

实现目标 1、利用UART实现上位机PC与下位机开发板之间的数据通信 2、学会STM32CubeMX软件关于UART的DMA模式配置 3、具体目标&#xff1a;1、实现串口定长收发数据通信&#xff1b;2、串口不定长收发数据通信。 一、DMA简介 1、什么是DMA? DMA&#xff08;Direct Memory …

yolo-驾驶行为监测:驾驶分心检测-抽烟打电话检测

在现代交通环境中&#xff0c;随着汽车技术的不断进步和智能驾驶辅助系统的普及&#xff0c;驾驶安全成为了公众关注的焦点之一 。 分心驾驶&#xff0c;尤其是抽烟、打电话等行为&#xff0c;是导致交通事故频发的重要因素。为了解决这一问题&#xff0c;研究人员和工程师们…

MySQL索引为什么选择B+树,而不是二叉树、红黑树、B树?

12.1.为什么没有选择二叉树&#xff1f; 二叉树是一种二分查找树&#xff0c;有很好的查找性能&#xff0c;相当于二分查找。 二叉树的非叶子节值大于左边子节点、小于右边子节点。 原因&#xff1a; 但是当N比较大的时候&#xff0c;树的深度比较高。数据查询的时间主要依赖于…

算法学习笔记Day8——回溯算法

本文解决几个问题&#xff1a; 回溯算法是什么&#xff1f;解决回溯算法相关的问题有什么技巧&#xff1f;回溯算法代码是否有规律可循&#xff1f; 一、介绍 1.回溯算法是什么&#xff1f; 回溯算法就是个多叉树的遍历问题&#xff0c;关键在于在前序和后序时间点做一些操作…

wps屏幕录制怎么用?分享使用方法!

数字化时代&#xff0c;屏幕录制已成为我们学习、工作和娱乐中不可或缺的一部分。无论是制作教学视频、分享游戏过程&#xff0c;还是录制网络会议&#xff0c;屏幕录制都能帮助我们轻松实现。WPS作为一款功能强大的办公软件&#xff0c;其屏幕录制功能也备受用户青睐。本文将详…

CentOS-7安装Mysql并允许其他主机登录

一、通用设置&#xff08;分别在4台虚拟机设置&#xff09; 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入&#xff1a; 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服…

day13 ts后端持久层框架(java转ts全栈/3R教室)

简介&#xff1a;如果说TS全栈后端开发最重要的两个框架&#xff0c;除了nestjs就是持久层框架了&#xff0c;这里主要看下Typeorm&#xff08;java中常用的就是mybatis&#xff0c;springdatajpa&#xff0c;hebernite了&#xff09; 先回顾下ORM的概念&#xff1a;ORM就是建…