k8s---pod的水平自动伸缩HPA

HPA:Horizontal Pod Autoscaling是pod的水平自动伸缩。是k8s自带的模块

pod占用CPU的比率到达一定的阈值会触发伸缩机制。

replication controller:副本控制器。控制pod的副本数

deployment controller:节点控制器。部署pod

hpa控制副本的数量以及控制如何部署pod

  1. hpa基于kube-controller-manager服务。周期性检测pod的cpu使用率,默认是30秒

  1. hpa和replication controller以及deployment controller都属于k8s的资源对象。通过跟踪分析副本控制器和deployment的pod负载变化。针对性的调整目标副本数。

阀值:正常情况下,pod的副本数,以及达到阀值之后,pod的扩容最大数量。

  1. metrics-server部署到集群中

实验部署

将metrics-server传入每个节点
docker load -i metrics-server.tarmaster01---
kubectl apply -f components.yaml
vim hpa-test.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: centos-testlabels:test: centos1
spec:replicas: 1selector:matchLabels:test: centos1template:metadata:labels:test: centos1spec:containers:- name: centosimage: centos:7command: ["/bin/bash", "-c", "yum -y install epel-release;yum -y install stress;sleep 3600"]resources:limits:cpu: 1000mmemory: 512Mi
#设置资源限制。使用hpa必须添加资源限制字段,否则无法判断---apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:name: hpa-centos
spec:scaleTargetRef:apiVersion: apps/v1
#表示需要监控的类型是什么,基于什么控制器创建的kind: Deploymentname: centos-test
#这里表示你需要监控谁minReplicas: 1
#表示最小有几个maxReplicas: 5
#超过副本最大有几个targetCPUUtilizationPercentage: 50
#设定cpu使用的阀值kubectl apply -f hpa-test.yaml

进入容器使容器占满2个cpu测试

此时停止扩充测试缩容

HPA的规则

  1. 定义pod的时候必须要有资源限制,否则HPA无法进行监控

  2. 扩容是即时的,只要超过阀值就会立刻扩容,不是立刻扩容到最大副本数。他会在最小值和最大值波动,如果扩容数量满足了需求,则不会在扩容。

  3. 缩容是缓慢的。如果业务的峰值较高,回收的策略太积极的话,可能会产生业务的崩溃。

周期性的获取数据,缩容的机制问题。

如果业务的峰值较高,回收的策略太积极的话,可能会产生业务的崩溃。

pod的副本数扩缩容有两种方式:

1、 手动的方式修改控制器的副本数。

  1. 命令行可以通过 kubectl scale deployment pod名称 --replicas=5

  2. 修改yaml文件。通过apply -f部署更新

2、 自动扩缩容HPA

hpa监控的是cpu

资源限制

pod的资源限制:在部署pod的时候加入resources字段,通过limits/request来对pod进行限制。

除了pod的资源限制还有命名空间的资源限制

命名空间资源限制

如果你有一个lucky-cloud项目部署在test1的命名空间。如果lucky-cloud不做限制或者命名空间不做限制,他依然会占满所有集群资源。

k8s集群部署pod的最大数量:1万个

实验举例:

vim ns.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: centos-test2namespace: test1labels:test: centos2
spec:replicas: 11selector:matchLabels:test: centos2template:metadata:labels:test: centos2spec:containers:- name: centosimage: centos:7command: ["/bin/bash", "-c", "yum -y install epel-release;yum -y install stress;sleep 3600"]resources:limits:cpu: 1000mmemory: 512Mi---apiVersion: v1
kind: ResourceQuota
metadata:name: ns-resourcenamespace: test1
spec:hard:
#硬限制pods: "10"
#表示在这个命名空间内只能部署10个podrequests.cpu: "2"
#最多只能占用多个个cpurequests.memory: 1Gi
#最多只能占用多少内存limits.cpu: "4"
#最大需要多少cpulimits.memory: 2Gi
#最大需要多少内容configmaps: "10"
#当前命名空间内能创建最大的configmap的数量 10个persistentvolumeclaims: "4"
#当前命名空间只能使用4个pvcsecrets: "9"
#创建加密的secrets。只能9个services: "5"
#创建service只能5个services.nodeports: "2"
#nodeport类型的svc只能2个

设置副本数为11个测试。当命名空间限制了之后,最多只能部署10个

kubectl describe ns test1
#查看命名空间的限制

通过命名空间的方式对容器进行限制

实验举例:

vim ns2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: centos-testnamespace: test2labels:test: centos2
spec:replicas: 1selector:matchLabels:test: centos1template:metadata:labels:test: centos1spec:containers:- name: centosimage: centos:7command: ["/bin/bash", "-c", "yum -y install epel-release;yum -y install stress;sleep 3600"]---apiVersion: v1
kind: LimitRange
#表示使用limitrange来进行资源控制的类型
metadata:name: test2-limitnamespace: test2
spec:limits:- default:memory: 512Micpu: "1"defaultRequest:memory: 256Micpu: "0.5"type: Container
#对所有部署在这个命名空间内的容器统一进行资源限制
#default: limit
#defaultRequest: request
#type: Container、Pod、Pvc都可以

