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]的更多相关文章

  1. 三十三、HPA实现自动扩缩容

    通过HPA实现业务应用的动态扩缩容 HPA控制器介绍 当系统资源过高的时候,我们可以使用如下命令来实现 Pod 的扩缩容功能 $ kubectl -n luffy scale deployment m ...

  2. Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler

    Knative Serving 默认情况下,提供了开箱即用的快速.基于请求的自动扩缩容功能 - Knative Pod Autoscaler(KPA).下面带你体验如何在 Knative 中玩转 Au ...

  3. 通过Dapr实现一个简单的基于.net的微服务电商系统(十一)——一步一步教你如何撸Dapr之自动扩/缩容

    上一篇我们讲到了dapr提供的bindings,通过绑定可以让我们的程序轻装上阵,在极端情况下几乎不需要集成任何sdk,仅需要通过httpclient+text.json即可完成对外部组件的调用,这样 ...

  4. minikube metrics-server HPA 自动扩缩容错误

    minikube metrics-server pod 错误 启动 minikube addons enable metrics-server 之后查看 metrics-server pod 会有如下 ...

  5. Marathon自动扩缩容(marathon-lb-autoscale)

    我们在服务里面创建如下的应用(以下是创建完复制过来的json): { "id": "/nginxtest", "cmd": null, &q ...

  6. 13.深入k8s:Pod 水平自动扩缩HPA及其源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 Pod 水平自动扩缩 Pod 水平自动扩缩工作原理 Pod 水平自动 ...

  7. 【六】K8s-Pod 水平自动扩缩实践(简称HPA)

    一.概述 Pod 水平自动扩缩(Horizontal Pod Autoscaler)简称 HPA,HPA 可以根据 CPU 利用率进行自动伸缩 Pod 副本数量,除了 CPU 利用率,也可以基于其他应 ...

  8. 从零入门 Serverless | Serverless Kubernetes 应用部署及扩缩容

    作者 | 邓青琳(轻零) 阿里云技术专家 导读:本文分为三个部分,首先给大家演示 Serverless Kubernetes 集群的创建和业务应用的部署,其次介绍 Serverless Kuberne ...

  9. Kubernetes的垂直和水平扩缩容的性能评估

    Kubernetes的垂直和水平扩缩容的性能评估 译自:Performance evaluation of the autoscaling strategies vertical and horizo ...

  10. Kubernetes 监控:Prometheus Adpater =》自定义指标扩缩容

    使用 Kubernetes 进行容器编排的主要优点之一是,它可以非常轻松地对我们的应用程序进行水平扩展.Pod 水平自动缩放(HPA)可以根据 CPU 和内存使用量来扩展应用,前面讲解的 HPA 章节 ...

随机推荐

  1. ES6~ES9

    ES6 1. let 1.1 let 变量声明及声明特性 let 用来声明变量,具有以下特性: 一.相较于 var ,let 变量不能重复声明 let a = 'a'; let a = 'a'; // ...

  2. 什么是报表工具?和 EXCEL 有什么区别?

    报表是什么? 带数据的表格和图表就都是报表,像工资表,考勤表,成绩表,资产负载表等等都是报表. 那报表工具,顾名思义就是用来做报表的工具,那 Excel 是不是也算报表工具?广义上讲当然也算.但 IT ...

  3. 批处理 if的知识点

    正文 批处理的if不同于我们在一些常规语言中的if,比如说c或者c# 或者 java等. 如果我们判断两个字符是否相等,我们使用 'a'=='a' 来判断. 但是如果是不相等却不能这样. gtr 大于 ...

  4. lattice烧录器回读功能。

    经常被人问,lattice的 怎么回读,下面就说这个步骤. 烧录器检测到设备以后,以后选择operation,选择flash programming mode ,选择flash read and sa ...

  5. 合阔智云核心生产系统切换到服务网格 ASM 的落地实践

    简介: 合阔智云提供了从全渠道交易管理到订单履约再到门店供应链完整的餐饮零售连锁解决方案,整个方案采取微服务设计,并深度使用了 Kubernetes 作为生产调度平台. 作者:刘如鸿   背景 合阔智 ...

  6. ClickHouse Keeper 源码解析

    简介:ClickHouse 社区在21.8版本中引入了 ClickHouse Keeper.ClickHouse Keeper 是完全兼容 Zookeeper 协议的分布式协调服务.本文对开源版本 C ...

  7. 技术干货|基于Apache Hudi 的CDC数据入湖「内附干货PPT下载渠道」

    ​简介: 阿里云技术专家李少锋(风泽)在Apache Hudi 与 Apache Pulsar 联合 Meetup 杭州站上的演讲整理稿件,本议题将介绍典型 CDC 入湖场景,以及如何使用 Pulsa ...

  8. [MongoDB] Mongo 表字段添加索引, 查看索引, 删除索引

    查看索引: db.getCollection('xx').getIndexes(); 创建索引: # 1 代表升序,-1代表降序,name 指定索引名 db.getCollection('xx').c ...

  9. WPF 给 Pen 的 DashStyle 设置 0 0 的虚线数组将会让渲染线程消耗大量 CPU 资源

    给 WPF 的 Pen 的 DashStyle 属性设置 0 0 的虚线,在绘制几何图形时,绘制的几何图形的尺寸将关联渲染线程所使用的 CPU 资源.大约在周长大于 500 时,将可以从任务管理器上看 ...

  10. WPF 获取本机所有字体拿到每个字符的宽度和高度

    本文主要采用 GlyphTypeface 类尝试获取每个字符的宽度和高度的值,尽管这个方法和最终 WPF 布局使用的文本的宽度和高度是不相同的,但是依然可以作为参考 获取系统字体文件夹的文件 系统字体 ...