【云原生】Kubernetes----Metrics-Server组件与HPA资源

目录

引言

一、概述

(一)Metrics-Server简介

(二)Metrics-Server的工作原理

(三)HPA与Metrics-Server的作用

(四)HPA与Metrics-Server的关系

(五)HPA与Metrics-Server的重要性

二、部署metrics-server组件

(一)镜像获取

1.本地上传镜像包

2.GitHub下载

3.国内云下载

(二)安装metrics-server组件

1.获取yaml文件

2.修改文件内容

3.创建资源

4.验证是否安装成功

三、部署HPA

(一)创建deployment

(二)创建HPA资源

(三)进行压测

四、命名空间的资源限制

(一)创建命名空间

(二)对资源数量的限制

(三)对资源配额的限制


引言

在Kubernetes集群中,为了确保资源的有效利用和应用的高可用性,我们通常需要监控集群中各个Pod的资源使用情况,并根据这些信息进行相应的调整。Horizontal Pod Autoscaler (HPA) 就是这样一种机制,它可以根据Pod的资源使用情况自动调整Pod的副本数量。而Metrics-Server,作为Kubernetes的一个核心组件,为HPA提供了关键的度量数据支持。本文将详细解析Metrics-Server与HPA之间的关系、工作原理以及它们在实际应用中的重要性

一、概述

(一)Metrics-Server简介

Metrics-Server是Kubernetes的一个附加组件,用于收集集群中各个资源的度量数据,如CPU、内存等。这些数据通过Kubernetes API Server暴露给外部用户或组件,以供它们进行决策或分析。在Kubernetes 1.8版本之前,通常使用Heapster作为度量数据的收集者,但自1.8版本起,Heapster被废弃,Metrics-Server成为了推荐的替代方案

(二)Metrics-Server的工作原理

Metrics-Server的工作原理相对简单,它定期从Kubernetes集群中的各个节点上收集度量数据,并将这些数据聚合后存储在内存中。然后,当外部用户或组件(如HPA)需要查询这些度量数据时,Metrics-Server会通过Kubernetes API Server提供相应的API接口进行响应。由于Metrics-Server只存储最近一段时间的度量数据(默认为1分钟),因此它不会成为集群的存储瓶颈

cAdvisor: 用于收集、聚合和公开 Kubelet 中包含的容器指标的守护程序。

kubelet: 用于管理容器资源的节点代理。 可以使用 /metrics/resource 和 /stats kubelet API 端点访问资源指标。

节点层面资源指标: kubelet 提供的 API,用于发现和检索可通过 /metrics/resource 端点获得的每个节点的汇总统计信息。

metrics-server: 集群插件组件,用于收集和聚合从每个 kubelet 中提取的资源指标。 API 服务器提供 Metrics API 以供 HPA、VPA 和 kubectl top 命令使用。Metrics Server 是 Metrics API 的参考实现。

(三)HPA与Metrics-Server的作用

Metrics-Server组件的作用:获取集群中的pod、节点等负载信息

HPA资源的作用:通过Metrics-Server获取的负载信息,自动伸缩的创建或者删除pod

(四)HPA与Metrics-Server的关系

HPA是Kubernetes的一个自动扩展控制器,它可以根据Pod的资源使用情况自动调整Pod的副本数量。而Metrics-Server为HPA提供了关键的度量数据支持。当HPA需要决定是否需要扩展或缩减Pod的副本数量时,它会通过Kubernetes API Server查询Metrics-Server收集的度量数据,然后根据这些数据进行决策。

例如,如果某个Deployment的Pod的CPU利用率超过了设定的阈值,HPA就会增加该Deployment的Pod副本数量;反之,如果CPU利用率过低,HPA就会减少Pod副本数量

(五)HPA与Metrics-Server的重要性

