Kubernetes/k8s之HPA,命名空间资源限制

Horizontal Pod Autoscaling:po的水平自动伸缩

这是k8s自带的模块

pod占用cpu比例达到一定的阀值,会触发伸缩机制。

根据cpu的阀值触发伸缩机制

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

deployment controller 节点控制器 部署pod

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

1、hpa基于kube-controll-manager服务,周期性的检测pod的cpu使用率,默认30秒检测一次

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

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

3、组件:metrics-server 部署到集群中,对外提供度量的数据

HPA的规则:

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

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

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

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

HPA的部署运用

进行HPA的部署设置


//在所有 Node 节点上传 metrics-server.tar 镜像包到 /opt 目录
cd /opt/
docker load -i metrics-server.tar#在主master节点上执行
kubectl apply -f components.yaml

HPA伸缩的测试演示

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: "1"memory: 512Mi
---
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:name: hpa-centos7
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: centos-testminReplicas: 1maxReplicas: 5metrics:- type: Resourceresource:name: cputargetAverageUtilization: 50

命名空间资源限

ResourceQuota:命名空间进行资源限制

apiVersion: apps/v1
kind: Deployment
metadata:name: centos-test1namespace: test1labels:test: centos2
spec:replicas: 6selector:matchLabels:test: centos2template:metadata:labels:test: centos2spec:nodeSelector:kubernetes.io/hostname: node01containers:- name: centosimage: centos:7command: ["/bin/bash", "-c", "yum -y install epel-release;yum -y install stress;sleep 3600"]resources:limits:cpu: "1"memory: 512Mi
---
apiVersion: v1
kind: ResourceQuota
metadata:name: ns-resourcenamespace: test1
spec:hard:pods: "10"requests.memory: 1Gilimits.cpu: "4"limits.memory: 2Giconfigmaps: "10"
#在当前这个命名空间能创建最大configmap数量10个persistentvolumeclaims: "4"
#当前命名空间只能使用4个pvcsecrets: "9"
#创建贾母的secret只能9个services: "5"
#创建service个数只能五个services.nodeports: "2"
#创建nodeport类型的svc只能两个

只能在命名空间创建两个service第三个就不创建了因为限制了最多只能创建两个

第二种LimitRange

apiVersion: apps/v1
kind: Deployment
metadata:name: centos-test3namespace: test3labels:test: centos3
spec:replicas: 1selector:matchLabels:test: centos3template:metadata:labels:test: centos3spec:containers:- name: centos3image: centos:7command: ["/bin/bash", "-c", "yum -y install epel-release;yum -y install stress;sleep 3600"]
---apiVersion: v1
kind: LimitRange
metadata:name: test3-limitnamespace: test3
spec:limits:- default:memory: 512Micpu: "1"defaultRequest:memory: 256Micpu: "0.5"type: Container

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

1、手动方式kubectl scale deployment nginx1 --replicas=5,kubectl edit,修改yaml文件 apply -f

2、自动扩缩容 hpa 监控指标是cpu和内存没关系

资源限制

pod资源限制

命名空间资源限

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

k8s集群部署pod的最大数量:10000

busybox:就是服务最小化的centos 4M

哪些服务会部署在k8s当中

中间件 kafka: 6

redis: 3

选好节点 用nodeName固定在一个pod上,扩容之后阀值是否会下降

apiVersion: apps/v1
kind: Deployment
metadata:name: centos-test8labels:test: centos8
spec:replicas: 3selector:matchLabels:test: centos8template:metadata:labels:test: centos8spec:nodeSelector:kubernetes.io/hostname: node01containers:- name: centos8image: centos:7command: ["/bin/bash", "-c", "yum -y install epel-release;yum -y install stress;sleep 3600"]resources:limits:cpu: "2"memory: 512Mi
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:name: hpa-centos7
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: centos-test8minReplicas: 1maxReplicas: 5targetCPUUtilizationPercentage: 50

总结

HPA的自动扩缩容

命令空间两种方式

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

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

pod资源限制 一般是我们创建的时候声明好的,必加选项

resources

limit

命名空间资源限制:对命名空间使用cpu和内存一定会做限制通过

