azure - 以小规模管理 Docker 容器
问题描述
我已经使用 Azure 容器实例部署了 5 个应用程序,这些应用程序运行良好,我遇到的问题是,目前所有容器都在运行,这很昂贵。
我想要做的是在需要时启动/停止实例,为此使用将一直工作的主容器或虚拟机。
例如
这个主服务收到一个请求,将服务号 3 启动 2 小时,然后将其关闭,所有其他容器将关闭,直到它们收到类似的请求。
对于我的用例,大部分时间每天使用每项服务的时间少于 5 小时。
现在,我知道 Kubernetes 它是一个用于管理容器的引擎,但我发现的所有示例都是针对大规模服务的,而不是针对每个只有一个容器的 5 个服务,也不确定 Kubernetes 是否允许在大多数时间关闭所有容器.
我在想的是处理所有这些抛出一些 API,但我没有在 Azure 中找到任何允许类似的服务,我只找到了创建新容器的选项,而不是启动和关闭它们。
编辑:
此外,这个应用程序运行的过程对于将它们放在无服务器平台上来说非常繁重。
解决方案
解决方案是为您的部署定义水平 pod 自动缩放器。
Horizontal Pod Autoscaler 根据观察到的 CPU 利用率(或者,在自定义指标支持下,根据其他一些应用程序提供的指标)自动扩展复制控制器、部署或副本集中的 pod 数量。请注意,Pod 水平自动缩放不适用于无法缩放的对象,例如 DaemonSet。
Horizontal 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。
推荐阅读
- python - 仅使用 ColumnTransformer 将 OneHotEncoding 特定列添加到 sklearn 管道中
- bootstrap-4 - 导航栏下拉菜单的问题
- firebase - 删除firebase实时数据库中的消息反应原生
- c++ - 使用 C++ 中的指针在数组中的特定位置插入元素
- python - Python中线性回归的梯度下降实现有什么问题
- react-native - 子数据长度改变时组件状态抛出错误
- python - 怎么去掉透明背景?
- flutter - 支付插件(谷歌支付)+flutter_stripe 集成
- pdf - iText7页面大小不适用于段落
- google-apps-script - 超出 JDBC 配额限制