是否有可能扩大 pods 以应对 Kubernetes 中的高流量?
Is it possible to scale up pods in expectance of high traffic in Kubernetes?
所以,我们正在考虑将我们的生产服务器切换到 Kubernetes。现在,它还不是很专业,因为它只是一个单独的 nginx 实例。
99% 的时间我们的服务器需要每分钟处理大约 30 个请求,这很容易做到。
在 特定时间,我们在之前 确切知道,在同一秒内可能有 2000 个用户在等待服务。这显然对它来说太多了,上次它经常返回 502。
Kubernetes Autoscaling 似乎是一个很好的方法。唯一的问题是我们在那个特定时间需要额外的容器,而不是 30 秒后。
那么有没有办法“手动”缩放?比如告诉 Kubernetes 在晚上 8 点 MESZ 准备 4 个容器?
在 Kubernetes 中有多种自动缩放 Pods 的方法。
水平 Pod 自动缩放器
您可以使用 Horizontal Pod Autoscaler 根据指标反应性地扩大 Pods。您还可以使用自定义指标。
手动调整副本数
您也可以在Deployment中手动设置replicas:
的个数。这可以通过更改清单声明式完成,或者通过使用 kubectl命令式[=36=]完成:
kubectl scale deployment my-app --replicas=5
使用 CronJob 调整副本数
您还可以将 Kubernetes CronJob 与执行上述命令的 kubectl-image 一起使用,以在特定时间扩展副本数量。
使用 Knative Serving Autoscaler 自动缩放每个请求
使用 Knative Serving 时,您可以使用 Knative Service Autoscaler 根据请求数量进行扩展。
所以,我们正在考虑将我们的生产服务器切换到 Kubernetes。现在,它还不是很专业,因为它只是一个单独的 nginx 实例。 99% 的时间我们的服务器需要每分钟处理大约 30 个请求,这很容易做到。 在 特定时间,我们在之前 确切知道,在同一秒内可能有 2000 个用户在等待服务。这显然对它来说太多了,上次它经常返回 502。 Kubernetes Autoscaling 似乎是一个很好的方法。唯一的问题是我们在那个特定时间需要额外的容器,而不是 30 秒后。
那么有没有办法“手动”缩放?比如告诉 Kubernetes 在晚上 8 点 MESZ 准备 4 个容器?
在 Kubernetes 中有多种自动缩放 Pods 的方法。
水平 Pod 自动缩放器
您可以使用 Horizontal Pod Autoscaler 根据指标反应性地扩大 Pods。您还可以使用自定义指标。
手动调整副本数
您也可以在Deployment中手动设置replicas:
的个数。这可以通过更改清单声明式完成,或者通过使用 kubectl命令式[=36=]完成:
kubectl scale deployment my-app --replicas=5
使用 CronJob 调整副本数
您还可以将 Kubernetes CronJob 与执行上述命令的 kubectl-image 一起使用,以在特定时间扩展副本数量。
使用 Knative Serving Autoscaler 自动缩放每个请求
使用 Knative Serving 时,您可以使用 Knative Service Autoscaler 根据请求数量进行扩展。