容器相关
非root用户Docker与K8S
Containerd安装
Containerd常用命令
Docker
镜像创建
国内镜像仓库
容器创建(Dockerfile)
容器系统
docker配置
docker数据管理
docker网络管理
docker容器自启动
docker镜像加速
docker问题
搭建Portainer可视化界面
Docker Swarm
Swarm搭建Docker集群
Docker Compose
Docker Compose命令
Docker Compose模板
Docker Machine
Kubernetes常用命令
k8s部署(kubeadmin)
k8s高可用部署
MiniKube
k8s1.24部署(containerd)
k8s1.24部署(docker)
部署 Dashboard
Kuboard K8S管理台
k8s权限管理
k8s网络插件
私有仓密码镜像拉取
k8s集群管理
POD--基本单位
Pod模板
Pod生命周期
Pod健康检查
初始化容器(initContainer)
Deployment--Pod的管理
Deployment模板
Deployment升级与回滚
DaemonSet控制器
StatefulSet控制器(有状态)
JOB与CRONJOB
Service--发布服务
ingress-traefix
ingress-nginx
MetalLB
存储与配置
持久存储卷
配置存储卷
资源管理
标签、选择器与注解
资源预留
调度管理
自动扩容
Proxy API与API Server
Helm--K8S的包管理器
helm常用命令
自定义Chart
私有chart仓库
helm dashboard
K8S证书过期
K8S问题解决
Harbor安装
Harbor操作
Harbor问题
Harbor升级
Docker Registry安装
Docker Registry鉴权
Registry用Nginx代理SSL及鉴权
Docker Registry问题
Istio 服务网络
常用示例
Gateway【服务网关】
kiali 可视化页面
开启HTTPS
linkerd 服务网络
本文档使用MrDoc发布
返回首页
-
+
自动扩容
2021年11月16日 16:25
admin
#创建HPA --- ##使用autoscale创建HPA kubectl autoscale deployment foo --min=2 --max=10 --cpu-percent=80 #使用autoscale创建yaml文件 kubectl autoscale deployment web --min=2 --max=10 -o yaml --dry-run >hpa-web.yaml #应用yaml文件 kubectl apply -f hpa-web.yaml ##使用YAML文件 ####v1版本(仅支持CPU使用率) #hpa.yaml文件内容: apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: web spec: maxReplicas: 10 minReplicas: 2 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: web targetCPUUtilizationPercentage: 40 ============================================================= #应用yaml kubectl apply -f hpa.yaml --- ####v2版本(支持CPU使用率、内存使用率等等额外指标) #hpa2.yaml文件内容: apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: nginx spec: maxReplicas: 10 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx metrics: - type: Resource resource: name: cpu target: averageUtilization: 60 type: Utilization - type: Resource resource: name: memory target: averageValue: 50Mi type: AverageValue ============================================================= #应用yaml kubectl apply -f hpa2.yaml --- #查看HPA kubectl get hpa -A kubectl get hpa <hpa名称> -o yaml --- #查看详情 kubectl describe hpa <hpa名称> --- #删除HPA kubectl delete hpa <hpa名称> --- #注意:(超重要) ####CPU utilization的计算方法是用cpu usage(最近一分钟的平均值,通过metrics可以直接获取到)除以cpu request(这里cpu request就是我们在创建容器时制定的cpu使用核心数)得到一个平均值,这个平均值可以理解为:平均每个Pod CPU核心的使用占比。 ####我们计算在上例中的计算方法: ####上例中我们的cpu request为200m(在部署文件中定义),在负载开始时我们的cpu usage为500m,因此上例的CPU utilization为500/200=2.5. --- #注意: ####1、获取数据周期为15s ####2、缩容后,冷却时间默认为5min,经过5min后才会再次进行缩容操作 --- #V2版本示例 apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: nginx spec: maxReplicas: 10 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx metrics: - type: Object #Ingress的每秒请求数量达到2000 object: metric: name: requests-per-second describedObject: apiVersion: extensions/v1beta1 kind: Ingress name: main-route target: type: Value value: 2k - type: Object #http的get请求返回码为500 object: metric: name: http_requests selector: 'verb=GET' target: type: AverageValue averageValue: 500 --- #额外知识:(默认已安装) ##Metrics-Server安装及配置 ##官网 https://github.com/kubernetes-sigs/metrics-server/releases ##修改安装配置文件 mkdir metrics-server cd metrics-server wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml # 修改 components.yaml 文件,在 args 下面添加以下两行内容,不校验证书,不然会报 x509 错误 - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP - --kubelet-insecure-tls # 替换image源,不然会拉取不到镜像 image: ninejy/metrics-server:v0.3.7  # 修改API版本  ##执行安装 kubectl apply -f components.yaml ##验证 kubectl top nodes  --- ##hpa获取不到信息问题  ####原因:定义pod的时候,没有设置resources,HPA取不到CPU当前值 --- ####解决:设置pod的resources信息 
分享到: