背景
需要计算STS需要的资源并且扩容NameSpace的resourcequotas
方法
在Kubernetes Go客户端中,你可以使用一些基本的算术运算符来对ResourceList进行加减操作。ResourceList中的值是以v1.ResourceList
类型表示的,这个类型实际上是一个map,其中key是v1.ResourceName
,value是resource.Quantity
。你可以通过操作map中的值来进行加减乘除操作。
代码如下:
package k8simport (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 })
}