核心:防止整个集群的资源被一个服务或者一个命名空间沾满

ResourceQuata

命名空间统一资源限制在pod LimitRange

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

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

相关文章

cmd输入python直接弹出windows应用商店

明明已经安装好了python,并且也确认配置好了python的环境变量,但是在cmd里输入python后,直接弹出windows商店,python获取界面,其实只需要关闭系统里的应用执行别名设置,最近出来的电脑系统里是自带开启了py…

初探 ret2libc

文章目录 ret2libc构建思路x86amd64第一阶段获取 libc 版本 ret2libc 这次我们又碰到新问题了,假如程序没有 system 函数和 /bin/sh 怎么办? system,/bin/sh 可以去 libc 里找,libc是Linux新系统下的C函数库,其中就会有system(…

macOS磁盘管理工具Paragon Hard Disk Manager,轻松且安全的改变磁盘分区

Paragon Hard Disk Manager mac版是Macos上一款磁盘管理工具,可以帮助你轻松而且安全的随意改变磁盘分区的大小和各种分区参数,作为mac磁盘分区工具也是游刃有余,同时在找回数据的时候也非常容易,并且不会损坏原来的数据&#xff…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第3章 k邻近邻法

文章目录 第3章 k邻近邻法3.1 k近邻算法3.2 k近邻模型3.2.1 模型3.2.2 距离度量3.2.3 k值的选择3.2.4 分类决策规则 3.3 k近邻法的实现:kd树3.3.1 构造kd树3.3.2 搜索kd树 算法实现课本例3.1iris数据集scikit-learn实例kd树:构造平衡kd树算法例3.2 《统计学习方法&a…

生产力工具|卸载并重装Anaconda3

一、Anaconda3卸载 (一)官方方案一(Uninstall-Anaconda3-不能删除配置文件) 官方推荐的方案是两种,一种是直接在Anaconda的安装路径下,双击: (可以在搜索栏或者使用everything里面搜…

ClickHouse与Doris数据库比较

概述 都说“实践是检验真理的唯一标准”,光说不练假把式,那么本文就通过实际的测试来感受一下Doris和clickhouse在读写方面的性能差距,看看Doris盛名之下,是否真有屠龙之技;clickhouse长锋出鞘,是否敢缚苍…

头条文章采集ChatGPT4.0改写软件环境配置教程步骤

大家好,我是淘小白~ 下面给大家整理一下,ChatGPT4.0改写软件环境配置教程 下面是我们拿到的环境配置软件,分别是:117版本的谷歌浏览器,谷歌浏览器驱动,notepad(用于打开config.ini&#xff0c…

Dify学习笔记-手册(三)

1、应用构建及提示词 在 Dify 中,一个“应用”是指基于 GPT 等大型语言模型构建的实际场景应用。通过创建应用,您可以将智能 AI 技术应用于特定的需求。它既包含了开发 AI 应用的工程范式,也包含了具体的交付物。 简而言之,一个应…

Transformer and Pretrain Language Models3-4

Transformer structure 模型结构 Transformer概述 首先回顾一下之前的RNN的一个端到端的模型,以下是一个典型的两层的LSTM模型,我们可以发现,这样一个RNN模型,一个非常重要的一个缺点就在于,它必须顺序地执行&#x…

【高效开发工具系列】Intellj IDEA 2023.3 版本

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

MyBatis的核心对象、核心配置文件、映射文件中常用元素的处理以及代码演示

学习视频:2001 SqlSessionFactoryBuilder对象_哔哩哔哩_bilibili 目录 1.1为什么学 1.2 MyBatis核心对象 SqlSessionFactoryBuilder 多个重载build()方法 代码 使用单例模式创建SqlSessionFactory对象 SqlSessionFactory SqlSessionFactor…

RocketMQ的一万字全面总结,带你快速入门消息队列

前言 近日偶然聊起消息队列,发现知识模糊又破碎,遂广泛查询资料,做了这么一篇非常浅显的总结,聊以充作入门参考资料吧。 下面几个问题,如果不能回答地很好,可以试着在文中找寻一下答案。(答案…