k8s-HPA

前提条件

安装有**Metrics Server**,HPA的运行监控指标需要由Metrics Server 提供

文档:https://github.com/kubernetes-sigs/metrics-server?tab=readme-ov-file#readme

  • 快速自动缩放,每15秒收集一次指标(可配置)。

    资源效率,为集群中的每个节点使用1 milli核心CPU和2 MB内存。

    可扩展支持多达5000个节点群集。

需要替换成国内的阿里云镜像::

image: registry.aliyuncs.com/google_containers/metrics-server:v0.6.4

在yaml文件中的 增加 :–kubelet-insecure-tls 跳过TLS(生产环境不建议使用次参数

生产中建议:启用TLS Bootstrap 证书签发

containers:- args:...- --kubelet-insecure-tls

工作流程

HPA可以获取每个Pod利用率,然后和HPA中定义的指标进行对比,同时计算出需要伸缩的具体值,最后实现Pod的数量的调整。PAH属于一种Kubernetes资源对象,它通过追踪分析RC控制的所有目标Pod的负载变化情况,来确定是否需要针对性地调整目标Pod的副本数。

HorizontalPodAutoscaler 控制器访问支持扩缩的相应工作负载资源(例如:Deployment 和 StatefulSet)。 这些资源每个都有一个名为 scale 的子资源,该接口允许你动态设置副本的数量并检查它们的每个当前状态。 有关 Kubernetes API 子资源的一般信息

image

缩扩容算法:https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale/

#ceil函数表示返回大于或者等于指定表达式的最小整数
期望副本数 = ceil[当前副本数 * (当前指标 / 期望指标)]

支持指标:

resource: 核心指标,包含**cpumemory**两种(被弹性伸缩的pod对象中容器的requests和limits中定义的指标。)

object: k8s内置对象的特定指标(需自己实现适配器)

pods: 应用被弹性伸缩的pod对象的特定指标(例如,每个pod每秒处理的事务数)(需自己实现适配器)

external: 非k8s内置对象的自定义指标(需自己实现适配器)

部署测试

1.部署一个测试服务

apiVersion: apps/v1
kind: Deployment
metadata:name: php
spec:selector:matchLabels:run: php-apachereplicas: 1template:metadata:labels:run: php-apachespec:containers:- name: php-apacheimage: nginxports:- containerPort: 80resources:limits:cpu: 500mrequests:cpu: 200m
---
apiVersion: v1
kind: Service
metadata:name: php-apachelabels:run: php-apache
spec:ports:- port: 80selector:run: php

2.创建一个PHA

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:name: php-apachenamespace: default
spec:maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:averageUtilization: 10type: Utilization- type: Resourceresource:name: memorytarget:averageValue : 200Mitype: AverageValueminReplicas: 1scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: php-apache######或者通过 创建HPA
kubectl autoscale <ResouceType>  <ResourceName>  --cpu-percent=50 --min=1 --max=10
#例子:
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
#表示按照资源的百分比
metrics:- resource:name: cputarget:averageUtilization: 10type: Utilization
#如果是想采用绝对值采用
metrics:- resource:name: cputarget:averageValue : 10type: AverageValue

3.压力测试

#启动一个容器循环调用后台服务,模拟压测 http://10.233.26.224 改为后端svc地址
kubectl run -i --tty load-generator2 --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://10.233.26.224; done"

4.观察deployment 的pod的变化以及PHA的变化

#观察pha
kubectl get pha --watch 
#观察pod
kubectl get po 

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

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

相关文章

网络防御安全:2-6天笔记

第二章&#xff1a;防火墙 一、什么是防火墙 防火墙的主要职责在于&#xff1a;控制和防护。 防火墙可以根据安全策略来抓取流量之后做出对应的动作。 二、防火墙的发展 区域&#xff1a; Trust 区域&#xff0c;该区域内网络的受信任程度高&#xff0c;通常用来定义内部…

计算机中的缓存与内存

在现代计算机系统中&#xff0c;缓存和内存扮演着至关重要的角色&#xff0c;它们共同协作以实现高性能和高效率的数据处理。本文将深入探讨缓存和内存的概念、功能以及它们在计算机系统中的作用。 缓存与内存&#xff1a;概念与功能 1. 内存&#xff08;RAM&#xff09;&…

代码随想录算法训练营第三十二天| 738.单调递增的数字 ,968.监控二叉树

738.单调递增的数字 代码随想录 从后往前遍历 class Solution {public int monotoneIncreasingDigits(int n) {String s String.valueOf(n);char[] chars s.toCharArray();int start s.length();for (int i s.length() - 2; i > 0; i--) {if (chars[i] > chars[i 1…

数据库管理-第142期 DBA?DBA!(20240131)

数据库管理142期 2024-01-31 数据库管理-第142期 DBA&#xff1f;DBA&#xff01;&#xff08;20240131&#xff09;正文总结 数据库管理-第142期 DBA&#xff1f;DBA&#xff01;&#xff08;20240131&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09…

VSCode 设置代理

Open Visual Studio Code, click the settings icon in the lower left corner, and click Settings.

yii2 mongodb 操作

->where([<>,review,""]) 不等于空 $where [newstypeid>[$in>$categoryIdArr]]; 类似mysql in操作 &#xff08;$categoryIdArr是数组&#xff09; ->where([label>[$regex >赞美诗]]) 模糊搜索操作 $where [status>1,name>[$rege…

C++语法 内存区域 和 引用

代码区 存放函数体的二进制代码 由操作系统进行管理 全局区 存放全局变量和静态变量以及常量 存放全局变量 静态变量 常量&#xff08;字符串常量 全局const常量&#xff09; 栈区 由编译器自动分配释放&#xff0c;存放函数的参数值&#xff0c;局部变量等。不要返回局部…

【论文笔记】Multi-Chain Reasoning:对多思维链进行元推理

目录 写在前面1. 摘要2. 相关知识3. MCR方法3.1 生成推理链3.2 基于推理链的推理 4. 实验4.1 实验设置4.2 实验结果 5. 提及文献 写在前面 文章标题&#xff1a;Answering Questions by Meta-Reasoning over Multiple Chains of Thought论文链接&#xff1a;【1】代码链接&…

【yarn】 kill 一个spark任务

要关闭一个正在运行的Spark任务&#xff0c;你可以使用以下命令来终止执行&#xff1a; yarn application -kill <application_id>将 <application_id> 替换为你要关闭的Spark应用程序的ID。这个ID通常以 application_ 开头&#xff0c;后面跟着一串数字。 请确保…

【数据分享】1929-2023年全球站点的逐日最高气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

LRU(Least Recently Used)

在 Vue.js 中&#xff0c;<keep-alive> 组件使用了 LRU&#xff08;Least Recently Used&#xff09;算法来缓存组件。LRU 算法是一种缓存淘汰策略&#xff0c;它根据最近使用的时间来确定哪些数据被保留在缓存中。 <keep-alive> 组件是 Vue.js 提供的一个抽象组件…

Git 怎么设置用户的权限

在团队协作的软件开发中&#xff0c;对于版本控制系统Git来说&#xff0c;确保代码与数据的安全性至关重要。为了实现这一目标&#xff0c;Git提供了灵活且可定制的用户权限管理机制。下面将简单的探讨一下Git如何设置用户的权限&#xff0c;以及如何保护代码和数据。 用户身份…

Nginx 多项目部署,vue刷新404 解决方案

网上找的资料大多都解决不了&#xff0c;废话不多说直接告诉你解决方法。 环境是 TP6 VUE前端官网 VUE 后台管理 部署 两个项目 刷新 404 解决方案 Nginx 配置 直接贴图 如果解决了&#xff0c;给我顶起来&#xff0c;让更多人 快速的解决。

Elasticsearch的使用场景深入详解

Elasticsearch的使用场景深入详解 在当今数据驱动的时代&#xff0c;随着数据量的爆炸式增长&#xff0c;对于快速、高效的数据检索和分析的需求越来越迫切。Elasticsearch作为一种分布式搜索和分析引擎&#xff0c;以其强大的全文搜索、实时分析功能和易用性&#xff0c;广泛…

南京观海微电子---如何减少时序报告中的逻辑延迟

1. 引言 在FPGA逻辑电路设计中&#xff0c;FPGA设计能达到的最高性能往往由以下因素决定&#xff1a; ▪ 工作时钟偏移和时钟不确定性&#xff1b; ▪ 逻辑延迟&#xff1a;在一个时钟周期内信号经过的逻辑量&#xff1b; ▪ 网络或路径延迟&#xff1a;Vivado布局布线后引…

取出list中指定数量数据操作,操作完了删除这些数据

直接看代码吧,有注释 package com.ep.crm.task;import java.util.ArrayList; import java.util.List; import java.util.Random;public class Test {public static void main(String[] args) {List<String> list new ArrayList<String>();// 生成随机整数Random …

element-ui button 组件源码分享

element-ui button 源码分享&#xff0c;基于对源码的理解&#xff0c;编写一个简单的 demo&#xff0c;主要分三个模块来分享&#xff1a; 一、button 组件的方法。 1.1 在方法这块&#xff0c;button 组件内部通过暴露 click 方法实现&#xff0c;具体如下&#xff1a; 二、…

智睦云打印:无代码开发,API集成,助力电商平台运营

无缝连接&#xff1a;智睦云打印的跨平台兼容性 智睦云打印是一款创新型的打印管理软件&#xff0c;通过云共享打印和设备管控功能&#xff0c;能实现不同架构的跨平台兼容性。无论是X86/64&#xff0c;ARM&#xff0c;MIPS还是国产龙芯系统&#xff0c;智睦云打印都能提供稳定…

如何使用 Supabase Auth 在您的应用程序中设置身份验证

在本文中&#xff0c;您将学习基本的关键概念&#xff0c;这些概念将帮助您掌握身份验证和授权的工作原理。 您将首先了解什么是身份验证和授权&#xff0c;然后了解如何使用 Supabase auth 在应用程序中实现身份验证。 &#xff08;本文内容参考&#xff1a;java567.com&…

Open CASCADE学习|球面上曲线长度计算

球和球面是数学和物理学中非常重要的概念&#xff0c;它们在许多领域都有广泛的应用。 球面是指所有与固定点等距离的点的集合&#xff0c;这个固定点被称为球心&#xff0c;而这个等距离的长度就是球的半径。球面是一个二维曲面&#xff0c;它是三维空间中点与距离之间关系的…