我已经使用 Azure 容器实例部署了 5 个应用程序,这些应用程序运行良好,但我遇到的问题是,目前所有容器都在运行,这会导致成本高昂。
我想要做的是在需要时启动/停止实例,为此使用始终工作的主容器或虚拟机。
E.G.
此主服务收到请求,将 3 号服务启动 2 小时,然后将其关闭,所有其他容器将关闭,直到收到类似的请求。
对于我的用例,大多数时候每项服务每天的使用时间少于 5 小时。
现在,我知道 Kubernetes 是一个用于管理容器的引擎,但我发现的所有示例都是针对大规模服务的,而不是针对每个只有一个容器的 5 个服务的,也不确定 Kubernetes 是否允许关闭所有容器的时间。
我正在考虑的是处理所有这些抛出一些API,但我没有在Azure中找到任何允许类似的服务,我只找到了创建新容器的选项,而不是启动和关闭他们下来了。
编辑:
此外,该应用程序运行的进程对于无服务器平台而言过于繁重。
最佳答案
解决方案是为您的部署定义水平 Pod 自动缩放器。
Horizontal Pod Autoscaler 根据观察到的 CPU 利用率(或者通过自定义指标支持,根据应用程序提供的其他一些指标)自动缩放复制 Controller 、部署或副本集中的 Pod 数量。请注意,Horizontal Pod Autoscaling 不适用于无法缩放的对象,例如 DaemonSets。
Horizontal Pod Autoscaler 是作为 Kubernetes API 资源和 Controller 实现的。资源决定 Controller 的行为。 Controller 定期调整复制 Controller 或部署中的副本数量,以使观察到的平均 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 .
关于azure - 管理小规模 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58104279/