Kubernetes 入门实战课
罗剑锋
Kong 高级工程师,Nginx/OpenResty 开源项目贡献者
19527 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
Kubernetes 入门实战课
15
15
1.0x
00:00/00:00
登录|注册

29|集群管理:如何用名字空间分隔系统资源?

你好,我是 Chrono。
在上一节课里我们学习了资源配额和检查探针,它们可以保障 Pod 这个微观单位很好地运行。那么很自然地,我们就会想:在集群的宏观层次,会不会也有类似的方法来为 Kubernetes 提供运行保障呢?
这是毫无疑问的,因为 Kubernetes 在各个方面都考虑得非常周密,也有很多的手段来管理、控制集群的资源。
今天我们就来看看名字空间(namespace)的一些高级用法。

为什么要有名字空间

其实我们很早就接触过 Kubernetes 的名字空间,比如第 10 讲中查看 apiserver 等组件要用到 kube-system 名字空间,还有在第 20 讲里的 Service 对象,DNS 的完整域名里也会用到名字空间。
不过之前学习的重点是 Kubernetes 架构和 API 对象,对名字空间没有特别关注,而且也过去比较久了,所以现在我们来重新认识一下名字空间。
首先要明白,Kubernetes 的名字空间并不是一个实体对象,只是一个逻辑上的概念。它可以把集群切分成一个个彼此独立的区域,然后我们把对象放到这些区域里,就实现了类似容器技术里 namespace 的隔离效果,应用只能在自己的名字空间里分配资源和运行,不会干扰到其他名字空间里的应用。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kubernetes集群管理中的名字空间是一种重要的资源隔离机制,可以将集群划分为独立的区域,避免资源冲突和争夺。本文介绍了名字空间的作用和使用方法,以及如何通过资源配额对名字空间进行管理。名字空间可以通过`kubectl create`命令轻松创建,同时也可以为名字空间设置资源配额,限制CPU、内存、存储容量等资源的使用。文章深入浅出地介绍了名字空间和资源配额的概念和使用方法,对于Kubernetes集群管理的实际操作具有很强的指导意义。 在名字空间加上资源配额限制后,要求所有在其中运行的Pod都必须声明资源需求,否则无法创建。为了简化对象的创建工作,可以使用`LimitRange`对象为容器或Pod添加默认的资源配额,避免反复设置配额的烦恼。通过示例代码和命令演示了如何创建名字空间和资源配额对象,并展示了资源配额对名字空间中对象数量的限制。此外,文章还提到了在生产环境中使用名字空间管理集群资源的重要性,以及设置资源配额应遵循的基本原则。 总的来说,本文通过介绍名字空间和资源配额的概念、使用方法以及实际操作示例,为读者提供了深入理解Kubernetes集群管理中资源隔离和管理的指导,对于需要在生产环境中使用Kubernetes进行资源规划和管理的技术人员具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kubernetes 入门实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(14)

  • 最新
  • 精选
  • 小宝
    Q1: namespace属于逻辑隔离,生产上体现可以划分为基础中间件命名空间,其余按照业务系统划分。 Q2: 按照目前实施一些经验,机器通常会采用cpu与内存形成一个固定比例,例如8core,16G, 16core,32G, 然后会建议应用软件采用这个比例去配置request,limited, 同时要求,request尽可能小些,可以容纳下更多应用,超过一些限额后,集群具备自动化弹性扩容,形成“超卖”。同理,资源配额也是建议这样的比例。

    作者回复: great

    2022-09-02归属地:北京
    14
  • 小林子
    老师,不同 namespace 的 service,pod 可以通信吗

    作者回复: 当然是可以的,像apiservier就在kube-system。

    2022-08-29归属地:上海
    2
    9
  • 小江爱学术
    +1 跪求加餐一个k8s里的rbac。

    作者回复: rbac在我的实际工作中用的还真不多,虽然大概了解一些,但感觉理解的还不是太深刻,可能要多等等了,sorry。

    2022-11-11归属地:上海
    3
    3
  • 会飞的蚂蚁
    老师,default跟defaultRequest ,是当pod资源达到defaultRequest后自动“扩容”到default吗?request.cpu跟limits.cpu也是如此?

    作者回复: 不是,这两个属性是默认的资源限制,不是扩容,可以用explain看它们的详细解释。

    2023-05-25归属地:广东
    1
  • peter
    请教老师几个问题: Q1:最后能否以加餐形式出一期面试题讲解? 群里有同学去面试k8s挂了,能否讲几个典型面试题? Q2:limitRange的定义不矛盾吗? 文中“容器的资源上限是 0.5 的 CPU 和 100MB 内存,每个 Pod 的最大使用量是 0.8 的 CPU 和 200MB 内存。”, 前面部分是上限,后面部分是最大值,后边的大于前面的啊,不矛盾吗? Q3:k8s的namespace和容器的namespace有什么区别?

    作者回复: 1.这个感觉有点勉强,我还真没面过Kubernetes相关的岗位,而且Kubernetes的知识面太广了,难免挂一漏万。 2.不矛盾,显然会取两个限制的较小的那个。 3.Kubernetes的namespace是一个逻辑管理的概念,而容器的namespace是一个实打实的隔离技术,可以再看前面的复习一下。

    2022-08-29归属地:北京
    2
    1
  • Lorry
    请教一下,从前章节都是直接在api对象的yaml文件中指定namespace,似乎并不用手动先创建namespace;这种直接在api对象的中指定,和本节讲的首先通过create ns,然后再在api对象的yaml文件中做指定,有什么区别吗?

    作者回复: 必须要先创建namespace,否则在YAML 里指定就回找不到,之前是因为namespace原本就有。

    2023-02-04归属地:四川
  • zhou
    老师request.cpu跟limits.cpu有什么区别?我认为只用一个就行了

    作者回复: 一个是基本运行的,一个是应对突发的最大上限,用处还是不一样的。

    2023-01-05归属地:上海
    2
  • 邵涵
    “其他 API 对象配额,使用 count/name.group 的形式,比如 count/jobs.batch、count/deployments.apps” 老师,请问这里的“group”是指什么?是kubectl api-resources中APIVERSION列中的内容吗?比如deployment的APIVERSION是“apps/v1”,job和cronjob的APIVERSION是“batch/v1”

    作者回复: 是的,理解的很对,因为api是按逻辑功能分组的。

    2022-10-25归属地:上海
  • benny
    老师,请问默认的容器资源限制比较少。如何针对单个容器调大资源呢?

    作者回复: 28讲里用resources字段可以调整容器的资源,是不是就可以了。

    2022-09-16归属地:北京
  • Frank
    老师,K8S默认一个节点上的pod调度数是110。 这个是用namespace限制的吗?

    作者回复: 和namespace无关,是Kubernetes对节点的限制,应该也是可以改的。

    2022-09-10归属地:北京
    2
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部