Metrics-Server和HPA在Kubernetes集群中扮演着至关重要的角色。Metrics-Server通过收集集群中各个资源的度量数据,为外部用户或组件提供了丰富的信息支持;而HPA则利用这些信息实现了Pod的自动扩展和缩减,从而确保了集群资源的有效利用和应用的高可用性。

在实际应用中,Metrics-Server和HPA可以帮助我们解决以下问题:

资源浪费:通过自动扩展和缩减Pod的副本数量,可以避免因资源分配不均或过度分配而导致的资源浪费。

应用性能:当应用面临高并发或高负载时,HPA可以迅速增加Pod副本数量以满足需求,从而确保应用的性能和稳定性。

运维效率:Metrics-Server和HPA的自动化特性可以大大减轻运维人员的工作压力,提高运维效率

更多详细信息访问:资源指标管道 | Kubernetes

二、部署metrics-server组件

(一)镜像获取

镜像获取的方式有多种

1.本地上传镜像包

使用docker load -i 镜像包名称 指令获取镜像

[root@node01 opt]#ls metrics-server.tar 
metrics-server.tar
[root@node01 opt]#docker load -i metrics-server.tar
0b97b1c81a32: Loading layer [==================================================>]  1.416MB/1.416MB
87ea89a1eabb: Loading layer [==================================================>]  39.61MB/39.61MB
Loaded image: k8s.gcr.io/metrics-server-amd64:v0.3.2

2.GitHub下载

https://github.com/kubernetes-sigs/metrics-server/releases/

3.国内云下载

docker pull registry.aliyuncs.com/google_containers/metrics-server:v0.6.3

在所有节点上部署镜像

[root@node01 opt]#docker images |grep metrics-server
registry.aliyuncs.com/google_containers/metrics-server           v0.6.3     817bbe3f2e51   14 months ago   68.9MB
k8s.gcr.io/metrics-server-amd64                                  v0.3.2     46aec181fcb3   5 years ago     40.8MB

(二)安装metrics-server组件

安装metrics-server组件,就是给k8s集群安装top指令。

1.获取yaml文件

[root@master01 metrics]#wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.1/high-availability-1.21+.yaml
[root@master01 metrics]#ls
high-availability-1.21+.yaml

2.修改文件内容

[root@master01 metrics]#vim high-availability-1.21+.yaml
......
136           requiredDuringSchedulingIgnoredDuringExecution:
137           - labelSelector:
138               matchLabels:
139                 k8s: metrics-server   
#修改硬策略的标签,由于本机的coredns实例的标签键位k8s-app,需要修改为不一致的,或者注释pod反亲和
......
142             topologyKey: kubernetes.io/hostname
143       containers:
144       - args:
145         - --kubelet-insecure-tls   #启动允许使用不安全的TLS证书
146         - --cert-dir=/tmp
147         - --secure-port=10250
148         - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
149         - --kubelet-use-node-status-port
150         - --metric-resolution=15s
151         image: registry.aliyuncs.com/google_containers/metrics-server:v0.6.3#修改镜像为阿里云的镜像......
197 ---
198 apiVersion: policy/v1beta1  #1.20版本以前的K8s集群修改PodDisruptionBudget资源的版本为v1beta
199 kind: PodDisruptionBudget
200 metadata:
201   labels:
202     k8s-app: metrics-server

3.创建资源

[root@master01 metrics]#kubectl apply -f high-availability-1.21+.yaml 
serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
service/metrics-server created
deployment.apps/metrics-server created
poddisruptionbudget.policy/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created

4.验证是否安装成功