通过命名空间对pod进行统一限制:

好处是不需要对每个pod进行限制

缺点是不够灵活

HPA自动伸缩如果使用nodeName的方式将固定在一个node上观察扩容之后,阀值是否会下降?

实验举例:

apiVersion: apps/v1
kind: Deployment
metadata:name: centos-testlabels:test: centos1
spec:replicas: 1selector:matchLabels:test: centos1template:metadata:labels:test: centos1spec:containers:- name: centosimage: centos:7command: ["/bin/bash", "-c", "yum -y install epel-release;yum -y install stress;sleep 3600"]resources:limits:cpu: 1000mmemory: 512MinodeName: node01
#设置资源限制。使用hpa必须添加资源限制字段,否则无法判断---apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:name: hpa-centos
spec:scaleTargetRef:apiVersion: apps/v1
#表示需要监控的类型是什么,基于什么控制器创建的kind: Deploymentname: centos-test
#这里表示你需要监控谁minReplicas: 1
#表示最小有几个maxReplicas: 5
#超过副本最大有几个targetCPUUtilizationPercentage: 50
#设定cpu使用的阀值

占满第二个pod测试

他们都处在同一个节点上

查看是阀值是否会下降

测试即使在同一个node节点上阀值还是会下降。实验完成

总结

HPA自动扩缩容

命名空间的两种方式:

  1. ResourceQuota:可以对命名空间进行资源限制

  2. LimitRange:直接声明在命名空间中创建的pod,容器的资源限制。这是一种统一限制。所有的pod都受这个条件的制约。

只要是在命名空间内不管创建多少,都需要使用我声明的资源限制。

pod的资源限制:resources、limit

  1. pod的资源限制是我们创建时候声明好的,这时必加选项。

  1. 对命名空间、使用cpu、内存一定会做限制

命名空间的资源限制:ResourceQuota

  1. 一般是对命名空间的cpu和内存做限制

命名空间统一资源限制:LimitRange

核心:pod一定要做资源限制否则会占用集群的全部资源,命名空间也需要做限制否则还是会占用集群的全部资源。防止整个集群的资源被一个服务或者一个命名空间占满。

HPA自动伸缩

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

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

相关文章

怎么他们都有开源项目经历|手把手教你参与开源

一、前言 大家好,这里是白泽。有一些同学提问,希望在自己的简历上增加一些有含金量的项目经历,最好能够去参与一些开源项目的开发,但由于对一个庞大的开源项目缺乏认知,难以着手。同时也担心自己能力不足,…

亚信安慧AntDB:AntDB-M元数据锁之锁的获取(三)

5 锁的获取 5.1 锁的强弱 当线程已经持有的锁比新申请的锁更强时,认为已经持有了锁,无需再对申请锁类型加锁。锁的强弱指持有的锁与其他锁的不兼容集合大小,集合相同锁相同,集合更大锁更强,否则无强弱关系。通过锁的…

C++——fstream文件读写操作

文件类型 文本文件 - 文件以文本的ASCII码形式存储在计算机中 二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们 操作文件类 ofstream:写操作 ifstream: 读操作 fstream : 读写操作 文件打开方…

php比较运算,强相等(===)弱相等(==)表

弱相等() 符号为: 规则为:只比较值,不比较类型,只要值对就为true 样例:比较整型123和字符串"123",运行结果给出了true 弱相等表:* 代表在 PHP 8.0.0 之前为…

leetcode 刷题2

二分查找的绝妙运用&#xff1a; 看到有序数列&#xff0c;算法复杂度 0033. 搜索旋转排序数组 class Solution { public:int search(vector<int>& nums, int target) {int left 0;int right nums.size() - 1;while (left < right) {int mid left (right - …

SQL提示与索引终章

✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL-进阶篇 &#x1f4dc; 感谢大家的关注&#xff01; ❤️ 可以关注黑马IT&#xff0c;进行学习 目录 &#x1f680;SQL提示 &#x1f680;覆盖索引 &#x1f680;前缀索引 &…

如何生成开发语言的排名图表

1、解释说明 生成开发语言排名图表&#xff0c;通常需要以下几个步骤&#xff1a; - 首先&#xff0c;我们需要收集一些关于不同编程语言的统计数据&#xff0c;例如使用人数、市场份额等。这些数据可以从各种来源获取&#xff0c;例如网站、报告、数据库等。 - 然后&#x…

.NET国产化改造探索(六)、银河麒麟操作系统中安装多个.NET版本

