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. VulnHub-ical打靶记录

    这绝对是最简单的一个题目了. 目标发现 netdiscover -r 192.168.0.10/24 根据靶场和本地系统的网段进行扫描. 信息收集 nmap -sV -Pn -sT -sC -A 19 ...

  2. Pytorch Dataset入门

    ​ Dataset入门 Pytorch Dataset code:torch/utils/data/dataset.py#L17 Pytorch Dataset tutorial: tutorials ...

  3. 使用input标签的时候报错,提示Form elements must have labels: Element has no title attribute Element has no placeholder attribute

    使用input标签的时候报错,提示Form elements must have labels: Element has no title attribute Element has no place ...

  4. 【数学】向量点乘、叉乘的理论、应用及代码实现(C++)

    前言 我总结了一下向量点乘,叉乘的概念,以及他们的应用及相关C++代码的实现.blog 这类问题也是技术面试经常碰到的,一次研究透了会有收获. 1 向量 向量具有大小和方向. 共线向量:两个平行的向量 ...

  5. Understand Abstraction and Interface

    Foreword 抽象和接口是Java中的两个关键字,也是两种最基本的优化软件项目手段.为什么说它们是一种优化项目的手段? 人分三六九等,不同等级的人,所接触的事和处理的事是不一样的.同理,项目也分大 ...

  6. Flink 源码 | 自定义 Format 消费 Maxwell CDC 数据

    Flink 1.11 最重要的 Feature -- Hive Streaming 之前已经和大家分享过了,今天就和大家来聊一聊另一个特别重要的功能 -- CDC. CDC概述 何为CDC?Chang ...

  7. 人人都是 Serverless 架构师 | 现代化 Web 应用开发实战

    ​简介:本篇实战将介绍如何以超低成本构建动态的 Web 站点,并且实现灵活扩展,限流等效果,最后再跟大家聊一聊"现代应用"的相关概念. 相信很多同学都有过想要拥有自己的 Web 站 ...

  8. 京东:Flink SQL 优化实战

    简介: 本文着重从 shuffle.join 方式的选择.对象重用.UDF 重用等方面介绍了京东在 Flink SQL 任务方面做的优化措施. 本文作者为京东算法服务部的张颖和段学浩,并由 Apach ...

  9. [GPT] 用dogecoin接受付款,如何实现收款回调,不借助中心化的第三方

      要在不借助中心化的第三方的情况下实现Dogecoin的收款回调,您可以按照以下步骤进行操作: 1. 设置一个用于接收收款回调的URL:您需要在您的网站或应用程序中设置一个用于接收收款回调的URL. ...

  10. dotnet 6 精细控制 HttpClient 网络请求超时

    本文告诉大家如何在 dotnet 6 下使用 HttpClient 更加精细的控制网络请求的超时,实现 HttpWebRequest 的 ReadWriteTimeout 功能 本文将介绍如何在 Ht ...