//查看资源信息
[root@master01 metrics]#kubectl get pod -n kube-system |grep metrics-server
metrics-server-98c7c894d-skwjb     1/1     Running   0          3m55s
metrics-server-98c7c894d-xq8qr     1/1     Running   0          3m55s
[root@master01 metrics]#kubectl get deployment metrics-server -n kube-system 
NAME             READY   UP-TO-DATE   AVAILABLE   AGE
metrics-server   2/2     2            2           4m3s//使用top命令查看node节点的top值
[root@master01 metrics]#kubectl top node
NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master01   227m         5%     2078Mi          56%       
node01     100m         2%     965Mi           26%       
node02     114m         2%     580Mi           15% //查看pod资源的top值
[root@master01 metrics]#kubectl top pod -A
NAMESPACE      NAME                               CPU(cores)   MEMORY(bytes)   
helm-test      harbor-nginx-7db9b84fc4-p5tpl      1m           3Mi             
kube-flannel   kube-flannel-ds-8sgt8              10m          18Mi            
kube-flannel   kube-flannel-ds-nplmm              7m           21Mi            
kube-flannel   kube-flannel-ds-xwklx              7m           20Mi            
kube-system    coredns-74ff55c5b-dwzdp            4m           15Mi            
kube-system    coredns-74ff55c5b-ws8c8            3m           15Mi            
kube-system    etcd-master01                      22m          336Mi           
kube-system    kube-apiserver-master01            85m          398Mi           
kube-system    kube-controller-manager-master01   14m          51Mi            
kube-system    kube-proxy-psdnv                   4m           23Mi            
kube-system    kube-proxy-zmh82                   1m           15Mi            
kube-system    kube-proxy-zwnx2                   1m           22Mi            
kube-system    kube-scheduler-master01            4m           18Mi            
kube-system    metrics-server-98c7c894d-fsb4n     6m           20Mi            
kube-system    metrics-server-98c7c894d-nqph6     11m          14Mi            

三、部署HPA

(一)创建deployment

创建deployment控制器,用来生成pod,进行压测

[root@master01 metrics]#cat deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: dm-hpalabels:app: centos
spec:replicas: 1            #设置副本数量为1个selector:matchLabels:app: centostemplate:metadata:labels:app: centosspec:containers:- name: centosimage: centos:7command: ["/bin/bash", "-c", "yum -y install epel-release;yum -y install stress;sleep 36000"]
#下载stress压测工具,并设置睡眠时间为36000sresources:requests:cpu: "50m"limits:cpu: "150m"
#设置现在CPU资源

创建资源

[root@master01 metrics]#kubectl apply -f deployment.yaml 
deployment.apps/dm-hpa created
[root@master01 metrics]#kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
dm-hpa-556f64fc9-9fcff   1/1     Running   0          14s

(二)创建HPA资源

[root@master01 metrics]#cat hpa.yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:name: hpa-tools
spec:maxReplicas: 10minReplicas: 2scaleTargetRef:apiVersion: apps/vl kind: Deploymentname: dm-hpatargetCPUUtilizationPercentage: 50------------------------------------------------------------------------------maxReplicas:10             #指定pod最大的数量是10(自动扩容的上限)
minReplicas:2              #指定pod最小的pod数量是2(自动缩容的下限)
scaleTargetRef             #指定弹性伸缩引用的目标  
apiVersion: apps/vl        #目标资源的api
kind: Deployment           #目标资源的类型是Deployment
name:dm-hpa                #目标资源的名称
targetCPUUtilizationPercentage: 50  #使用cpu阈值(使用到达多少,开始扩容、缩容)

创建HPA资源

[root@master01 metrics]#kubectl apply -f hpa.yaml 
horizontalpodautoscaler.autoscaling/hpa-tools created
[root@master01 metrics]#kubectl get hpa
NAME        REFERENCE           TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
hpa-tools   Deployment/dm-hpa   0%/50%    2         10        10         8s
[root@master01 metrics]#kubectl get pod
NAME                     READY   STATUS              RESTARTS   AGE
dm-hpa-556f64fc9-9fcff   1/1     Running             0          6m34s
dm-hpa-556f64fc9-vzs6p   0/1     ContainerCreating   0          1s
[root@master01 metrics]#kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
dm-hpa-556f64fc9-9fcff   1/1     Running   0          6m38s
dm-hpa-556f64fc9-vzs6p   1/1     Running   0          5s
#由于设置的最小阈值为2所以它会自动创建pod,满足最小阈值的需求