随着时代的发展以及近年来信创工作和…废话就不多说了&#xff0c;这个系列就是为.NET遇到国产化需求的一个闭坑系列。接下来&#xff0c;看操作。 上一篇文章介绍了如何在银河麒麟操作系统上&#xff0c;使用Nginx.NET程序实现自启动。本文介绍下如何在一个环境中&#xff0c;…

<蓝桥杯软件赛>零基础备赛20周--第16周--GCD和LCM

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周。 在QQ群上交流答疑&am…

深度学习技术栈 —— Pytorch之TensorDataset、DataLoader

深度学习技术栈 —— Pytorch之TensorDataset、DataLoader 前言一、TensorDataset、DataLoader的用法&#xff1f;二、从.csv文件-->tensor张量总结 前言 简单来说&#xff0c;TensorDataset与DataLoader这两个类的作用&#xff0c; 就是将数据读入并做整合&#xff0c;以便…

解决 ssh: connect to host github.com port 22: Connection timed out

问题 今天使用git克隆github上的代码时&#xff0c;一直报错 原以为是公钥过期了&#xff0c;就尝试修改配置公钥&#xff0c;但是尝试了几次都不行&#xff0c;最终在博客上找到了解决方案&#xff0c;在次记录一下&#xff0c;以备不时之需 解决ssh-connect-to-host-github…

代码随想录算法训练57 | 动态规划part17_总结篇

647. 回文子串 动态规划解决的经典题目&#xff0c;如果没接触过的话&#xff0c;别硬想 直接看题解。 代码随想录 516.最长回文子序列 647. 回文子串&#xff0c;求的是回文子串&#xff0c;而本题要求的是回文子序列&#xff0c; 大家要搞清楚两者之间的区别。 代码随想…

前端文件上传(文件上传,分片上传,断点续传)

普通文件上传 思路&#xff1a; 首先获取用户选择的文件对象&#xff0c;并将其添加到一个 FormData 对象中。然后&#xff0c;使用 axios 的 post 方法将 FormData 对象发送到服务器。在 then 和 catch 中&#xff0c;我们分别处理上传成功和失败的情况&#xff0c;并输出相应…

解决Milo连接OPU UA报错的两个常见报错

报错一 UaException: status=Bad_Timeout, message=io.hg_netty.channel.ConnectTimeoutException: 项目opu ua所在服务器内网地址是192.168.111.14 对外映射地址是172.16.105.161 Endpoint url的地址是:opc.tcp://172.16.105.161:8888 使用milo-0.6.11连接出现: 连接opc…

openssl3.2/test/certs - 022 - CA has 768-bit key

文章目录 openssl3.2/test/certs - 022 - CA has 768-bit key概述笔记END openssl3.2/test/certs - 022 - CA has 768-bit key 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 // \file my_openssl_linux_log_doc_022.txt // \note openssl3.2/test/certs - 022 - CA…

Java零基础学习19:集合

编写博客目的&#xff1a;本系列博客均根据B站黑马程序员系列视频学习和编写目的在于记录自己的学习点滴&#xff0c;方便后续回忆和查找相关知识点&#xff0c;不足之处恳请各位有缘的朋友指正。 一、集合和数组的对比 数组和集合很相似&#xff0c;但集合只能存储引用数据类…

SaaS中的智能搜索:提升用户体验与数据发现的关键

在当今信息爆炸的时代&#xff0c;对于SaaS应用来说&#xff0c;提供高效、智能的搜索功能变得至关重要。智能搜索不仅能够帮助用户迅速找到所需信息&#xff0c;还能促进数据发现、提高工作效率。本文将深入探讨SaaS中智能搜索的重要性以及实现智能搜索的关键技术。 智能搜索…

Ask for Power Apps 消失了?

Ask for Power Apps 消失了? 背景替换定义一个接收数组的参数1.我们新建一个Text接收参数取名为**Arrlist**.定义一个参数类型是Array 背景 今天才发现&#xff0c;我在flow中想向power apps索要一个参数&#xff0c;但是之前的Ask for Power Apps 这个触发器怎么也找不到了。…

Aloha原理以及代码分析参考资料链接汇总

平台&#xff1a;CSDN Mobile Aloha 【软硬件原理代码解析】 作者&#xff1a;Yuezero_ Aloha 机械臂的学习记录3——AWE&#xff1a;Pycharm运行代码记录 作者&#xff1a;随机惯性粒子群 【EAI 007】Mobile ALOHA&#xff1a;一个低成本的收集人类示教数据的双臂移动操作硬…

2023 IoTDB Summit:中核武汉核电运行技术股份有限公司主管工程师方华建《IoTDB在核电数字化转型过程的应用实践》...

12 月 3 日&#xff0c;2023 IoTDB 用户大会在北京成功举行&#xff0c;收获强烈反响。本次峰会汇集了超 20 位大咖嘉宾带来工业互联网行业、技术、应用方向的精彩议题&#xff0c;多位学术泰斗、企业代表、开发者&#xff0c;深度分享了工业物联网时序数据库 IoTDB 的技术创新…