对 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 })
}
相关推荐
RuoyiOffice6 小时前
KubeSphere 容器云实践:从管理 K8s 到建设企业 PaaS,还需要哪些能力
spring boot·kubernetes·kubesphere·jenkins·paas·微服务部署·ruoyi office
风吹稻子7 小时前
etcd备份与恢复:删了 etcd.yaml,容器为什么还在跑?——一次 K8s 控制面死锁排查实录
kubernetes
weirong10 小时前
Operator 的测试该写到哪一层?139 个用例之后我划的三条线
kubernetes
阿里云云原生10 小时前
稳定复现超 70% 的缺陷,报警到自动修复的 Agent 流水线实践
云原生
阿里云云原生11 小时前
从“自证清白”到“因果链条”:智能体如何重塑运维排障效率
云原生
阿里云云原生12 小时前
TechTalk丨从能买奶茶到能进企业,Agent 绕不开同一组问题
云原生·agent
逐流人13 小时前
手工建集群到全自动发布:k8s集群部署与DevOps流水线整合实战
ci/cd·云原生·kubernetes·云计算·devops
我不会起名字32214 小时前
K8s Pod 反复重启 CrashLoopBackOff:从 exit code 到根因的 5 步排查
云原生·容器·kubernetes·k8s
瑞克-桑切斯14 小时前
ERP 企业生产管理系统部署手册
运维·docker·云原生·容器·eureka
我不会起名字32214 小时前
K8s 节点磁盘打满导致 Pod 被驱逐:4 类占用与回收顺序
运维·kubernetes·k8s·diskpressure·evicted