首页 > 其他分享 >k8s~为pod添加节点的资源限制

k8s~为pod添加节点的资源限制

时间:2024-10-31 09:57:39浏览次数:1  
标签:容器 限制 app CPU 节点 pod k8s my Pod

CPU单位

CPU资源以CPU核心数为单位进行度量的。在Kubernetes中,一个CPU相当于:

1 AWS vCPU
1 GCP Core
1 Azure vCore
一个超线程(在使用超线程的裸金属Intel处理器上)

请求0.5 CPU的容器所保证的CPU核数是请求节点上的1个CPU的一半。你可以用后缀m表示milli。例如100m CPU100millicpu``和0.1 CPU都是相同的。精度不允许超过1m。

不指定CPU限制

如果没有为容器指定CPU限制,则会出现以下情况之一:

* 容器对它可以使用的CPU资源没有上限。容器可以使用它运行的节点上可用的所有CPU资源。
* 容器在具有默认CPU限制的命名空间中运行,容器会自动分配默认限制。集群管理员可以使用LimitRange指定CPU限制的默认值。

CPU请求和限制的目的

通过配置集群中运行的CPU请求和容器的限制,可以有效地利用集群节点上可用的CPU资源。通过将Pod的CPU请求保持在较低的水平,可以很好地调度Pod。将CPU限制设置为大于CPU请求,你可以完成两件事:

  • Pod可以利用CPU资源进行突发活动。
  • 在突发活动期间,Pod可以使用的CPU资源数量被限制在某个合理的数量内。

在 Kubernetes 中,可以通过设置 CPU 和内存的限制来控制每个 Pod 或容器的资源使用。这样可以确保资源的合理分配,避免某些应用占用过多资源而影响整个集群的稳定性。

1. 配置 CPU 和内存的 Limit

在 Kubernetes 的 Pod 或 Deployment 定义中,可以通过 resources 字段来设置 CPU 和内存的请求(requests)和限制(limits)。以下是一个示例 YAML 文件:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: my-container
      image: my-image:latest
      resources:
        requests:
          memory: 512Mi   # 请求的内存量
          cpu: 500m      # 请求的 CPU 核心数
        limits:
          memory: 1Gi    # 限制的内存量
          cpu: 1        # 限制的 CPU 核心数

2. 字段解释

  • requests:表示容器启动时所需的最低资源量。Kubernetes 会根据这些请求来调度 Pod。
  • limits:表示容器可以使用的最大资源量。如果容器超过了这个限制,Kubernetes 会采取措施,例如限制 CPU 使用或终止容器。

3. 单位说明

  • CPU

    • 可以用整数表示核心数(例如 1 表示一个核心)。
    • 也可以用毫核心(m)表示,如 500m 表示半个核心。
  • Memory

    • 可以使用字节(B)、千字节(Ki)、兆字节(Mi)、吉字节(Gi)等单位。例如:512Mi 表示 512 兆字节。

4. 示例应用

以下是一个更复杂的 Deployment 示例,包含多个容器的资源配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: app-container
          image: my-app-image:latest
          resources:
            requests:
              memory: 256Mi
              cpu: 250m
            limits:
              memory: 512Mi
              cpu: 1
        - name: sidecar-container
          image: my-sidecar-image:latest
          resources:
            requests:
              memory: "128Mi"
              cpu: "100m"
            limits:
              memory: "256Mi"
              cpu: "500m"

5. 注意事项

  • 合理配置:根据应用的实际需求合理配置资源请求和限制,避免过高或过低的设置。
  • 监控与调整:使用监控工具(如 Prometheus、Grafana)观察 Pod 的资源使用情况,并根据需要进行调整。
  • 测试与验证:在生产环境前进行充分的测试,以确保配置能够满足性能需求。

通过以上配置,你可以有效管理 Kubernetes 中的 CPU 和内存资源,确保应用的稳定运行。

标签:容器,限制,app,CPU,节点,pod,k8s,my,Pod
From: https://www.cnblogs.com/lori/p/18517101

