Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

HPA

作者头像
星哥玩云
发布于 2022-09-15 13:50:41
发布于 2022-09-15 13:50:41
39100
代码可运行
举报
文章被收录于专栏:开源部署开源部署
运行总次数:0
代码可运行

Horizontal Pod Autoscaling 可以根据 CPU 利用率自动伸缩一个 ReplicaSet、Deployment 或者中的 Pod 数量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat hpa-deploy.yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hpa-web
spec:
  selector:
    matchLabels:
      app: hpa-web
  replicas: 1
  template:
    metadata:
      labels:
        app: hpa-web
    spec:
      containers:
        - name: hpa-web
          image: gcr.io/google_containers/hpa-example
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 80
          resources:
            limits:
              cpu: 200m
              memory: 200Mi
            requests:
              cpu: 100m
              memory: 100Mi
---
apiVersion: v1
kind: Service
metadata:
  name: hpa-web
spec:
  type: ClusterIP
  selector:
    app: hpa-web
  ports:
  - name: http
    port: 80
    targetPort: 80

创建 HPA 控制器 - 相关算法的详情请参阅这篇文档:http://git.k8s.io/community/contributors/design-proposals/horizontal-pod-autoscaler.md#autoscaling-algorithm

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl autoscale deployment hpa-web --cpu-percent=50 --min=1 --max=10

增加负载,查看负载节点数目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
两种方式:

1.命令行创建:

创建测试POD:
kubectl run -i --tty zutuanxue --image=busybox --image-pull-policy='IfNotPresent' /bin/sh

执行命令:
while true; do wget -q -O- http://hpa-web.default.svc.cluster.local; done

2.副本控制器创建:

cat test.yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ceshi
spec:
  selector:
    matchLabels:
      app: ceshi
  replicas: 1
  template:
    metadata:
      labels:
        app: ceshi
    spec:
      containers:
        - name: ceshi
          image: docker.io/busybox
          imagePullPolicy: IfNotPresent
          command: ['sh', '-c', 'while true; do wget -q -O- http://hpa-web.default.svc.cluster.local; done']

资源限制 - Pod

Kubernetes 对资源的限制实际上是通过 cgroup 来控制的,cgroup 是容器的一组用来控制内核如何运行进程的相关属性集合。针对内存、CPU 和各种设备都有对应的 cgroup

默认情况下,Pod 运行没有 CPU 和内存的限额。 这意味着系统中的任何 Pod 将能够像执行该 Pod 所在的节点一样,消耗足够多的 CPU 和内存 。一般会针对某些应用的 pod 资源进行资源限制,这个资源限制是通过resources 的 requests 和 limits 来实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spec:
    containers:
    - image: xxxx
      imagePullPolicy: Always
      name: auth
      ports:
      - containerPort: 8080
        protocol: TCP
      resources:
        limits:
          cpu: "4"
          memory: 2Gi
        requests:
          cpu: 250m
          memory: 250Mi

requests 要分配的资源,limits 为最高请求的资源值。可以简单理解为初始值和最大值

资源限制 - 名称空间

​ 1、计算资源配额

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: zutuanxue
spec:
  hard:
    pods: "20"
    requests.cpu: "20"
    requests.memory: 100Gi
    limits.cpu: "40"
    limits.memory: 200Gi

2、配置对象数量配额限制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
  namespace: zutuanxue
spec:
  hard:
    configmaps: "10"
    persistentvolumeclaims: "4"
    ReplicaSet: "20"
    secrets: "10"
    services: "10"

3、配置 CPU 和 内存 LimitRange

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 50Gi
      cpu: 5
    defaultRequest:
      memory: 1Gi
      cpu: 1
    type: Container

default 即 limit 的值

