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

Kubernetes入门学习

kubernetes技术架构模型

一、kubernetes的Label标签

        1.标签是以key=value的格式通过用户自定义指定,目的是将其加入到各种资源对象上来实现多维度的资源分组管理使其更方便的进行资源分配、调度、配置和部署管理工作。

        2.标签可以结合Label Selector(标签选择器)查询和筛选拥有某些标签的资源对象。

           label 和 label selector两者结合使被管理的对象能更精细的分组管理实现集群的高可用。

        3.label selector 的使用场景:

                kube-controller进程通过资源对象RC上定义的label selector 来筛选要监控的Pod副本的数量,使Pod的数量始终符合预期设定的全自动控制流程。

                kube-proxy进程通过Service的label selector来选择对应的pod,自动建立每个Service到对应Pod的请求转发路由表

二、Replication Controller(RC)

             1. RC主要是定义了一个期望的场景声明某种pod的副本数量在任意时刻都符合预期值

             2.  RC包括:

                  pod期待的副本数

                  用于筛选目标pod的label selector

                  用于创建新pod的template模板

              3.RC中的replicas表示期望pod的副本数

                  rc中动态缩放命令: kubectl scale rc  pod名称 --replicas=x (x表示期望的pod副本数)

                  可以通过这个命令修改rc的副本数来实现pod的动态缩放功能

                  注:删除rc不会影响rc已经创建好的pod,可以通过上述操作命令设置replicas=0来删除已经存在的rc

                    RC的应用场景:在做应用的平滑升级时,设置rc中期待的副本数为x,表示系统中发始终运行10个pod,每次终止一个旧的版本就会自动生成一个新的版本。

三、Deployment

                  1.引入deployment的目的是更好的解决pod的编排问题,其内部使用的是replica set来实现前面所说的RC(它和RC的区别在于它支持集合的方式去声明label selector)。

                  2.deployment相对于RC的的亮点在于它可以随时知道pod的部署进度。

                  3.depolyment的使用场景:

  •           创建deployment对象来生成对对应的replica set完成pod副本的创建造
  •           通过deployment的状态来查看部署动作是否完成
  •           更新depolument来创建新的pod(版本升级),如果不稳定可以回滚到上一个版               本 
  •           可以挂起或者恢复

                  4.通过kubectl create -f xxx-deployment.yaml可以创建deployment

                      通过 kubectl get deployment 来查看已创建的deployment的信息

四、Horizontal Pod Autoscaler(HPA)

                 1.HPA的提出需求:因为google对于kubernetes的定位是自动化和智能化,即当前的分布式系统可以根据当前系统中不同主机的负载情况然后自动触发水平扩展或缩容行为,而目前的手动控制的方式明显不符合kubernetes的设计理念,所以HPA应运而生。

                 2.HPA的实现原理:通过追踪RC控制的所有pod的负载情况来确定是否要针对性的调整期望的pod数量。

                    依据pod的实现原理可以知道hpa的实现首先需要衡量pod的负载情况的指标

               第一种是 CPUUtilizationPercentage

                               

                        CPUUtil是一个算术平均值(目标POD所有副本自身CPU1分钟内利用率的平均值),如果超过了80%则意味当前的副本数目不足以支撑更多的请求需要进行动态扩容,当高峰期过去后pod的利用率降下来则pod的副本数自动减少到一个适当的值。

                        当前这个参数值需要通过Heapster扩展组件来获取这个值

               第二种是应用程序自定义的度量指标,如服务在每秒内的请求数

                        上图示例中该参考值超过90%会触发自动动态扩容行为

                 3.kubectl autoscale deployment xxx --cpu-percent=90 --min=1  --max=10,该命令可以创建上述图片的等价效果。

四、Service(微服务)

           

