kubernetes自动扩缩容[HPA控制器 horizontal pod autoscaler]
kubernetes自动扩缩容[HPA控制器 horizontal pod autoscaler]
#查看当前hpa控制器版本:
[root@k8s-master01 ~]# kubectl get apiservices |grep autosca
v1.autoscaling Local True 17d
v2beta1.autoscaling Local True 17d
v2beta2.autoscaling Local True 17d
#版本区别
v1.autoscaling : v1是稳定版本,支持自定义cpu指标
v2beta1.autoscaling : v2bata版本,v2beta1{支持cpu,内存和自定义指标}
v2beta2.autoscaling : v2beta2版本(支持cpu,内存,自定义指标 custom和额外指标ExternalMerics)

HPA实践
#注意: daemonset是不支持自动扩容的 因为他是在每一个节点部署一个服务,无法自动扩缩容
#使用HPA的前提,必须安装metrics-server或同等效果的服务器指标采集插件
#必须配置requests
#命令创建一个deployment
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort
#1. 创建一个deployment,并暴露service端口80
kubectl create deployment hpa-nginx --image=registry.cn-beijing.aliyuncs.com/dotbalo/nginx --dry-run=client -oyaml >hpa-nginx.yaml
#2. 添加resources参数:
resources:
cpu: 10m
# hpa-nginx.yaml 整个结果如下:
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: hpa-nginx
name: hpa-nginx
spec:
replicas: 1
selector:
matchLabels:
app: hpa-nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: hpa-nginx
spec:
containers:
- image: registry.cn-beijing.aliyuncs.com/dotbalo/nginx
name: nginx
resources:
resources:
cpu: 10m
status: {}
#3.yaml保存为 hpa-nginx.yaml 并执行
[root@k8s-master01 pod]# kubectl create -f hpa-nginx.yaml
deployment.apps/hpa-nginx created
#3. 查看deployment状态
[root@k8s-master01 pod]# kubectl get pod -o wide
NAME READY STATUS REST AGE IP NODE NOMINATED NODE READINESS GATE
hpa-nginx-w 1/1 Running 0 2m3s 172.27.14.232 k8s-node02 <none> <none>
#4 检查访问
[root@k8s-master01 pod]# curl 172.27.14.232
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
#5. 检查pod状态指标
[root@k8s-master01 pod]# kubectl top pod --use-protocol-buffers
NAME CPU(cores) MEMORY(bytes)
hpa-nginx-58ddb65c8d-mvt9f 0m 4Mi
nginx-server 0m 9Mi
web-0 0m 9Mi
web-1 0m 10Mi
web-2 0m 10Mi
# 6. 添加自动扩缩容配置
[root@k8s-master01 pod]# kubectl autoscale deployment hpa-nginx --cpu-percent=10 --min=1 --max=10
horizontalpodautoscaler.autoscaling/hpa-nginx autoscaled
#检查配置:
[root@k8s-master01 pod]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-nginx Deployment/hpa-nginx 0%/10% 1 10 1 2m5s
[root@k8s-master01 pod]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hpa-nginx 1/1 Running 0 13m 172.27.14.232 k8s-node02 <none> <none>
nginx-server 1/1 Running 0 114m 172.17.125.21 k8s-node01 <none> <none>
web-0 1/1 Running 0 28h 172.17.125.35 k8s-node01 <none> <none>
web-1 1/1 Running 0 28h 172.27.14.233 k8s-node02 <none> <none>
web-2 1/1 Running 0 28h 172.27.14.226 k8s-node02 <none> <none>
#另外开启一个窗口 开始压力测试
while true; do wget -q -O- http://172.27.14.232 > /dev/null; done
# 隔一段时间 检查压力:
[root@k8s-master01 pod]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-nginx Deployment/hpa-nginx 750%/10% 1 10 8 18m
#检查hpa扩缩容得情况:
[root@k8s-master01 pod]# kubectl get pod
NAME READY STATUS RESTARTS AGE
hpa-nginx-58ddb65c8d-68tf9 1/1 Running 0 47s
hpa-nginx-58ddb65c8d-99rdt 1/1 Running 0 47s
hpa-nginx-58ddb65c8d-c64h2 1/1 Running 0 47s
hpa-nginx-58ddb65c8d-ddzhs 1/1 Running 0 32s
hpa-nginx-58ddb65c8d-lg62l 1/1 Running 0 47s
hpa-nginx-58ddb65c8d-mvt9f 1/1 Running 0 28m
hpa-nginx-58ddb65c8d-p257w 1/1 Running 0 62s
hpa-nginx-58ddb65c8d-pxdv8 1/1 Running 0 62s
hpa-nginx-58ddb65c8d-q4cwc 1/1 Running 0 62s
hpa-nginx-58ddb65c8d-wkkn8 1/1 Running 0 32s
nginx-server 1/1 Running 0 129m
web-0 1/1 Running 0 28h
web-1 1/1 Running 0 28h
web-2 1/1 Running 0 28h
#已经自动扩容了
[root@k8s-master01 pod]# kubectl get pod -o wide
NAME READY STATUS RESTARTS IP NODE NOMINATED READINESS GATES
hpa-nginx-68tf9 1/1 Running 0 103s 172.27.14.197 k8s-node02 <none> <none>
hpa-nginx-99rdt 1/1 Running 0 103s 172.17.125.19 k8s-node01 <none> <none>
hpa-nginx-c64h2 1/1 Running 0 103s 172.27.14.240 k8s-node02 <none> <none>
hpa-nginx-ddzhs 1/1 Running 0 88s 172.17.125.32 k8s-node01 <none> <none>
hpa-nginx-lg62l 1/1 Running 0 103s 172.17.125.33 k8s-node01 <none> <none>
hpa-nginx-mvt9f 1/1 Running 0 29m 172.27.14.232 k8s-node02 <none> <none>
hpa-nginx-p257w 1/1 Running 0 118s 172.17.125.6 k8s-node01 <none> <none>
hpa-nginx-pxdv8 1/1 Running 0 118s 172.17.125.7 k8s-node01 <none> <none>
hpa-nginx-q4cwc 1/1 Running 0 118s 172.27.14.235 k8s-node02 <none> <none>
hpa-nginx-wkkn8 1/1 Running 0 88s 172.27.14.237 k8s-node02 <none> <none>
kubernetes自动扩缩容[HPA控制器 horizontal pod autoscaler]的更多相关文章
- 三十三、HPA实现自动扩缩容
通过HPA实现业务应用的动态扩缩容 HPA控制器介绍 当系统资源过高的时候,我们可以使用如下命令来实现 Pod 的扩缩容功能 $ kubectl -n luffy scale deployment m ...
- Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler
Knative Serving 默认情况下,提供了开箱即用的快速.基于请求的自动扩缩容功能 - Knative Pod Autoscaler(KPA).下面带你体验如何在 Knative 中玩转 Au ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十一)——一步一步教你如何撸Dapr之自动扩/缩容
上一篇我们讲到了dapr提供的bindings,通过绑定可以让我们的程序轻装上阵,在极端情况下几乎不需要集成任何sdk,仅需要通过httpclient+text.json即可完成对外部组件的调用,这样 ...
- minikube metrics-server HPA 自动扩缩容错误
minikube metrics-server pod 错误 启动 minikube addons enable metrics-server 之后查看 metrics-server pod 会有如下 ...
- Marathon自动扩缩容(marathon-lb-autoscale)
我们在服务里面创建如下的应用(以下是创建完复制过来的json): { "id": "/nginxtest", "cmd": null, &q ...
- 13.深入k8s:Pod 水平自动扩缩HPA及其源码分析
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 Pod 水平自动扩缩 Pod 水平自动扩缩工作原理 Pod 水平自动 ...
- 【六】K8s-Pod 水平自动扩缩实践(简称HPA)
一.概述 Pod 水平自动扩缩(Horizontal Pod Autoscaler)简称 HPA,HPA 可以根据 CPU 利用率进行自动伸缩 Pod 副本数量,除了 CPU 利用率,也可以基于其他应 ...
- 从零入门 Serverless | Serverless Kubernetes 应用部署及扩缩容
作者 | 邓青琳(轻零) 阿里云技术专家 导读:本文分为三个部分,首先给大家演示 Serverless Kubernetes 集群的创建和业务应用的部署,其次介绍 Serverless Kuberne ...
- Kubernetes的垂直和水平扩缩容的性能评估
Kubernetes的垂直和水平扩缩容的性能评估 译自:Performance evaluation of the autoscaling strategies vertical and horizo ...
- Kubernetes 监控:Prometheus Adpater =》自定义指标扩缩容
使用 Kubernetes 进行容器编排的主要优点之一是,它可以非常轻松地对我们的应用程序进行水平扩展.Pod 水平自动缩放(HPA)可以根据 CPU 和内存使用量来扩展应用,前面讲解的 HPA 章节 ...
随机推荐
- redis 简单整理——发布与订阅[十四]
前言 简单介绍一下redis的发布与订阅. 正文 Redis提供了基于"发布/订阅"模式的消息机制,此种模式下,消息发布 者和订阅者不进行直接通信,发布者客户端向指定的频道(cha ...
- burp suite历程-安装burp suite
安装时,捯饬了快一上午,不是jdk高了就是装上后不好使了,后来看了下以下文章,安装成功,特此记录以备不时之需: 内容拷贝至链接:https://juejin.cn/post/6844904111867 ...
- 如何实现数据库数据到Abp vnext实体对象的同步?以及代码生成工具
在采用了EF Core的Code First方式下,如果你在数据库中直接添加了新表或存储过程,你需要在项目代码中手动反向工程这些数据库的更改,以保持Code First的代码与数据库同步.这种情况可以 ...
- 用积木讲运维,这样的IT人太会了
简介: 日志服务SLS提供数据采集.加工.分析.告警可视化与投递功能,为AIOps.大数据分析.运营服务.大数据安全等场景提供支撑,并能以搭积木的方式适配各类运维场景,辅助企业的IT决策.近日,日志服 ...
- EMR重磅发布智能运维诊断系统(EMR Doctor)——开源大数据平台运维利器
简介: E-MapReduce 推出面向开源大数据集群的智能运维诊断系统 E-MapReduce Doctor,有效提升大数据集群运维效率,辅助 EMR 用户完善集群监控体系. 大数据运维的挑战-如何 ...
- Alibaba Cloud Linux 2 LTS 正式发布,提供更高性能和更多保障
Alibaba Cloud Linux 2 LTS版本发布后,阿里云将会为该版本提供长达5年的软件维护.问题修复服务.从2019-03-27开始到2024-03-31结束.包括: 免费的服务和支持:A ...
- 如何做好技术 Team Leader?
简介: 作为一个技术TL(Team Leader),除了自身技能,还会面临诸多团队管理上的困难和挑战.如何定义和明确团队的目标?怎样建立优秀的工程文化?让团队长期发挥战斗力和创新能力的核心是什么?本文 ...
- [GPT] php 报错 Unsupported operand types
Unsupported operand types 这个错误通常发生在使用了不支持的操作数类型时.例如,当您尝试对两个不同类型的值执行算术运算时,就会出现这个错误. 例如,如果您尝试将字符串与数字相加 ...
- FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
libass是一个适用于ASS和SSA格式(Advanced Substation Alpha/Substation Alpha)的字幕渲染器,支持的字幕类型包括srt.ass等,凡是涉及到给视频画 ...
- 【HarmonyOS】安装DevEco Studio后检查环境出现ohpm not set up
按照官网的操作方式,下载完ohpm总是检测不到 打开cmd,发现我之前因为其他项目改过编码 输入 regedit 打开注册表编辑页 按路径[计算机\HKEY_LOCAL_MACHINE\SOFTWAR ...