我在单台机器上的Docker Swarm中运行服务。这是我部署服务的步骤:

docker swarm init
docker stack deploy -c docker-compose.yml MyApplication

docker-compose.yml 的内容:
version: "3"
services:
    web:
        image: myimage:1.0
        ports:
            - "9000:80"
            - "9001:443"
        deploy:
            replicas: 3
            resources:
                limits:
                    cpus: "0.5"
                    memory: 256M
                restart_policy:
                    condition: on-failure

Docker Swarm是否能够根据当前流量自动增加副本数量?如果是,如何进行配置?如果没有,我如何实现,也许使用Kubernetes?

最佳答案

根据Pod的CPU利用率,可以自动缩放部署。您需要使用kubectl autoscale命令,该命令将创建一个Horizo​​ntalPodAutoscaler对象,该对象以指定的资源为目标并根据需要对其进行缩放。 HPA会定期调整缩放目标的副本数以匹配您指定的平均CPU利用率。

使用kubectl autoscale时,需要为应用程序指定最大和最小副本数,以及CPU使用率目标。

以示例为例:将最大副本数设置为5,将最小副本数设置为2,CPU使用率目标为60%,请运行以下命令:

$ kubectl autoscale deployment my-app --max 5 --min 2 --cpu-percent 60

请在documentationfollowing article中找到有关它的更多信息。希望对您有帮助。

09-25 15:58