上图为service的工作位置

        1.kubernetes中多个pod组成的集群被客户端访问过程:客户端通过负载均衡器(kube-proxy)将service接收到的请求转发到后端的某个pod实例并在内部实现服务的负载均衡和会话保持机制。

         2.kubernetes的服务发现

            机制:kubernetes中的Service都有唯一的cluster IP 和唯一的名字,名字由自己定义(固定在配置中)

              通过Service的名字找到cluster ip (通过 add-on增值包引入dns系统,将服务名作为dns域名),直接使用服务名来建立通信连接。

          3.外部系统访问service的问题

                node ip : node节点的ip地址(集群中每个节点的物理网卡的ip地址,真实存在的物理网络)

                pod ip :pod的ip地址(docker engine 根据docker 0网桥的ip地址段进行分配)

                cluster ip:service 的ip 地址(虚拟ip,需要结合service port组成具体的通信端口,集群外的节点不能直接访问)

                 通过nodePort实现从外部访问集群内部:

              上述通过nodeport的方法是在kubernetes集群里每个node上为需要外部访问的service开启一个对应的tcp监听端口。

                可以通过设置一个负载均衡器对上述通信方式进行优化,主要是通过访问设置的负载均衡的ip地址来对访问的流量进行调度,实现集群内部的负载均衡。

五、Volume(存储卷)

              1.Volume是pod中可以被多个容器访问的共享目录,其生命周期和pod的生命周期相同但与容器的生命周期不相关,即容器终止或者重启时其卷中的数据不会丢失

上图示例是数据卷相关的配置文件写法

                 2.kubernetes的数据卷类型:empthDir(pod分配到Node是创建,初始内容为空,无需指定宿主机对应的文件目录,pod移除之后会被永久删除)、hostPath(pod挂载宿主机的文件或目录)、gcePersistentDisk(谷歌公有云提供的永久磁盘)、awsElasticBlockStore(亚马逊公有云提供的)、NFS(NFS网络文件系统提供共享存储目录)

六、Persistent Volume(某个网络存储中对应的一块存储):简称PV(有状态的对象)

        1.pv和volume的区别:

        pv只能是网络存储,不属于任何node,可以在每个node上访问

        pv不是定义在pod上,独立于pod之外定义

        2.pv的accesModes属性:
             readWriteOnce:读写权限,只能被单个node 挂载

             readOnlyMany:只读权限,允许多个node挂载

             readWriteMany:读写权限,允许多个node挂载

七、namespace(命名空间)

        1.namespace是将集群内部的资源对象分配到不同的namespace中,形成逻辑上分组的不同项目,使不同的分组在共享使用集群内部整个资源同时还可以被分别管理。

         2.集群启动后会创建一个default的namespace,可以通过kubectl get namespaces来查看命名空间的信息,如果用户不指明,则其创建的pod和rc、service将会被系统创建到default的namespace的命名空间下

                

相关文章:

Kubernetes入门学习

kubernetes技术架构模型 一、kubernetes的Label标签 1.标签是以keyvalue的格式通过用户自定义指定,目的是将其加入到各种资源对象上来实现多维度的资源分组管理使其更方便的进行资源分配、调度、配置和部署管理工作。 2.标签可以结合Label Selector(标签选择器)查询…...

支持向量机SVM的应用案例

支持向量机(Support Vector Machine,SVM)是一种强大的监督学习算法,广泛应用于分类和回归任务。 基本原理 SVM的主要目标是周到一个最优的超平面,该超平面能够将不同类别的数据点尽可能分开,并且使离该超平面最近的数…...

Chrome 132 版本新特性

Chrome 132 版本新特性 一、Chrome 132 版本浏览器更新 1. 在 iOS 上使用 Google Lens 搜索 在 Chrome 132 版本中,开始在所有平台上推出这一功能。 1.1. 更新版本: Chrome 126 在 ChromeOS、Linux、Mac、Windows 上:在 1% 的稳定版用户…...

(5)STM32 USB设备开发-USB键盘

讲解视频:2、USB键盘-下_哔哩哔哩_bilibili 例程:STM32USBdevice: 基于STM32的USB设备例子程序 - Gitee.com 本篇为使用使用STM32模拟USB键盘的例程,没有知识,全是实操,按照步骤就能获得一个STM32的USB键盘。本例子是…...

Linux 系统服务开机自启动指导手册

一、引言 在 Linux 系统中,设置服务开机自启动是常见的系统配置任务。本文档详细介绍了多种实现服务开机自启动的方法,包括 systemctl 方式、通用脚本方式、crontab 方案等,并提供了生产环境下的方案建议和开机启动脚本示例。 二、systemct…...

