对 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 })
}
相关推荐
圣殿骑士-Khtangc10 小时前
Go大厂面试真题精讲之并发安全Map的实现方案
golang
云烟成雨TD12 小时前
Micrometer 系列【67】统一观测:基于 Spring Boot 的生产级演示案例 | 跨线程场景
spring boot·云原生·链路追踪
圣殿骑士-Khtangc13 小时前
Go-Channel面试精讲从底层结构到select随机性
golang
2401_8346369913 小时前
保姆级 K8s 运维:RBAC 认证 + Dashboard+Local/NFS 动态卷实战
运维·容器·kubernetes
爱莉希雅&&&13 小时前
Kubernetes Service 完整学习笔记
笔记·学习·kubernetes
北漂燕郊杨哥13 小时前
dsh-desktop:DeepSeek Harness 的本地优先桌面应用
golang·wails·deepseek·deepseekharness
lang2015092813 小时前
从 J2EE 到云原生:Spring Framework 的设计哲学与演进之路
spring·云原生·java-ee
Henry-SAP21 小时前
SAP引领ERP智能化转型
人工智能·云原生·sap·erp
流烟默1 天前
Kubernetes 调度器完全指南:从原理到生产实战
云原生·容器·kubernetes
styshoo1 天前
[NVSentinel] gpu-health-monitor模块调研
人工智能·云原生·nvsentinel