比如我有 100 个 pods,总共给它们分配 8c/32g,有什么手段可以办到吗?
这些 pods 大部分时间只有少部分活动,其他的都在待机状态,只耗内存不耗 cpu
1 felixin OP 不能在一个 pod 里装多个 container,因为端口,文件系统会冲突 |
![]() | 2 515576745 2021-07-11 02:59:09 +08:00 via Android pod 模板指定 resource request 和 limit |
3 kaikai5601 2021-07-11 10:04:45 +08:00 via iPhone ![]() 在一个 namespace 下面可以,分配 ns 限制 |
![]() | 4 vhui 2021-07-11 11:57:59 +08:00 ![]() resourcequota ? |
![]() | 5 liuxu 2021-07-11 13:40:41 +08:00 ns 限制是正解 |
6 felixin OP @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 。 |
7 kaikai5601 2021-07-12 00:25:11 +08:00 via iPhone @felixin 做不到,你 limit 不够,apiserver 不会接受你创建 pod 的请求了。你这样做的意义是啥。? |
![]() | 8 littlezzll 2021-07-12 00:44:17 +08:00 via Android limitrange default? Pod 不指定 resource 就走默认的 limitrange |
9 turingli 2021-07-12 07:12:46 +08:00 via Android 不限制 pod 只限制 ns |
![]() | 10 Abirdcfly 2021-07-12 09:05:22 +08:00 ![]() |
11 miaoshixuan 2021-07-12 09:38:48 +08:00 k8s 做不到的 |
![]() | 12 lvzhiqiang 2021-07-12 10:42:22 +08:00 共享一套限制可以从 NS 层级去控制,POD 设置一个默认的限制,但是目前没办法根据应用 POD 的状态去调整 POD 的内存用量,内存你一旦分配出去,除非杀掉,否则内存是回收不回来,除非你应用如果不重要的话,通过流量请求唤醒,我觉得有可能实现,但是这又会引生其它问题。 |
13 felixin OP @kaikai5601 就是一套插件系统允许用户上传自己的容器镜像生成 pod,但是大多数 pod 只有个位数的请求量,长期占用 cpu 资源太浪费了 |
14 felixin OP @lvzhiqiang 流量唤醒这个思路可以试试 |
15 kaikai5601 2021-07-12 11:58:22 +08:00 ![]() @felixin 建议直接 pod 限制,如果用户有操作的话配置 HPA,自动扩容,用户操作结束自动缩 |
16 salmon5 2021-07-12 11:59:19 +08:00 ![]() 可以配置,这种是 Burstable level 的 pod limit > request,可以大很多; requests: cpu: 50m memory: 128Mi limits: cpu: 8000m memory: 16Gi 可以运行 160 个 pod |
17 noahzh 2021-07-12 14:50:00 +08:00 不限制不就完了。 |
19 felixin OP @salmon5 谢谢,找了点资料 https://www.weave.works/blog/kubernetes-pod-resource-limitations-and-quality-of-service |
20 felixin OP |