分布式多卡训练(DDP)踩坑

多卡训练最近在跑yolov10版本的RT-DETR,用来进行目标检测。 单卡训练语句(正常运行): python main.py多卡训练语句: 需要通过torch.distributed.launch来启动,一般是单节点,其中CUDA_VISIBLE…...

Codeforces Round 1000 (Div. 2)-C题(树上两个节点不同边数最大值)

https://codeforces.com/contest/2063/problem/C 牢记一棵树上两个节点如果相邻,它们有一条边会重叠,两个节点延伸出去的所有不同边是两个节点入度之和-1而不是入度之和,那么如果这棵树上有三个节点它们的入度都相同,那么优先选择非相邻的两个节点才能使所有不同边的数量最大!!…...

C++17 新特性解析:Lambda 捕获 this

C17 引入了许多改进和新特性,其中之一是对 lambda 表达式的增强。在这篇文章中,我们将深入探讨 lambda 表达式中的一个特别有用的新特性:通过 *this 捕获当前对象的副本。这个特性不仅提高了代码的安全性,还极大地简化了某些场景下…...

Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能

在Spring Boot中使用Micrometer集成Prometheus来监控Java应用性能是一种常见的做法。 一、Micrometer简介 Micrometer是一个开源的Java项目,主要用于为JVM应用程序提供监控和度量功能。以下是对Micrometer的详细介绍: 定义与功能 Micrometer是一个针…...

Spring Boot 事件驱动:构建灵活可扩展的应用

在 Spring Boot 应用中,事件发布和监听机制是一种强大的工具,它允许不同的组件之间以松耦合的方式进行通信。这种机制不仅可以提高代码的可维护性和可扩展性,还能帮助我们构建更加灵活、响应式的应用。本文将深入探讨 Spring Boot 的事件发布…...

IM系统设计

读多写少,一般采用写扩散成timeline来做 写扩散模式 利用last message id作为这个作为最后一个消息体 timeline和批量未读和ack 利用ZSET来维护连接的定时心跳,来续约运营商的连接不断开...

华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包

