首页 > 其他分享 >k8s hpa自定义指标

k8s hpa自定义指标

时间:2024-02-28 16:00:09浏览次数:24  
标签:tmp 文件 自定义 dd zero memory hpa k8s block

参考链接 https://blog.csdn.net/fly910905/article/details/105375822

这个大佬写的挺好的。 不再搬运了,仅不不懂的地方记录一下。哈哈哈

模拟增加memory的脚本解释一下,因为我也第一次见到这么玩,命令也是新鲜

#!/bin/bash  
mkdir /tmp/memory  
mount -t tmpfs -o size=40M tmpfs /tmp/memory  
dd if=/dev/zero of=/tmp/memory/block  
sleep 60 
rm /tmp/memory/block  
umount /tmp/memory  
rmdir /tmp/memory

这个Shell脚本的作用是在/tmp/memory目录下创建一个大小为40MB的临时文件系统,并在其中创建一个名为"block"的文件,然后等待60秒。在等待期间,"block"文件会被填充为零直到占用40MB的空间。60秒后,脚本会删除这个文件,然后卸载/tmp/memory目录下的临时文件系统,并最终移除这个目录。这个脚本主要用于在/tmp目录中创建一个临时的内存文件系统,用于存储临时数据,并在一段时间后自动清理这些数据。
挂载tmpfs文件系统,它会使用系统的内存作为存储介质,而不是硬盘空间。在这个例子中,指定的大小为40MB,这意味着脚本将尝试将40MB的系统内存用于/tmp/memory目录下的临时文件系统。

$ dd if=/dev/zero of=/tmp/memory/block

这条命令使用`dd`命令,它是一个用于复制文件和转换文件的工具。

- `if=/dev/zero`: 这个选项指定了`dd`命令的输入文件(input file)。在这里,`/dev/zero`是一个特殊的设备文件,在读取时会无限产生字节值为0的数据流。
- `of=/tmp/memory/block`: 这个选项指定了`dd`命令的输出文件(output file)。在这里,数据将会写入到/tmp/memory目录下的名为"block"的文件中。

所以,这条命令的作用是从/dev/zero设备中读取数据,并将其写入到/tmp/memory目录下的"block"文件中,直到"block"文件达到设定的大小或者设备中的数据被读取完毕。

发生在我环境的一些问题

memory的那个hpa-mem.yaml文件在1.28.1上内容要稍作修改

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-hpa
  namespace: lc
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: hpa-mem-demo
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 60

 

标签:tmp,文件,自定义,dd,zero,memory,hpa,k8s,block
From: https://www.cnblogs.com/ggborn-001/p/18040702

相关文章

  • Oracle-JPA扩展工具-原生SQL查询并返回自定义DTO
    Java-JPA原生SQL查询返回自定义DTO:importcom.tjgeo.njsosms.framework.repository.IBaseRepository;importcom.tjgeo.njsosms.risk.support.entity.Source;importorg.springframework.data.jpa.repository.Query;importjava.util.List;/***${Description}**@......
  • K8s Controller 开发指南
    一个Kubernetes控制器是一个主动的协调过程,它会监视某个对象的期望desired状态,并且还会监视实际current状态,然后不断的尝试使当前的实际状态更接近期望的状态。最简单的实现方式是一个循环:for{desired:=getDesiredState()current:=getCurrentState()makeCha......
  • eclipse自定义jak版本
    安装跟目录下eclipse.ini文件-startupplugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar-vmC:\ProgramFiles\Java\jdk8u392-b08\bin--launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.500.v20170531-1133-productorg.eclips......
  • SpringBoot 1x 系列之(七)自定义starter
    自定义starterstarters原理、自定义starters如何自定义starter:​ 1、这个场景需要使用到的依赖是什么?​ 2、如何编写自动配置@Configuration//指定这个类是一个配置类@ConditionalOnXXX//在指定条件成立的情况下自动配置类生效@AutoConfigureAfter//指定自动配置类的......
  • socket io 微服务 k8s 解决方案
    spingboot+socketio依赖对于socketio-client2.x版本<dependency><groupId>com.corundumstudio.socketio</groupId><artifactId>netty-socketio</artifactId><version>1.7.19</version></dependency>注册Naco......
  • 在K8S中,Pod优雅终止过程是什么?
    在Kubernetes(K8s)中,Pod的优雅终止过程是一个有序的过程,旨在确保Pod中运行的应用程序能够平滑关闭,释放资源,并尽可能减少因突然关闭带来的数据丢失和服务中断。以下是Pod优雅终止的一般步骤:删除Pod请求用户或控制器发出删除Pod的请求,比如通过kubectldeletepod<pod-name>......
  • 在K8S中,helm是什么?如何使用?
    在Kubernetes(K8s)中,Helm是一个用于简化Kubernetes应用程序部署和管理的包管理工具。它采用了声明式配置和模板化的概念,使得Kubernetes资源的打包、安装、升级、回滚等操作变得更加方便和高效。Helm主要由两个核心组件构成:HelmCLI(命令行接口):提供了一系列命令,让用户能够在本......
  • 在K8S中,etcd数据库中数据如何更改?
    在Kubernetes(K8s)中,etcd中的数据更改主要发生在以下几个场景中:创建、更新和删除Kubernetes资源对象:当用户在Kubernetes中创建(POST)、更新(PUT)或删除(DELETE)一个资源对象(如Pod、Service、Deployment等)时,KubernetesAPI服务器会将这些更改转换为对etcd的相应操作。API服务器会将更改......
  • 在K8S中,etcd是什么类型数据库?
    在Kubernetes(K8s)中,etcd是一个高度可靠、分布式的键值存储数据库,用于存储集群的共享配置和服务发现信息。etcd在Kubernetes架构中扮演着核心组件的角色,是集群状态数据的关键存储后端。1.etcd的类型:键值存储(Key-ValueStore):etcd最基本的功能是作为键值存储,它允许用户存储和......
  • 在K8S中,etcdctl如何使用?
    在Kubernetes(K8s)中,etcdctl是用于直接与etcd集群交互的命令行工具,主要用于管理和调试etcd存储中的键值对数据。etcd是K8s集群的核心组件之一,它作为一个高可用的分布式键值存储系统,用于保存集群的所有重要配置数据。以下是如何在Kubernetes环境中使用etcdctl的基本......