深入剖析Kubernetes
张磊
Kubernetes社区资深成员与项目维护者
立即订阅
22715 人已学习
课程目录
已完结 56 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (5讲)
开篇词 | 打通“容器技术”的任督二脉
免费
01 | 预习篇 · 小鲸鱼大事记(一):初出茅庐
02 | 预习篇 · 小鲸鱼大事记(二):崭露头角
03 | 预习篇 · 小鲸鱼大事记(三):群雄并起
04 | 预习篇 · 小鲸鱼大事记(四):尘埃落定
容器技术概念入门篇 (5讲)
05 | 白话容器基础(一):从进程说开去
06 | 白话容器基础(二):隔离与限制
07 | 白话容器基础(三):深入理解容器镜像
08 | 白话容器基础(四):重新认识Docker容器
09 | 从容器到容器云:谈谈Kubernetes的本质
Kubernetes集群搭建与实践 (3讲)
10 | Kubernetes一键部署利器:kubeadm
11 | 从0到1:搭建一个完整的Kubernetes集群
12 | 牛刀小试:我的第一个容器化应用
容器编排与Kubernetes作业管理 (15讲)
13 | 为什么我们需要Pod?
14 | 深入解析Pod对象(一):基本概念
15 | 深入解析Pod对象(二):使用进阶
16 | 编排其实很简单:谈谈“控制器”模型
17 | 经典PaaS的记忆:作业副本与水平扩展
18 | 深入理解StatefulSet(一):拓扑状态
19 | 深入理解StatefulSet(二):存储状态
20 | 深入理解StatefulSet(三):有状态应用实践
21 | 容器化守护进程的意义:DaemonSet
22 | 撬动离线业务:Job与CronJob
23 | 声明式API与Kubernetes编程范式
24 | 深入解析声明式API(一):API对象的奥秘
25 | 深入解析声明式API(二):编写自定义控制器
26 | 基于角色的权限控制:RBAC
27 | 聪明的微创新:Operator工作原理解读
Kubernetes容器持久化存储 (4讲)
28 | PV、PVC、StorageClass,这些到底在说啥?
29 | PV、PVC体系是不是多此一举?从本地持久化卷谈起
30 | 编写自己的存储插件:FlexVolume与CSI
31 | 容器存储实践:CSI插件编写指南
Kubernetes容器网络 (8讲)
32 | 浅谈容器网络
33 | 深入解析容器跨主机网络
34 | Kubernetes网络模型与CNI网络插件
35 | 解读Kubernetes三层网络方案
36 | 为什么说Kubernetes只有soft multi-tenancy?
37 | 找到容器不容易:Service、DNS与服务发现
38 | 从外界连通Service与Service调试“三板斧”
39 | 谈谈Service与Ingress
Kubernetes作业调度与资源管理 (5讲)
40 | Kubernetes的资源模型与资源管理
41 | 十字路口上的Kubernetes默认调度器
42 | Kubernetes默认调度器调度策略解析
43 | Kubernetes默认调度器的优先级与抢占机制
44 | Kubernetes GPU管理与Device Plugin机制
Kubernetes容器运行时 (3讲)
45 | 幕后英雄:SIG-Node与CRI
46 | 解读 CRI 与 容器运行时
47 | 绝不仅仅是安全:Kata Containers 与 gVisor
Kubernetes容器监控与日志 (3讲)
48 | Prometheus、Metrics Server与Kubernetes监控体系
49 | Custom Metrics: 让Auto Scaling不再“食之无味”
50 | 让日志无处可逃:容器日志收集与管理
再谈开源与社区 (1讲)
51 | 谈谈Kubernetes开源社区和未来走向
答疑文章 (1讲)
52 | 答疑:在问题中解决问题,在思考中产生思考
特别放送 (1讲)
特别放送 | 2019 年,容器技术生态会发生些什么?
结束语 (1讲)
结束语 | Kubernetes:赢开发者赢天下
特别放送 | 云原生应用管理系列 (1讲)
基于 Kubernetes 的云原生应用管理,到底应该怎么做?
深入剖析Kubernetes
登录|注册

40 | Kubernetes的资源模型与资源管理