华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包 刷机教程说明: 适用机型:华为EC6110-T、华为EC6110-U、华为EC6110-M 破解总分为两个部分:拆机短接破解(保留IPTV)和OTT卡刷(不保留IPTV&#xff09…...

ASP.NET Blazor托管模型有哪些?

今天我们来说说Blazor的三种部署方式,如果大家还不了解Blazor,那么我先简单介绍下Blazor Blazor 是一种 .NET 前端 Web 框架,在单个编程模型中同时支持服务器端呈现和客户端交互性: ● 使用 C# 创建丰富的交互式 UI。 ● 共享使用…...

PyTorch广告点击率预测(CTR)利用深度学习提升广告效果

目录 广告点击率预测问题数据集结构广告点击率预测模型的构建1. 数据集准备2. 构建数据加载器3. 构建深度学习模型4. 训练与评估 总结 广告点击率预测(CTR,Click-Through Rate Prediction)是在线广告领域中的重要任务,它帮助广告平…...

PAT甲级-1017 Queueing at Bank

题目 题目大意 银行有k个窗口,每个窗口只能服务1个人。如果3个窗口已满,就需要等待。给出n个人到达银行的时间和服务时间,要求计算每个人的平均等待时间。如果某个人的到达时间超过17:00:00,则不被服务,等待时间也不计…...

OneData体系架构详解

阿里巴巴的 OneData 体系架构方法论,主要分为三个阶段:业务板块、规范定义 和 模型设计。每个阶段的核心目标是确保数据的高效管理、共享与分析能力。 一. 业务板块(Business Segment) 业务板块是OneData体系架构中的第一步&…...

Gin 框架入门实战系列教程

一,Gin介绍 Gin是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,如果你是性能和高效的追求者,我们推荐你使用Gin框架。 Gin最擅长的就是Api接口的高并发,如果项目的规模不大,业务相对简单…...

鸿蒙harmony json转对象(2)

在ArkTS(Ark TypeScript)中,接口(interface)是用来定义一个对象的结构,它可以包含属性、方法签名,以及嵌套的类型(包括其他接口或对象类型)。因此,接口里面可…...

M-LAG与E-trunk

M-LAG和E-trunk都是用来实现跨设备链路聚合,解决单点故障的,其大部分特性相同,工作模式M-LAG更胜一筹,支持双活,而且其原理感觉像是vrrpmstp的升级版,是往增加网络可靠性去发展的;而E-trunk是基于LACP扩展实现&#xf…...

【面试常见问题】

如何自我介绍 自我介绍是面试关键部分,是面试官了解求职者的首要途径,清晰自信的介绍能提升面试官印象,对求职成功至关重要。 糟糕的自我介绍示例 求职者朱晓明虽表明自己善于交际、积极,23 年毕业且从事 java 开发&#xff0c…...

Python基础语法:生成器 generator(yield)

一、简介根据指定的规则循环生成数据,当条件不成立时则生成数据结束。数据不是一次性全部生成出来,而是使用一个,再生成一个,好处是可以节约大量的内存。就像设计模式中的懒汉式。适合处理大数据或流数。生成器是一种特殊的迭代器…...

学术写作创新突破!2026全流程AI论文工具精选指南

2026 年 AI 论文写作工具已进入全流程闭环 学术合规时代,千笔 AI(综合评分 99 分)中文学术场景标杆;Grammarly Academic与Elicit为英文论文写作首选;按需求匹配度 - 数据可信度 - 成本承受力三维模型选型,…...

HDI 高密度互连板阶数的深度理解

一、概述高密度互连板(High Density Interconnector, HDI)是通过激光微孔技术和逐层积层工艺实现高密度布线的印制电路板。其阶数划分是行业内统一的技术标准,核心依据为独立积层压合次数与配套激光盲孔制程次数,而非单面层数或钻…...

基于随机森林的低成本传感器机器学习校准实践指南

1. 项目概述:当低成本传感器遇上机器学习校准在物联网和智能感知系统铺天盖地的今天,低成本传感器几乎无处不在。从监测办公室的空气质量,到追踪城市街道的噪音污染,再到农业大棚里的温湿度控制,这些价格亲民的“小眼睛…...

为你的Hermes Agent自定义Provider,接入Taotoken多模型池

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为你的Hermes Agent自定义Provider,接入Taotoken多模型池 在构建复杂的AI应用时,开发者常常面临一个核心挑…...

为什么你的DeepSeek微调loss震荡不止?(Meta/DeepSeek联合团队未公开的梯度裁剪+LoRA初始化双校准协议)

更多请点击: https://codechina.net 第一章:DeepSeek微调loss震荡的根本归因剖析 DeepSeek系列模型在微调过程中频繁出现loss剧烈震荡现象,其本质并非单一因素所致,而是数据、优化器、梯度动态与模型结构四者耦合失稳的系统性表现…...

危急时刻的六条基本安全提示

人机协作,AI模型:Deepseek 仅供参考 危急时刻的六条基本安全提示 以下内容仅为通用性安全建议,供在紧急情况下保持冷静、保护自身安全时参考。所有建议均基于常理和公共安全常识,不包含任何具体操作细节或可能被不当使用的信息…...

基于TESS光变曲线与深度学习的O型星物理参数预测研究

1. 项目概述与核心挑战在恒星天体物理研究中,大质量O型星扮演着至关重要的角色。它们不仅是宇宙中光度最高的天体之一,其强烈的辐射、恒星风和最终的超新星爆发,更是驱动星系化学演化和能量注入星际介质的关键引擎。然而,深入理解…...

3步快速部署:智能茅台抢购平台的终极自动化解决方案

3步快速部署:智能茅台抢购平台的终极自动化解决方案 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法) 项目地址: https://gi…...

如何扩展GASShooter:添加新武器、新能力与新游戏机制的终极指南

如何扩展GASShooter:添加新武器、新能力与新游戏机制的终极指南 【免费下载链接】GASShooter Advanced FPS/TPS Sample Project for Unreal Engine 4s GameplayAbilitySystem plugin 项目地址: https://gitcode.com/gh_mirrors/ga/GASShooter GASShooter是Un…...