k8s权威指南 ——资源控制笔记
发布网友
发布时间:2024-10-08 20:53
我来回答
共1个回答
热心网友
时间:2024-11-03 15:41
深入了解Kubernetes (k8s) 资源控制:第14章笔记
在k8s中,每个Pod的容器资源*是在创建时声明的。例如,创建一个Pod时,指定每个容器所需的CPU资源为200毫核(1/5核心)和10MB内存。如果没有设置CPU请求,可能导致Pod无法获取所需资源。
资源请求影响调度:调度器会以请求为基础分配资源,确保每个节点至少能满足Pod的基本需求。调度逻辑考虑的是节点上其他Pod的资源请求,而非实际使用情况,这有助于平衡资源分配。
节点资源管理:节点的capacity和可分配资源是调度决策的重要依据。例如,一个拥有2个核心的minikube节点,若被两个Pod完全请求,无法再调度新的请求。
资源使用与*:CPU和内存资源的请求不仅影响调度,还影响Pod间对剩余资源的共享。例如,两个Pod按1:5比例争夺资源,第一个Pod最多只能使用16.7%的节点资源。设置资源*是保护系统健康的关键。
内存*的特殊性:内存是不可压缩的,过度使用可能导致OOM (Out of Memory),影响其他Pod。因此,为容器设置合理的内存limit至关重要。
容器内部资源查看:有资源*的Pod内部,应用可能无法准确看到资源使用情况,因为显示的是节点而非Pod的资源。
QoS (Quality of Service) 级别:K8s根据Pod和容器的资源请求与*,将其划分为BestEffort、Guaranteed和Burstable三种优先级,影响资源分配和生存优先级。
内存压力下的决策:在内存紧张时,BestEffort类Pod首先被杀掉,因为它没有资源保证,优先级最低。
总结:资源控制在k8s中扮演着关键角色,通过理解和应用资源请求和*,可以优化资源使用,确保Pod的稳定运行。