对 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 })
}
相关推荐
DO_Community16 小时前
DigitalOcean Kubernetes 现已支持 Gateway API 托管服务
容器·kubernetes·gateway
Sally璐璐16 小时前
Go组合式继承:灵活替代方案
开发语言·后端·golang
gou1234123416 小时前
Go语言io.Copy深度解析:高效数据复制的终极指南
开发语言·golang·php
什么都想学的阿超18 小时前
【大语言模型 57】容器化训练环境:Docker + Kubernetes + Slurm
docker·语言模型·kubernetes
像风一样自由202019 小时前
Go语言详细指南:特点、应用场景与开发工具
开发语言·后端·golang
@ chen19 小时前
kubectl常用命令
云原生·kubernetes·k8s
潮落拾贝1 天前
k8s部署kafka三节点集群
容器·kafka·kubernetes
胡萝卜的兔1 天前
go 日志的分装和使用 Zap + lumberjack
开发语言·后端·golang
何似在人间5751 天前
Go语言快速入门教程(JAVA转go)——1 概述
java·开发语言·golang
NineData1 天前
NineData云原生智能数据管理平台新功能发布|2025年8月版
数据库·mongodb·云原生·数据库管理工具·ninedata·数据库迁移·数据复制