​defaultRequest 即 request 的值

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kubernetes中资源配额管理
创建Pod的时候,可以为每个容器指定资源消耗的限制。Pod的资源请求限制则是Pod中所有容器请求资源的总和。
大江小浪
2018/12/13
1.7K0
Kubernetes中资源配额管理
kubernetes(八) kubernetes的使用
1、[preflight] 检查环境是否满足条件 2、[kubelet-start] 启动kubelet 3、[certs] /etc/kubernetes/pki 生成apiserver和etcd两套证书 4、[kubeconfig] 连接apiserver的配置文件 5、[control-plane] 静态Pod /etc/kubernetes/manifests 6、[etcd] 静态pod启动etcd 7、[upload-config] 将kubeadm配置存放到kube-system configmap 8、[kubelet] 将kkubelet配置存放到kube-system configmap 9、[mark-control-plane] node-role.kubernetes.io/master='' 说明master节点不调度pod 10、[bootstrap-token] 为kubelet自动颁发证书机制 11、安装插件 CoreDNS kube-proxy
alexhuiwang
2020/09/23
7840
kubernetes(八) kubernetes的使用
Kubernetes学习笔记
Pod: kubernetes管理的主要对象,可以由一个或者共享资源的一组容器组成 kubelet: 管理worker node和master node之间的通信 kube-proxy: 运行在work node上,用于管理Node和Pod的网络通信 API Server: 提供API服务 Scheduler: 选择worker node运行Pod Controller: 监控Pod数量,控制worker node Worker node: 运行Pod的机器或者虚拟机 Master node: 运行Control Plane的机器或者虚拟机
宅蓝三木
2024/10/09
1150
Kubernetes学习笔记
Kubernetes K8S之CPU和内存资源限制详解 为命名空间配置内存和 CPU 配额为命名空间配置默认的内存请求和限制为命名空间配置默认的CPU请求和限制配置命
备注:CPU单位换算:100m CPU,100 milliCPU 和 0.1 CPU 都相同;精度不能超过 1m。1000m CPU = 1 CPU。
踏歌行
2021/01/13
3.8K0
Kubernetes K8S之CPU和内存资源限制详解
    




        为命名空间配置内存和 CPU 配额为命名空间配置默认的内存请求和限制为命名空间配置默认的CPU请求和限制配置命