(三)进行压测

进入pod使用stress压测工具进行压测

[root@master01 metrics]#kubectl exec -it dm-hpa-556f64fc9-9fcff sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
sh-4.2# stress --cpu 4                      
stress: info: [97] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd

动态检测HPA   

[root@master01 pod]#kubectl get hpa -w
NAME        REFERENCE           TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
hpa-tools   Deployment/dm-hpa   1%/50%    2         10        2          14m
hpa-tools   Deployment/dm-hpa   0%/50%    2         10        2          15m
hpa-tools   Deployment/dm-hpa   1%/50%    2         10        2          16m
hpa-tools   Deployment/dm-hpa   130%/50%   2         10        2          17m

查看Pod资源

[root@master01 pod]#kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
dm-hpa-556f64fc9-2zxgf   1/1     Running   0          39s
dm-hpa-556f64fc9-6jsz2   1/1     Running   0          9s
dm-hpa-556f64fc9-9fcff   1/1     Running   0          24m
dm-hpa-556f64fc9-9gt96   1/1     Running   0          39s
dm-hpa-556f64fc9-9jlm7   1/1     Running   0          9s
dm-hpa-556f64fc9-c6jgk   1/1     Running   0          24s
dm-hpa-556f64fc9-cd8xb   1/1     Running   0          9s
dm-hpa-556f64fc9-fzz5q   1/1     Running   0          9s
dm-hpa-556f64fc9-pc74k   1/1     Running   0          24s
dm-hpa-556f64fc9-vzs6p   1/1     Running   0          17m
#达到最大阈值10

pod生成后,CPU负载也会平摊随之下降

[root@master01 pod]#kubectl get hpa -w
NAME        REFERENCE           TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
hpa-tools   Deployment/dm-hpa   0%/50%    2         10        2          30m
hpa-tools   Deployment/dm-hpa   50%/50%   2         10        2          30m
hpa-tools   Deployment/dm-hpa   149%/50%   2         10        2          30m
hpa-tools   Deployment/dm-hpa   150%/50%   2         10        4          31m
hpa-tools   Deployment/dm-hpa   134%/50%   2         10        7          31m
hpa-tools   Deployment/dm-hpa   106%/50%   2         10        10         31m
hpa-tools   Deployment/dm-hpa   92%/50%    2         10        10         32m
hpa-tools   Deployment/dm-hpa   68%/50%    2         10        10         36m
hpa-tools   Deployment/dm-hpa   57%/50%    2         10        10         37m
hpa-tools   Deployment/dm-hpa   52%/50%    2         10        10         37m
hpa-tools   Deployment/dm-hpa   33%/50%    2         10        10         37m
hpa-tools   Deployment/dm-hpa   31%/50%    2         10        10         37m
......

当结束压测时,CPU资源会释放,同时Pod实例也会释放

[root@master01 pod]#kubectl get hpa 
NAME        REFERENCE           TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
hpa-tools   Deployment/dm-hpa   0%/50%    2         10        10         22m
----------------------------------------------------------------------------------------
[root@master01 pod]#kubectl get pod 
NAME                     READY   STATUS        RESTARTS   AGE
dm-hpa-556f64fc9-9fcff   1/1     Running       0          34m
dm-hpa-556f64fc9-vzs6p   1/1     Running       0          27m
-----------------------------------------------------------------------------------------
#Pod缩容的时间可能在5-6分钟左右,
#HPA 扩容的时候,负载节点数量上升速度会比较快;但回收的时候,负载节点数量下降速度会比较慢。
#原因是防止在业务高峰期时因为网络波动等原因的场景下
#果回收策略比较积极的话,K8S集群可能会认为访问流量变小而快速收缩负载节点数量
#而仅剩的负载节点又承受不了高负载的压力导致崩溃,从而影响业务

