首页 > 解决方案 > 以小规模管理 Docker 容器

问题描述

我已经使用 Azure 容器实例部署了 5 个应用程序,这些应用程序运行良好,我遇到的问题是,目前所有容器都在运行,这很昂贵。

我想要做的是在需要时启动/停止实例,为此使用将一直工作的主容器或虚拟机。

例如

这个主服务收到一个请求,将服务号 3 启动 2 小时,然后将其关闭,所有其他容器将关闭,直到它们收到类似的请求。

对于我的用例,大部分时间每天使用每项服务的时间少于 5 小时。

现在,我知道 Kubernetes 它是一个用于管理容器的引擎,但我发现的所有示例都是针对大规模服务的,而不是针对每个只有一个容器的 5 个服务,也不确定 Kubernetes 是否允许在大多数时间关闭所有容器.

我在想的是处理所有这些抛出一些 API,但我没有在 Azure 中找到任何允许类似的服务,我只找到了创建新容器的选项,而不是启动和关闭它们。

编辑:

此外,这个应用程序运行的过程对于将它们放在无服务器平台上来说非常繁重。

标签: azuredockerkubernetesgoogle-cloud-platform

解决方案


解决方案是为您的部署定义水平 pod 自动缩放器。

Horizo​​ntal Pod Autoscaler 根据观察到的 CPU 利用率(或者,在自定义指标支持下,根据其他一些应用程序提供的指标)自动扩展复制控制器、部署或副本集中的 pod 数量。请注意,Pod 水平自动缩放不适用于无法缩放的对象,例如 DaemonSet。

Horizo​​ntal Pod Autoscaler 被实现为 Kubernetes API 资源和控制器。资源决定了控制器的行为。控制器定期调整复制控制器或部署中的副本数量,以将观察到的平均 CPU 利用率与用户指定的目标相匹配。

配置文件应如下所示:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
 name: hpa-images-service
spec:
 scaleTargetRef:
   apiVersion: apps/v1beta1
   kind: Deployment
   name: example-deployment
 minReplicas: 2
 maxReplicas: 100
 targetCPUUtilizationPercentage: 75

scaleRef 应该参考您的部署定义和 minReplicas 您可以设置为 0,targetCPUUtilization 的值您可以根据您的喜好设置。由于终止 Pod 具有高 CPU 利用率,这种方法应该可以帮助您节省资金。

Kubernetes 官方文档:kubernetes-hpa

GKE 自动缩放器文档:gke-autoscaler

关于使用 GCP 节省现金的有用博客:kubernetes-google-cloud


推荐阅读