【问题标题】:Manage Docker containers at low scale以小规模管理 Docker 容器
【发布时间】:2020-01-25 23:50:31
【问题描述】:

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

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

例如

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

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

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

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

编辑:

此外,这些应用程序运行的进程非常繁重,无法将它们放在无服务器平台上。

【问题讨论】:

  • 在 Kubernetes 中打开和关闭单个容​​器非常容易(将部署中的副本数设置为 0 或 1),但根据您所描述的 Kubernetes 的开销可能大于您的稳态资源需求。
  • @DavidMaze 很高兴知道可能有 0 或 1。您的意思是“大于您的稳态资源需求”是因为开发维护时间还是 Kubernetes 本身的成本?
  • 您的意思是手动、按计划或以编程方式启动/停止它们以响应某些事件?
  • 这不是一个答案,但既然你用 google-cloud-platform 标记了你的问题,我会看看 Google Cloud Run。容器自动缩放到 0。
  • 如果您运行的应用程序仅用于测试和实验,而不是生产用途,您可以在您的计算机上免费使用 minikube,而不是使用云提供商。

标签: azure docker kubernetes google-cloud-platform


【解决方案1】:

解决方案是为您的部署定义水平 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

【讨论】:

  • 有帮助吗?请让我知道并投票或接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
相关资源
最近更新 更多