K8s 的 ResourceList进行加减操作工具类

2023-12-13 05:52:30

背景

需要计算STS需要的资源并且扩容NameSpace的resourcequotas

方法

在Kubernetes Go客户端中,你可以使用一些基本的算术运算符来对ResourceList进行加减操作。ResourceList中的值是以v1.ResourceList类型表示的,这个类型实际上是一个map,其中key是v1.ResourceName,value是resource.Quantity。你可以通过操作map中的值来进行加减乘除操作。
代码如下:

package k8s

import (
	v1 "k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/api/resource"
)

func CalResourceList(data1 v1.ResourceList, data2 v1.ResourceList, calFunc func(resource.Quantity, resource.Quantity) resource.Quantity) (res v1.ResourceList) {
	res = v1.ResourceList{}
	res[v1.ResourceCPU] = calFunc(*data1.Cpu(), *data2.Cpu())
	res[v1.ResourceMemory] = calFunc(*data1.Memory(), *data2.Memory())
	res[v1.ResourceStorage] = calFunc(*data1.Storage(), *data2.Storage())
	return
}

func AddResourceList(data1 v1.ResourceList, data2 v1.ResourceList) v1.ResourceList {
	return CalResourceList(data1, data2, func(q1, q2 resource.Quantity) resource.Quantity { q1.Add(q2); return q1 })
}

func SubResourceList(data1 v1.ResourceList, data2 v1.ResourceList) v1.ResourceList {
	return CalResourceList(data1, data2, func(q1, q2 resource.Quantity) resource.Quantity { q1.Sub(q2); return q1 })
}

文章来源:https://blog.csdn.net/qq_21047625/article/details/134946922
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。