Pod容器自动伸缩(HPA) 测试
HPA(Horizontal Pod Autoscaler)在k8s集群中用于POD水平自动伸缩,它是基于CPU和内存利用率对Deployment和Replicaset控制器中的pod数量进行自动扩缩容(除了CPU和内存利用率之外,也可以基于其他应程序提供的度量指标custom metrics进行自动扩缩容)。pod自动缩放不适用于无法缩放的对象,比如DaemonSets。HPA由Kubernetes API资源和控制器实现。资源决定了控制器的行为,控制器会周期性的获取CPU和内存利用率,并与目标值相比较后来调整replication controller或deployment中的副本数量。
洗尽了浮华
2020/11/24
1K0
4-Kubernetes入门基础之Pod介绍
前面简单的介绍了Kubernetes基础知识以及单节点和高可以用集群的搭建, 本章将从实操来介绍Kubernetes概念和术语以及控制器,便于各位读者进行学习;
全栈工程师修炼指南
2022/09/29
9580
4-Kubernetes入门基础之Pod介绍
k8s——资源限制
注:以下只是在yaml文件中进行资源限制的一个片段,并不是完整的yaml文件 1、针对Pod的资源限制 // cgroup-pod.yaml spec: containers: - name: xxx image: xxx ports: - protocol: TCP containerPort: 80 resources: limits: //硬限制 cpu: "4" memory:
小手冰凉
2020/09/15
7260
CKAD考试实操指南(五)--- 定制你的舞台:配置实践要点
在这篇 CKAD 考试实操指南文章中将为你介绍如何使用知十平台并结合开源项目 CKAD Exercises 中提供的练习题来练习 CKAD 考试中 Configuration 部分的考试内容。在这个过程中你将掌握如何通过 kubectl 命令行工具操作「ConfigMap」、「Secret」、「SecurityContext」、「ServiceAccount」、「ResourceQuota」等资源,并在实践中加深对知识的理解。
知十
2023/07/28
3780
CKAD考试实操指南(五)--- 定制你的舞台:配置实践要点
Prometheus监控神器-Kubernetes篇(一)
本篇使用StorageClass来持久化数据,搭建Statefulset的Prometheus联邦集群,对于数据持久化,方案众多,如Thanos、M3DB、InfluxDB、VictorMetric等,根据自己的需求进行选择,后面会详细讲解针对数据持久化的具体细节。
Kubernetes技术栈
2020/09/09
2K0
Kubernetes中资源的管理与调度
不知道有没有小伙伴跟我一样在集群创建应用的时候没有详细计算过自己的资源配比。然后我是看到kubectl top node 一看每个节点还有很多的资源,就直接创建了几个资源配比较高的应用,而且这几个应用是高负载运行的....然后的结果就是集群中好多应用开始崩溃了......
对你无可奈何
2021/06/24
1.5K0
Jenkins在kubernetes上的落地实践
创建pv/pvc对象,这里我们要注意nfs提供给jenkins的存储目录的权限问题,否则服务因为权限无法写入数据:
公众号: 云原生生态圈
2020/06/15
8220
Jenkins在kubernetes上的落地实践
服务部署与迁移示例
通过 mysql 与 wordpress 镜像包部署持久化的 wordpress 博客网站
星哥玩云
2022/09/15
2980
服务部署与迁移示例
【K8s】Kubernetes 稳定性之资源限制及服务质量等级
Kubernetes 是一个完全以资源为中心的系统,资源限制是通过 Cgroups 等控制 Pod 使用节点资源(CPU、内存、存储)的一种机制,对于确保 Kubernetes 集群运行的稳定、高效至关重要。通过合理配置资源限制,可以避免资源争用和过载,同时提高应用程序的可靠性和性能。
行者Sun
2024/09/11
1800
【K8s】Kubernetes 稳定性之资源限制及服务质量等级
Kubernetes部署Yapi平台
yapi项目 https://github.com/YMFE/yapi/tags 镜像 https://hub.docker.com/r/jayfong/yapi 创建资源清单 vim yapi.yaml apiVersion: v1 kind: Namespace metadata: name: yapi --- apiVersion: v1 kind: Service metadata: name: mongo namespace: yapi labels: app: mongo
院长技术
2022/03/23
1.6K0
在Kubernetes中如何针对Namespace进行资源限制?
LimitRange有个好听的中文名字,叫"资源配置访问管理"。用过K8S的都知道,在默认情况下,K8S不会对Pod进行CPU和内存限制,这就意味着这个未被限制的Pod可以随心所欲的使用节点上的CPU和内存,如果某个Pod发生内存泄漏那么将是一个非常糟糕的事情。 所以正常情况下,我们在部署Pod的时候都会把Requests和Limits加上,如下:
极客运维圈
2020/04/07
1.9K0
限制kubernetes里的系统资源使用
工作中需要对kubernetes中workload使用的系统资源进行一些限制,本周花时间研究了一下,这里记录一下。
jeremyxu
2019/08/07
1.2K0
【K8S专栏】Kubernetes应用质量管理
在Kubernetes中,Pod是最小的调度单元,所以跟资源和调度相关的属性都是Pod对象的字段,而其中最重要的就是CPU和内存。如下所示:
没有故事的陈师傅
2022/09/15
6140
浅谈 Kubernetes Metrics Server
1、Metrics Servrer 原理介绍 1.1、Metrics Server 概念和功能 概念 Metrics Server 是 Kubernetes 集群核心监控数据的聚合器,Metrics Server 从 Kubelet 收集资源指标,并通过 Merics API 在 Kubernetes APIServer 中提供给缩放资源对象 HPA 使用。也可以通过 Metrics API 提供的 Kubectl top 查看 Pod 资源占用情况,从而实现对资源的自动缩放。 功能 主要是基于 Kuber
用户5166556
2020/06/01
4.4K0
Kubernetes 漫游:kube-scheduler
Kubernetes 集群的核心组件之一,它负责为新创建的 Pods 分配节点。它根据多种因素进行决策,包括:
phoenix.xiao
2023/11/29
3200
Kubernetes 漫游:kube-scheduler
如何部署一个生产级别的 Kubernetes 应用
本文我们用一个 Wordpress 示例来尽可能将前面的知识点串联起来,我们需要达到的目的是让 Wordpress 应用具有高可用、滚动更新的过程中不能中断服务、数据要持久化不能丢失、当应用负载太高的时候能够自动进行扩容、当然还有 HTTPS 访问等等,这些是我们的应用部署到线上环境基本上要具备的一些能力,接下来我们就来一步一步完成这些需求。
我是阳明
2020/12/01
1.1K0
如何部署一个生产级别的 Kubernetes 应用
相关推荐
Kubernetes中资源配额管理
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验