相关文章

  • 代码随想录算法训练营第十三天| 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子
    110.平衡二叉树题目链接:.-力扣(LeetCode)文章链接:代码随想录视频链接:后序遍历求高度,高度判断是否平衡|LeetCode:110.平衡二叉树_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com,这里刷题顺序,详......
  • 集群渲染是一台节点输出吗?它是云渲染农场吗
    集群渲染并非单一节点的输出,而是一种分布式计算技术,它通过多台计算机协同工作来加速3D渲染过程。这种技术常被视作云渲染农场的前身,两者在提高渲染效率方面有着相似之处。接下来,让我们深入了解集群渲染与云渲染农场之间的联系与区别。一、集群渲染有多少台节点输出集群渲染不是......
  • K8s 容器的定向调度与亲和性
    K8s容器的定向调度与亲和性K8s集群节点CPU使用率高!内存溢出(OOM)!宕机!导致大量微服务瘫痪怎么办?可能是调度策略没做好,看完这篇文章掌握提高集群稳定性的管理诀窍。Kubernetes(K8s)是一个开源的容器编排工具,而容器调度是其非常重要的特性,所谓的调度是指将容器(Pod)分配到集群中的......
  • k8s 常用yml
    1、pvc---apiVersion:v1kind:PersistentVolumeClaimmetadata:name:nmg-logsnamespace:nmg-testspec:storageClassName:"glusterfs"accessModes:-ReadWriteOnceresources:requests:storage:100Gi2、跑jar包---apiVers......
  • ThingsBoard规则链节点:GPS Geofencing Events节点详解
    引言1.GPSGeofencingEvents节点简介2.节点配置3.使用场景3.1物流跟踪3.2资产管理3.3安全监控3.4农业监测4.实际项目中的应用4.1项目背景4.2项目需求4.3实现步骤5.总结引言GPSGeofencingEvents是ThingsBoard规则链中的一个重要节点,用于处理......
  • ThingsBoard规则链节点:Generator节点详解
    引言1.Generator节点简介2.节点配置3.使用场景3.1模拟数据流3.2定时任务3.3事件触发3.4数据填充4.实际项目中的应用4.1项目背景4.2项目需求4.3实现步骤5.总结引言ThingsBoard是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功......
  • Ansible自动化一键部署单节点&集群架构
    自动化部署利器:Ansible一键部署脚本在现代IT基础设施管理中,Ansible以其简洁、强大的自动化能力脱颖而出。以下是精心打造的Ansible自动化一键部署脚本,旨在简化部署流程,提升效率,确保一致性和可靠性。通过这个脚本,可以轻松实现:一键部署:简化复杂的部署流程,只需一条命令即可启动......
  • 在K8S中,有一家拥有非常分散系统,拥有大量数据中心、虚拟机以及许多从事各种任务的员工
    对于一家拥有非常分散系统的跨国公司来说,使用Kubernetes(K8s)来管理其大量的数据中心、虚拟机以及相关的基础设施可以带来显著的好处。Kubernetes是一个用于自动化部署、扩展和管理容器化应用的开源平台,它可以帮助企业实现资源的一致管理和更高效的运营。以下是如何利用Kubernetes进......
  • 在K8S中,有一家拥有非常分散的系统的跨国公司,希望解决整体代码库问题,该公司要如何解决
    在Kubernetes(K8s)环境中,一家拥有非常分散的系统的跨国公司面临整体代码库问题的挑战时,可以通过以下策略来解决:1.采用微服务架构与容器化微服务架构:将庞大的单体应用拆分为一系列小型、独立、松耦合的服务。每个服务都运行在自己的进程中,并使用轻量级通信机制(通常是HTTP/RESTf......
  • 在K8S中,有一家公司想要修改其部署方法,并希望构建一个可扩展性和响应性更高的平台,该公
    在Kubernetes(K8s)中,一家公司想要修改其部署方法并构建一个可扩展性和响应性更高的平台,以满足客户需求,可以从以下几个方面入手:1.技术层面的实现策略采用微服务架构:将大型的单体应用拆分成多个独立的、小型的、松耦合的服务,每个服务负责一个特定的功能。这种架构有助于提高系......