从零开始写 k8s 发布工具 - 3.4. 用字符串定义容器申请资源上下限
3.4. 用字符串定义容器申请资源上下限
Pod 的资源申请, 在调度策略中, 是一个重要的参数数据。 因此其重要性自然不必多说
容器资源申请
在官网中, 对于资源的申请和管理有详细的描述。 https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/
和 服务质量 QoS 息息相关, https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/quality-service-pod/
这里简单的归类, 可以速记, 按照服务质量高到低
- Guaranteed: request = limit
- Burstable: request < limit
- BestEffort: 没有 request 和 limit
kustz.yml
配置
还是先来看看 kustz.yml
配置中, 资源的抽象 name: request/limit
。
|
|
对应的, 在 /pkg/kustz/kustz.go
中, 增加字段, 如下。
|
|
编码
这部分的编码还是还是很简单的。 因为在 k8s.io/apimachinery/pkg/api/resource
库中, 已经为我们提供了 数据及单位 的解析封装, 直接调用即可。
所以大部分编码工作还是在字符串的解析上面。
第一步, 在 /pkg/kustz/k_container.go
中, 为容器添加资源字段
|
|
第二步, 在 /pkg/tokube/container_resources.go
中, 解析 map[string]string 对象, 获取资源名和值, 并返回 corev1.Resources
|
|
第三步, 在 /pkg/tokube/container_resources.go
中分割我们定义的字符串。
|
|
可以看到, 这里使用了官方的函数 resource.MustParse(value)
, 直接返回结论, 省了很多事情。
测试
执行命令, 查看结果。
|
|
除了默认的 cpu, memory
之外, 我们还添加了 nvidia/gpu
这种 CRD 资源。
GPU 结论可以参考, https://help.aliyun.com/document_detail/94800.html
- 原文链接:https://typonotes.com/posts/books/kustz/chapter03/04-container-resources/
- 本文为原创文章,转载注明出处。
- 欢迎 扫码关注公众号
Go与云原生
或 订阅网站 https://typonotes.com/ 。 - 第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。