四、命名空间的资源限制

Kubernetes对资源的限制实际上是通过cgroup来控制的,cgroup是容器的一组用来控制内核如何运行进程的相关属性集合。针对内存、CPU 和各种设备都有对应的 cgroup。
默认情况下,Pod 运行没有 CPU 和内存的限额。这意味着系统中的任何 Pod 将能够像执行该 Pod 所在的节点一样, 消耗足够多的 CPU 和内存。一般会针对某些应用的 pod 资源进行资源限制,这个资源限制是通过 resources 的 requests 和 limits 来实现。requests 为创建 Pod 时初始要分配的资源,limits 为 Pod 最高请求的资源值。

(一)创建命名空间

[root@master01 metrics]#kubectl create ns test
namespace/test created
[root@master01 metrics]#kubectl get ns test
NAME   STATUS   AGE
test   Active   8s

(二)对资源数量的限制

创建deployment资源

[root@master01 metrics]#vim deployment.yaml 
[root@master01 metrics]#cat deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: centos-testnamespace: testlabels:app: centos1
spec:replicas: 6               #指定要运行的Pod副本数为6个selector:matchLabels:app: centos1template:metadata:labels:app: centos1spec:containers:- name: centos1image: centos:7command: ["/bin/bash", "-c", "yum -y install epel-release;yum -y install stress;sleep 36000"]resources:limits:cpu: "1000m"memory: "512Mi"
---
apiVersion: v1
kind: ResourceQuota             #资源配额的类型
metadata:name: ns-resourcenamespace: test               #资源配额适用的命名空间
spec:hard:                         #定义硬限制,即不能超过的资源配额pods: "5"                   #命名空间中可以存在的Pod的最大数量为5个services: "3"               #命名空间中可以存在的Service的最大数量为3个services.nodeports: "2"     #命名空间中可以存在的具有NodePort的Service的最大数量为2个

创建资源

[root@master01 metrics]#kubectl apply -f deployment.yaml 
deployment.apps/centos-test created
resourcequota/ns-resource created
[root@master01 metrics]#kubectl get all -n test
NAME                               READY   STATUS    RESTARTS   AGE
pod/centos-test-845c47f786-44bl8   1/1     Running   0          3s
pod/centos-test-845c47f786-55jhp   1/1     Running   0          3s
pod/centos-test-845c47f786-6lmvv   1/1     Running   0          3s
pod/centos-test-845c47f786-gckv2   1/1     Running   0          3s
pod/centos-test-845c47f786-kwbl7   1/1     Running   0          3s
pod/centos-test-845c47f786-r9jsk   1/1     Running   0          3sNAME                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/centos-test   6/6     6            6           3sNAME                                     DESIRED   CURRENT   READY   AGE
replicaset.apps/centos-test-845c47f786   6         6         6       3s
[root@master01 metrics]#kubectl run nginx --image=nginx:1.18.0 -n test
Error from server (Forbidden): pods "nginx" is forbidden: exceeded quota: ns-resource, requested: pods=1, used: pods=6, limited: pods=
------------------------------------------------------------------------------------------
#ResourceQuota 是用来限制命名空间内资源使用的配额,并且当超出限制时,
#它主要影响的是未来的资源请求,比如新的Pod的创建请求#在指定的命名空间中的ResourceQuota已经被达到或超过时,Kubernetes API服务器会拒绝Pod的创建请求,并返回一个错误。
#但是,对于已经存在的Pod,ResourceQuota 并不会自动删除或终止它们

(三)对资源配额的限制

如果Pod没有设置requests和limits,则会使用当前命名空间的最大资源;如果命名空间也没设置,则会使用集群的最大资源。
K8S 会根据 limits 限制 Pod 使用资源,当内存超过 limits 时 cgruops 会触发 OOM。

这里就需要创建 LimitRange 资源来设置 Pod 或其中的 Container 能够使用资源的最大默认值

