这几年碳中和概念出现在各种新闻和大佬的文章中,正好今天看到一个CNCF的项目kube-green也是以减少二氧化碳排放为目标的。我们就来看看该项目到底是怎么做的。
在本文中,我们将介绍kube-green的新功能,并为你提供有关kube-green的其他一些信息。在文中,我将尝试解释该项目是如何诞生的,以及为什么它对减少资源浪费有用。
环境影响
我们在网上所做的一切都会对现实世界的环境都会产生影响。从我们收件箱里的电子邮件到云上的照片和视频,从在线游戏到数字货币,所有这些数字活动都在物理服务器上运行会不断消耗能源。
几个典型的例子:
- minecraft(一个游戏)的总排放量约为6亿公斤二氧化碳,相当于开车行驶约21亿公里(数据来源于网络)
- 比特币每年产生2200万到2290万公吨的二氧化碳排放量,排放量介于约旦和斯里兰卡的排放量之间。
-
这里可以看到我们的电子邮件产生了多少二氧化碳排放。
Kubernetes集群也不例外。此外,如果它们在云提供商中运行,即使没使用,它们也会产生二氧化碳。
kube-green项目的构思
在集群中,如果应用不是部署在生产环境的,比如测试环境或开发环境的话,这些应用只会在工作时间会用到。工作时间约为每周40小时。
此外,在Kubernetes中,如果不使用资源,也可以分配(CPU和内存,设置容器的资源情况)。这意味着大多数时候,这些非生产环境中的pod会不必要地消耗资源。
kube-green的基本思想是停止这些环境中的所有pod。

如何实现停止POD
kube-green是一个Kubernetes控制器,它定义了一个名为SleepInfo的自定义资源(CRD)。在命名空间中停止和重新启动pod时定义SleepInfo CRD即可。
因此,例如在开发环境中,可以在非开发业务时间停止所有的pod:从周一到周五每天早上醒来启动服务,从周一到周五每天晚上停止。
来看SleepInfo CRD的一个例子:
apiVersion: kube-green.com/v1alpha1
kind: SleepInfo
metadata:
name: working-hours
spec:
weekdays: "1-5"
sleepAt: "20:00"
wakeUpAt: "08:00"
timeZone: "Europe/Rome"
suspendCronJobs: true
上面定义了一个SleepInfo资源,并在spec里面设置哪些服务具体的启动和停止时间。
可以挂起哪些资源?
使用kube-green的v0.2.0版本,可以只可以停止deployment。其他资源将在未来会添加。
总结
您想要减少Kubernetes集群的二氧化碳排放和成本吗?可以关注kube-green项目。
Github地址:https://github.com/kube-green/kube-green
官网地址:https://kube-green.dev/
网友评论