【K8s】Kubernetes 稳定性之资源限制及服务质量等级

2024-09-11 18:45:18 浏览数 (3)

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~

资源限制

1、基本介绍

Kubernetes 是一个完全以资源为中心的系统,资源限制是通过 Cgroups 等控制 Pod 使用节点资源(CPU、内存、存储)的一种机制,对于确保 Kubernetes 集群运行的稳定、高效至关重要。通过合理配置资源限制,可以避免资源争用和过载,同时提高应用程序的可靠性和性能。

资源限制的具体概念有:

  • Requests(请求):定义容器启动时所需的最小资源量。Kubernetes 会确保每个容器至少获得其请求的资源量,以避免因为资源不足而启动失败
  • Limits(限制):定义容器可以使用的最大资源量。当容器尝试使用超过其限制的资源时,它可能会被系统终止或受到限制,以防止影响集群中其他容器的性能
  • Quotas(配额):针对命名空间内所有资源进行总体限制,用于控制资源的消耗,防止某些用户或团队过度使用资源

2、工作原理

  • 资源定义:用户在 Pod 中定义资源请求和限制
  • 调度决策:Kubernetes 调度器在调度 Pod 时会考虑节点上的可用资源。如果节点上的资源不足以满足 Pod 的请求,调度器将不会将 Pod 调度到该节点
  • 资源分配:一旦 Pod 被调度到节点,Kubernetes 会根据资源请求为 Pod 分配资源。Pod 可以使用的资源不会超过其限制
  • 资源监控:Kubernetes 持续监控每个 Pod 的资源使用情况
  • 资源回收:当 Pod 使用的资源超过其限制时,Kubernetes 可以采取回收措施。如果是 CPU 使用超过限制,CPU 会被压缩导致应用程序运行变缓,如果是内存使用超过限制,容器会直接被 OOM Kill
  • 资源配额:通过设置资源配额,Kubernetes 可以限制命名空间内可以创建的资源数量和消耗的资源总量,从而避免资源的过度使用
3、限制方法
  • 配置 Container 限制
代码语言:javascript复制
apiVersion: apps/v1
kind: Deployment
metadata:
  nanme: demo-deployment
spec:
...
    spec:
      containers:
...
        resources:
          limits:
            cpu: 1000m
            memory: 1Gi
            ephemeral-storage: 10Gi
          requests:
            cpu: 100m
            memory: 100Mi
            ephemeral-storage: 1Gi
 
 



	

1 人点赞