[root@master01 metrics]#vim limit.yaml
[root@master01 metrics]#cat limit.yaml
apiVersion: v1
kind: LimitRange                   #表示使用limitrange来进行资源控制
metadata:name: test2-limitnamespace: testspec:limits:- default:                 #default: 即 limit 的值memory: 512Micpu: "1"defaultRequest:          #defaultRequest: 即 request 的值memory: 256Micpu: "0.5"type: Container          #类型支持 Container、Pod、PVC

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

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

相关文章

QT属性系统,简单属性功能快速实现 QT属性的简单理解 属性学习如此简单 一文就能读懂QT属性 QT属性最简单的学习

4.4 属性系统 Qt 元对象系统最主要的功能是实现信号和槽机制,当然也有其他功能,就是支持属性系统。有些高级语言通过编译器的 __property 或者 [property] 等关键字实现属性系统,用于提供对成员变量的访问权限,Qt 则通过自己的元对…

【算法与数据结构】【数组篇】【题11-题15】

系列文章 本人系列文章-CSDN博客https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5502 1.数组基本知识点 1.1概念 数组就是一个集合。数组会用一些名为索引的数字来标识每项数据在数组中的位置,且在大多数编程语言中&…

机器学习-- 如何清洗数据集

文章目录 引言:数据清洗的具体步骤数据清洗的具体方法和示例1. 处理缺失值2. 去除重复数据3. 修正数据格式4. 处理异常值5. 标准化和归一化6. 处理不一致的数据7. 转换数据类型8. 数据集成 总结 引言: 数据清洗是数据处理和分析的关键步骤,旨…

2024/6/11 英语每日一段

They found that, regardless of culture, greater mental well-being is linked with feeling emotions that we believe are appropriate to our situation, rather than just having positive emotions regardless of context--“feeling right” as opposed to “feeling g…

什么是电表无人抄表?

1.电表无人抄表:智能时代的新式计量方法 随着科技的发展的迅猛发展,传统电表抄表方法正被一种全新的、高效率的方式所替代——电表无人抄表。这类技术的普及,不仅提升了电力行业的经营效率,同时也为用户增添了更贴心的服务。 2.…

从零开始手把手Vue3+TypeScript+ElementPlus管理后台项目实战九(整体布局02)

使用el-menu和el-sub-menu及el-menu-item导航 src/layout目录下新增components目录,components目录下新增PageSidebar.vue 代码基本思想为:读取router中定义的routes数组,渲染绑定到el-menu。 el-menu和el-sub-menu及el-menu-item的区别&…

SprringCloud Gateway动态添加路由不重启

文章目录 前言:一、动态路由必要性二、SpringCloud Gateway路由加载过程RouteDefinitionLocator接口PropertiesRouteDefinitionLocator类DiscoveryClientRouteDefinitionLocatorInMemoryRouteDefinitionRepositoryCompositeRouteDefinitionLocator类CachingRouteDef…

【话题】程序员应该有什么职业素养

大家好,我是全栈小5,欢迎阅读小5的系列文章,这是《话题》系列文章 目录 背景职业素养的重要性职业素养的核心1.1 承诺与责任感1.2 沟通与团队合作1.3 学习与持续进步 态度和价值观的作用2.1 诚实和诚信2.2 责任和自我管理2.3 尊重和多样性 职…

Linux crontabs定时执行任务

文章目录 前言一、安装二、服务1. 启动crond服务2. 关闭crond服务3. 重启crond服务4. 设置crond开机启动5. 禁用crond开机启动6. 查看crond是否开机启动7. 重新载入配置8. 查看crond运行状态 三、使用1. 查看当前用户的crontab2. 编辑用户的crontab3. 删除用户的crontab的内容 …

JEPaaS 低代码平台 j_spring_security_check SQL注入漏洞复现

