V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
felixin
V2EX  ›  Kubernetes

k8s 里多个 pods 能共享一套 cpu/内存限制吗?

  •  
  •   felixin · 2021-07-11 00:12:20 +08:00 via Android · 3198 次点击
    这是一个创建于 1258 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如我有 100 个 pods,总共给它们分配 8c/32g,有什么手段可以办到吗?

    这些 pods 大部分时间只有少部分活动,其他的都在待机状态,只耗内存不耗 cpu

    20 条回复    2021-07-13 09:29:47 +08:00
    felixin
        1
    felixin  
    OP
       2021-07-11 00:13:14 +08:00 via Android
    不能在一个 pod 里装多个 container,因为端口,文件系统会冲突
    515576745
        2
    515576745  
       2021-07-11 02:59:09 +08:00 via Android
    pod 模板指定 resource request 和 limit
    kaikai5601
        3
    kaikai5601  
       2021-07-11 10:04:45 +08:00 via iPhone   ❤️ 2
    在一个 namespace 下面可以,分配 ns 限制
    vhui
        4
    vhui  
       2021-07-11 11:57:59 +08:00   ❤️ 1
    resourcequota ?
    liuxu
        5
    liuxu  
       2021-07-11 13:40:41 +08:00
    ns 限制是正解
    felixin
        6
    felixin  
    OP
       2021-07-11 20:48:26 +08:00 via Android
    @kaikai5601 这个好像是指该 ns 下的 pod 的资源 limit 总和,也就是说比如创建 100 个 pod 的话,每个 pod 上写的 limit 不能超过总数 8c/100=0.08c ,这样他们加起来才是总数 8c 。

    但我需要的是每一个 pod 的 limit 都是 8c,100 个 pod 的总 limit 也是 8c,这个好像是做不到的?

    也就是如果有前面一个 pod 占用了全部的 8c,那么后面的 pod 可以完全无响应。最差情况下允许有 99 个完全无法运行的 pod 。
    kaikai5601
        7
    kaikai5601  
       2021-07-12 00:25:11 +08:00 via iPhone
    @felixin 做不到,你 limit 不够,apiserver 不会接受你创建 pod 的请求了。你这样做的意义是啥。?
    littlezzll
        8
    littlezzll  
       2021-07-12 00:44:17 +08:00 via Android
    limitrange default? Pod 不指定 resource 就走默认的 limitrange
    turingli
        9
    turingli  
       2021-07-12 07:12:46 +08:00 via Android
    不限制 pod 只限制 ns
    miaoshixuan
        11
    miaoshixuan  
       2021-07-12 09:38:48 +08:00
    k8s 做不到的
    lvzhiqiang
        12
    lvzhiqiang  
       2021-07-12 10:42:22 +08:00
    共享一套限制可以从 NS 层级去控制,POD 设置一个默认的限制,但是目前没办法根据应用 POD 的状态去调整 POD 的内存用量,内存你一旦分配出去,除非杀掉,否则内存是回收不回来,除非你应用如果不重要的话,通过流量请求唤醒,我觉得有可能实现,但是这又会引生其它问题。
    felixin
        13
    felixin  
    OP
       2021-07-12 11:18:39 +08:00 via Android
    @kaikai5601 就是一套插件系统允许用户上传自己的容器镜像生成 pod,但是大多数 pod 只有个位数的请求量,长期占用 cpu 资源太浪费了
    felixin
        14
    felixin  
    OP
       2021-07-12 11:20:18 +08:00 via Android
    @lvzhiqiang 流量唤醒这个思路可以试试
    kaikai5601
        15
    kaikai5601  
       2021-07-12 11:58:22 +08:00   ❤️ 1
    @felixin 建议直接 pod 限制,如果用户有操作的话配置 HPA,自动扩容,用户操作结束自动缩
    salmon5
        16
    salmon5  
       2021-07-12 11:59:19 +08:00   ❤️ 1
    可以配置,这种是 Burstable level 的 pod
    limit > request,可以大很多;
    requests:
    cpu: 50m
    memory: 128Mi
    limits:
    cpu: 8000m
    memory: 16Gi
    可以运行 160 个 pod
    noahzh
        17
    noahzh  
       2021-07-12 14:50:00 +08:00
    不限制不就完了。
    salmon5
        18
    salmon5  
       2021-07-13 09:24:39 +08:00
    @noahzh 不限制不行,它有默认值
    felixin
        19
    felixin  
    OP
       2021-07-13 09:27:09 +08:00 via Android
    @salmon5 谢谢,找了点资料

    https://www.weave.works/blog/kubernetes-pod-resource-limitations-and-quality-of-service
    felixin
        20
    felixin  
    OP
       2021-07-13 09:29:47 +08:00 via Android
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1023 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:07 · PVG 06:07 · LAX 14:07 · JFK 17:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.