张磊 2018-11-23
你好,我是张磊。今天我和你分享的主题是:Kubernetes 的资源模型与资源管理。
作为一个容器集群编排与管理项目,Kubernetes 为用户提供的基础设施能力,不仅包括了我在前面为你讲述的应用定义和描述的部分,还包括了对应用的资源管理和调度的处理。那么,从今天这篇文章开始,我就来为你详细讲解一下后面这部分内容。
而作为 Kubernetes 的资源管理与调度部分的基础,我们要从它的资源模型开始说起。
我在前面的文章中已经提到过,在 Kubernetes 里,Pod 是最小的原子调度单位。这也就意味着,所有跟调度和资源管理相关的属性都应该是属于 Pod 对象的字段。而这其中最重要的部分,就是 Pod 的 CPU 和内存配置,如下所示:
apiVersion: v1
kind: Pod
metadata:
name: frontend
spec:
containers:
- name: db
image: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: "password"
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
- name: wp
image: wordpress
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
备注:关于哪些属性属于 Pod 对象,而哪些属性属于 Container,你可以在回顾一下第 14 篇文章《深入解析 Pod 对象(一):基本概念》中的相关内容。
在 Kubernetes 中,像 CPU 这样的资源被称作“可压缩资源”(compressible resources)。它的典型特点是,当可压缩资源不足时,Pod 只会“饥饿”,但不会退出。
而像内存这样的资源,则被称作“不可压缩资源(incompressible resources)。当不可压缩资源不足时,Pod 就会因为 OOM(Out-Of-Memory)被内核杀掉。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入剖析Kubernetes》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(26)

  • DJH
    “为什么宿主机进入 MemoryPressure 或者 Dis...“

    这是因为给宿主机打了污点标记吗?

    作者回复: 对

    2018-11-23
    17
  • wilder
    极客时间里面最爱的课程,没有之一,哈哈哈哈哈哈
    2018-11-23
    1
    10
  • gogo
    老师您好,cpu设置limit之后,容器的cpu使用率永远不会超过这个限制对吗?而mem设置limit之后,容器mem使用率有可能超过这个限制而被kill掉,也就是说设置了cpu limit之后,容器永远不会因为cpu超过限制而被kill对吗

    作者回复: 是

    2018-11-23
    8
  • 刘岚乔月
    1、3、5都在追文章,一直都有一个疑问,请作者能解惑下。
    对于主java是其他语言(非运维)的同学来说,我们是否需要深入了解k8s和docker(还是停留在使用层面) 我想一直跟着学的同学大部门还是冲着能找到更好的工作去的(有情怀的同学请忽略)
    目前更大公司的招聘对于要求掌握k8s和docker的基本上都是运维岗位。
    并没有招聘java要求掌握k8s和docker,面试中也不曾问到。感觉很尴尬 - -!
    毕竟时间成本在哪,请作者能阐述下自己的观点!

    作者回复: kubernetes 是云时代的开发者工具。重要的事情只说一遍。

    2018-11-25
    4
  • 虎虎❤️
    能否分享一下给namespace 设置quota的经验呢?

    如果设置的太小,会造成资源的浪费。如果设置太大,又怕起不到限制的作用。一个namespace使用资源太多可能会影响其他namespace用户的使用。

    这是否也是namespace只能做soft multi-tenant的佐证呢?Cloudfoundry应该是按照实际的usage来设置space的quota,如果有监控插件,k8s可以也按照实际的usage来设置quota吗?
    2018-11-23
    4
  • zfei
    请用老师,cpuset为2,这个Pod就独占两个cpu核上,假如宿主机总共只有10个cpu核,那么这台机就只能运行5个cpuset=2的Pod吗
    2018-11-30
    3
  • Adam
    宿主机进入了MemoryPressure后被打上污点标记,新的POD不会被调度到此节点,那假如宿主机资源恢复正常后,这个污点标记会自己消失吗?还是说需要人工介入去处理。
    2019-10-10
    2
  • unique
    这时候,该 Pod 就会被绑定在 2 个独占的 CPU 核上。

    独占的意思就是其它pod 不能使用这两个CPU了么?

    作者回复: 对

    2018-11-23
    2
  • Lucius
    "将 DaemonSet 的 Pod 都设置为 Guarant..." 不太懂, Guaranteed和重新创建有什么关系
    2019-03-05
    1
    1
  • 虎虎❤️
    在namespace limitRange 里面设置了default request 和 default limit之后,创建出来的pod即使不显式指定limit和request,是不是也是guaranteed?

    作者回复: 是的

    2018-11-27
    1
  • 阿鹏
    老师,关于资源隔离我有三个问题想请教一下。
    第一,正如您所说,/proc是不能被隔离的,但是我们可以通过lxcfs或者高版本的jdk版本来让容器里的服务知道自己的资源限制,或者还有方式,老师有推荐的吗?
    第二,我使用lxcfs隔离后,容器内/proc/meminfo文件确实是限制后的内存大小,但是容器内/proc/cpuinfo的信息跟宿主机是一样的,那么容器内的应该要怎么知道自己正确的cpu数量呢?
    第三,我参考github上的lxcfs-initializer使用DaemonSet和Initialzer给容器加入lxcfs,使用annotations做关联,使用了该annotation的deployment能正常部署,没使用的报错:
    Timeout: request did not complete within allowed duration
    求老师指点一下
    2018-11-27
    1
  • 汪浩
    被称作“不可压缩资源(compressible resources)

    应该是 uncompressible

    作者回复: 对,得然后编辑改一下

    2018-11-25
    1
  • 拉欧
    污点标记
    2019-11-23
  • manatee
    请问老师,当pod因为Eviction 而被删除时,如果pod是被replica set设置了副本数的,他会在其他node中在被拉起吗
    2019-11-20
  • WY
    我们的一个java程序运行在pod的容器里。pod只这一个容器,是httpclient高并发场景,通过premethous没有看到jvm内存泄露,但是pod的内存在不断增加,导致pod被重启,错误又不是oomkilled。而是error, errorcode 257请问是什么原因?
    2019-09-30
  • 随意门
    请问,Kubernetes有办法限制每个容器的磁盘使用量吗?假设一个容器的日志输出到容器中的一个文件中,然后日志量有很大,怎么限制才能防止它把宿主机的磁盘都占满?
    2019-09-25
  • beenchaos
    请问张老师,cpuset是否只适用于nginx或者redis这类单线程的应用,为这类进程单独绑定一个CPU。而针对多线程的应用程序,设置cpuset反而会限制该应用程序的并发能力?这样理解准确么?

    作者回复: 不能这么理解,首先,cpuset也可以绑定多个核的,其次,它的主要作用是让其他进程不能来到被独占的core上。

    2019-05-28
  • 15201457704
    DiskPressure nodefs.available, nodefs.inodesFree, imagefs.available, or imagefs.inodesFree Available disk space and inodes on either the node’s root filesystem or image filesystem has satisfied an eviction threshold 老师这个有点懵,请问是什么意思?
    2019-03-18
  • (!0+)[+]+([+]+)[-~...
    思考题
    因为controller看到node上有污点?
    2018-12-20
  • 初学者
    老师,能不能讲一下kubernetes是如何划分和管理宿主机上的cgroups结构的?

    作者回复: 这个非常简单,就是按qos划分成三种

    2018-12-01
收起评论
26
返回
顶部