首页 > 其他分享 >第五章 k8s Pod水平自动缩放

第五章 k8s Pod水平自动缩放

时间:2022-11-13 21:00:24浏览次数:65  
标签:name 缩放 metrics nginx https deployment Pod k8s hpa

官网

​https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale/​

原理

基本原理:HPA 通过监控分析控制器控制的所有 Pod 的负载变化情况来确定是否需要调整 Pod 的副本数量

HPA的实现有两个版本:

  • autoscaling/v1,只包含了根据CPU指标的检测,稳定版本
  • autoscaling/v2,支持根据memory或者用户自定义指标进行伸缩

第五章 k8s Pod水平自动缩放_nginx


部署教程

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

开始部署hpa

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.1/components.yaml


hap部署验证

kubectl top pod  # 查看pod资源使用
kubectl top node # 查看node资源使用


创建hpa

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa-mem
namespace: test # 跟要自动伸缩的deploy要在同一个命名空间
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment # 这里指定要自动伸缩的deployment的名字
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa-cpu
namespace: test # 跟要自动伸缩的deploy要在同一个命名空间
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment # 这里指定要自动伸缩的deployment的名字
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 80


查看结果

kubectl describe deployment nginx-deployment -n test
kubectl describe hpa nginx-hpa-mem -n test
kubectl describe hpa nginx-hpa-cpu -n test


注意事项

Deployment对象必须配置requests的参数,不然无法获取监控数据,也无法通过HPA进行动态伸缩

标签:name,缩放,metrics,nginx,https,deployment,Pod,k8s,hpa
From: https://blog.51cto.com/yht1990/5847959

相关文章

  • K8s系列---【K8s常用命令】
    K8s常用命令1.查看所有node节点状态kubectlgetnodeskubectlgetnode-A 2.查看所有pod状态#查看所有命名空间下的podkubectlgetpod-A#默认查看default......
  • 【故障公告】15:05-15:20 期间更换 k8s 节点引发博客站点故障
    今天15:00左右在更换k8s集群的一台节点服务器的过程中,部署在k8s集群上的redis集群宕机,造成15:05-15:20期间无法正常访问博客站点,由此给您带来麻烦,请您谅解。我......
  • 第一章第2节: 云原生 & k8s的架构及基本组件原理
                                   ......
  • k8S中部署Filebeat+ELK日志系统
    一.概述ELK是三个开源软件的缩写,分别表示:Elasticsearch,Logstash,Kibana,它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat......
  • K8s 生产最佳实践-限制 NameSpace 资源用量
    前言想象一下这个场景:多个系统运行在同一套K8s集群上,有重要系统,也有不太重要的系统。但是某一天,某个不重要的系统突然占用了该K8s集群的所有资源,导致该集群上的其他系......
  • k8s1.15版本漏洞修复
    用iptables来做1、允许本机、pod的IP段、各k8s集群的主机IP段访问,其他一律不允许访问。举例如下sudo iptables -AINPUT-s 127.0.0.1 --dport -j ACCEPTsu......
  • k8s之Pod详解(一)
    Pod介绍Pod结构每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类:-用户程序所在的容器,数量可多可少-Pause容器,这是每个Pod都会有的一个根容器,它的作用有......
  • k8s单节点和多节点部署
    k8s单节点部署参考文档https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.13.md#downloads-for-v1131https://kubernetes.io/docs/home/?path=users&pe......
  • 【云原生】Minio on k8s 讲解与实战操作
    目录一、概述二、开始编排部署1)下载chart包2)构建镜像3)修改yaml编排4)开始部署5)测试验证6)卸载一、概述MinIO是在GNUAffero通用公共许可证v3.0下发布的高性能对象存......
  • 用kubeadm安装k8s(使用containerd作为runc)
    1、从github下载下来containerdhttps://github.com/containerd/containerd/releases/tag/v1.6.8 2、解压并将文件直接复制进去/usr/local/bin/tarxvfcontainerd-1.......