对 K8s 中的 NameSpace的ResourceList进行加减操作

背景

需要将命名空间内新家的STS所使用的配额自动加到NameSpace上, 就需要对NameSpace的ResourceList做加减操作

计算STS配额参考:

https://blog.csdn.net/qq_21047625/article/details/134946922

将STS配额转为NameSpace的配额参考:

https://blog.csdn.net/qq_21047625/article/details/135020443

代码

go 复制代码
import (
	v1 "k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/api/resource"
)

var (
	nsLabelArray []v1.ResourceName = []v1.ResourceName{"requests.cpu", "requests.memory", "requests.storage", "requests.nvidia.com/gpu", "limits.cpu", "limits.memory"}
)

func CalNsResourceList(data1 v1.ResourceList, data2 v1.ResourceList, calFunc func(resource.Quantity, resource.Quantity) resource.Quantity) (res v1.ResourceList) {
	res = v1.ResourceList{}
	for _, labelData := range nsLabelArray {
		req1 := data1[labelData]
		req2 := data2[labelData]
		resQuota := calFunc(req1, req2)

		if resQuota.CmpInt64(0) < 0 {
			resQuota.Set(0)
		}
		res[labelData] = resQuota
	}
	return
}

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

func SubNsResourceList(data1 v1.ResourceList, data2 v1.ResourceList) v1.ResourceList {
	return CalNsResourceList(data1, data2, func(q1, q2 resource.Quantity) resource.Quantity { q1.Sub(q2); return q1 })
}
相关推荐
_BugMan11 小时前
【k8s】基础概念+下载安装教程
容器·rpc·kubernetes
belldeep12 小时前
go语言:在 Win10上,如何编译 ffuf-v2.1.0?
golang·安全测试·ffuf
失因12 小时前
Docker 镜像结构与 Dockerfile 案例
运维·docker·云原生·容器·tomcat
浪飘12 小时前
golang读写锁
开发语言·数据库·golang
gopyer12 小时前
180课时吃透Go语言游戏后端开发11:Go语言中的并发编程
golang·go·游戏开发·并发编程
cr7xin14 小时前
go语言结构体内存对齐
后端·golang
容器魔方14 小时前
Volcano v1.13 重磅发布!大模型训练与推理等调度能力全面增强
云原生·容器·云计算
小北爱编程ma17 小时前
【云原生】 Prometheus-Operator
云原生
xiaodaidai丶20 小时前
Eureka的自我保护机制
云原生·eureka·springcloud
Yeats_Liao20 小时前
Go语言 实现 TCP 端口扫描器
网络·tcp/ip·golang