如果你在Kubernetes部署上的支出超出预期,那么你并不”孤单”。许多Kubernetes运营商的Kubernetes成本都比他们预期的要高。这是因为,与Kubernetes的部署一样,如何管理或降低成本也可能具有挑战性。
在本文中,我们提供了五个基本技巧,来帮助你实现低成本高效益的Kubernetes部署。
1.确定你的工作负载是否适合Kubernetes
Kubernetes可以为许多工作负载(但不一定是所有工作负载)提供显著的成本优势。如果你只是将所有东西都扔进Kubernetes并期望省钱,那么最终可能会造成沉重的技术债务负担,或者运营恶梦。你需要确定工作负载是否适合使用Kubernetes。
要考虑的关键问题是:
- “此工作负载是否需要保存状态(如数据库)?”
- “此工作负载是否支持弹性伸缩?”
如果将工作负载移至Kubernetes会导致低效率的运维,并可能需要耗费更多资源,那么在Kubernetes中运行它,可能并不具有成本效益。
2.了解工作负载的资源要求
在将工作负载转移到Kubernetes之前,你必须要决定在集群中使用的节点的大小和类型,因此必须评估所有工作负载中的资源需求(主要是CPU和内存)。对于有状态的工作负载,还要考虑需要多少存储空间。提前对工作负载的资源消耗及其可以处理的请求量有所了解,在需要新增实例之前将有助于估算总体成本。
幸运的是,大多数(即使不是全部)编程语言都可以帮助你了解资源消耗情况。结合性能分析工具与负载测试工具,你将很好地了解应用程序在压力下的性能和资源要求。
3.选择大小合适的节点
不幸的是,没有选择正确大小节点的灵丹妙药。更难的是Kubernetes允许你使用大小不一的节点以适合你的工作负载。这很大程度上取决于你必须部署的应用程序数量,以及资源要求。
还需要考虑在云提供商内部或外部设置某种类型的可观察性和警报。这可以让你知道:你当前花费多少。将事件绑定到来自Kube-Scheduler的日志中,将使你对需要部署的内容有所了解。
选择大小合适的节点是一项需要经常进行的练习。
4.正确设置你的资源请求和限制
根据对工作负载的资源消耗分析,花时间适当地设置资源请求和限制。这可以充分发挥容器编排工具带来的便利。有了资源需求后,Kubernetes可以更有效地对Pod进行调度,从而不会浪费资源。
一旦设置了限制并部署了工作负载,你就可以实施更高级的功能-如Pod 水平自动扩缩 (Horizontal Pod Autoscaler,HPA) 。HPA是Kubernetes中自动缩放的核心组件,可根据需要弹性伸缩Pod。HPA可以使用诸如CPU和内存之类的指标,也可以对自定义指标(如某个时间点)进行操作。
5.应用程序中要具有可观察性
你不仅需要监视Kubernetes,还要获得其中运行的应用程序的可观察性。关于应用程序,除了要了解每个Pod占用的CPU,内存,网络和存储量之外,你还应该具备应用程序方面的度量标准-每秒请求数量等等。
你可以将HPA配置为根据应用程序方面的自定义指标进行操作。有了应用程序的可观察性,这将使你的组织可以在以后就集群大小和扩缩容做出更明智的决策。提高可观察性,还要关注你的云提供商提供的功能,在Kubernetes集群节点中针对性地添加警报等。
无论你是在刚刚开始考虑部署Kubernetes,还是已经经历了一段时间,在整个团队中设置这些准则都可以帮助你优化Kubernetes的性能和成本。通过实施以上5个技巧,你可以节省大量成本,并能更准确地预测成本,避免那些意外的账单。虽然可能需要一些工作才能开始,但这里的努力可以取得实质性的回报。
译文链接:https://thenewstack.io/5-essential-tips-to-manage-kubernetes-costs/