0x01 产品简介 JEPaaS是一款优秀的软件平台产品,可视化开发环境,低代码拖拽式配置开发,操作极其简单,可以帮助解决Java项目80%的重复工作,让开发更多关注业务逻辑,大大提高开发效率,能帮助公司大幅节省人力成本和时间成本,同时又不失灵活性。适用于搭建 OA、ERP、CRM、…

100v 高耐压ldo 高压三端稳压芯片

100v 高耐压ldo 高压三端稳压芯片

python数据分析-量化分析

一、研究背景 随着经济的发展和金融市场的不断完善,股票投资成为了人们重要的投资方式之一。汽车行业作为国民经济的重要支柱产业,其上市公司的股票表现备受关注。Fama-French 三因子模型是一种广泛应用于股票市场的资产定价模型,它考虑了市场…

高效处理风电时序数据,明阳集团的 TDengine 3.0 应用实录

作为全国 500 强企业,明阳集团在风电行业拥有领先实力。目前全球超过 800 个项目采用明阳各种型号风电机组,安装数量超过 15000 台。每台风电机组配备数百至上千个监测点,生成的时序数据每秒一条,每天产生亿级以上的数据量。这些数…

IPv6 ND 协议功能概述

ND 协议功能概述 ND(Neighbor Discovery,邻居发现)协议是 IPv6 的一个关键协议,它综合了 IPv4 中的 ARP,ICMP 路由发现和 ICMP 重定向等协议,并对它们做了改进。 作为 IPv6 的基础性协议,ND 协…

AI 定位!只需一张图片就能找到你,锁定具体位置!精确到经纬度

你能猜到这张自拍的拍摄地点吗?别小瞧了AI的能力,答案可能会让你吓一跳。 这事交给现在的AI来处理,它只需要“看”一眼,就能把照片里的“底裤都给扒出来”: 美国,加利福尼亚州,旧金山机场洗手间,93号登机口…

关于Ubuntu24.04嘉立创EDA无法启动的问题

关于Ubuntu24.04嘉立创EDA无法启动的问题 查看无法启动原因解决办法1解决办法2 查看无法启动原因 在终端使用启动文件命令报错 解决办法1 输入如下命令可以正常启动 ./lceda-pro --no-sandbox 解决办法2 找到desktop文件进行修改 cd /usr/share/applications sudo vim lce…

HTML制作一个日蚀的动画特效

大家好&#xff0c;今天制作一个日蚀动画特效&#xff01; 先看具体效果&#xff1a; 使用一个逐渐扩大的圆形阴影来模拟月亮遮挡太阳的效果。使用了CSS的keyframes动画和border-radius属性来创建一个简单的圆形阴影效果。 HTML <!DOCTYPE html> <html lang"e…

[Cloud Networking] Layer 2 Protocol

文章目录 1. STP / RSTP / MSTP Protocol1.1 STP的作用1.2 STP 生成树算法的三个步骤1.3 STP缺点 2. ARP Protocol3. MACSEC 1. STP / RSTP / MSTP Protocol 1.1 STP的作用 消除二层环路&#xff1a;通过阻断冗余链路来消除网络中可能存在的环路链路备份&#xff1a;当活动链…

DC/AC电源模块:为物联网设备提供可靠的电力支持

BOSHIDA DC/AC电源模块&#xff1a;为物联网设备提供可靠的电力支持 DC/AC电源模块是物联网设备中非常重要的组成部分之一&#xff0c;它为设备提供稳定、可靠的电力支持。在物联网应用中&#xff0c;设备通常需要通过无线网络与其他设备或云平台进行通信&#xff0c;而这些设…

Photoshop中颜色与色调的调整

Photoshop中颜色与色调的调整 Photoshop中的颜色模式RGB模式灰度模式位图模式索引模式CMYK模式Lab模式 Photoshop中的颜色/色调调整命令颜色/色调调整命令的分类亮度/对比度调整命令色阶命令曲线命令曝光度命令自然饱和度命令色相/饱和度命令色彩平衡命令照片滤镜调整命令通道混…