spring-cloud / spring-cloud-deployer-local

The Spring Cloud Deployer implementation for a "local" machine
Apache License 2.0
39 stars 53 forks source link

Resource limits ignored for docker local #209

Open DemianTinkiel opened 2 years ago

DemianTinkiel commented 2 years ago

On a local docker deployment, using kafka/docker time app in a stream like time > :foo with properties

deployer.time.count=3
deployer.time.memory=2

3 instances are started but no limit is set on the containers. Looking at skipper logs I see

Command to be executed: docker run --network foo_default --rm -e deployerId=asdf.time-v1 -e SPRING_APPLICATION_JSON={"endpoints.jmx.unique-names":"true","endpoints.shutdown.enabled":"true","spring.cloud.stream.kafka.streams.binder.zkNodes":"zookeeper:2181","spring.cloud.dataflow.stream.name":"asdf","spring.cloud.stream.poller.time-unit":"SECONDS","management.metrics.tags.instance.index":"${vcap.application.instance_index:${spring.cloud.stream.instanceIndex:0}}","spring.cloud.stream.kafka.streams.binder.brokers":"PLAINTEXT://broker:9092","wavefront.application.service":"${spring.cloud.dataflow.stream.app.label:unknown}-${spring.cloud.dataflow.stream.app.type:unknown}-${vcap.application.instance_index:${spring.cloud.stream.instanceIndex:0}}","spring.cloud.stream.instanceCount":"3","management.metrics.tags.application.guid":"${spring.cloud.application.guid:unknown}","management.metrics.export.influx.enabled":"true","server.port":"28716","spring.cloud.stream.bindings.output.destination":"asd","spring.cloud.stream.kafka.binder.zkNodes":"zookeeper:2181","management.metrics.tags.application.name":"${vcap.application.application_name:${spring.cloud.dataflow.stream.app.label:unknown}}","wavefront.application.name":"${spring.cloud.dataflow.stream.name:unknown}","management.metrics.tags.application.type":"${spring.cloud.dataflow.stream.app.type:unknown}","spring.cloud.dataflow.stream.app.label":"time","management.metrics.export.influx.uri":"http://influxdb:8086","spring.cloud.stream.poller.fixed-delay":"1","spring.cloud.stream.instanceIndex":"1","management.metrics.tags.stream.name":"${spring.cloud.dataflow.stream.name:unknown}","spring.application.index":"1","management.metrics.tags.application":"${spring.cloud.dataflow.stream.name:unknown}-${spring.cloud.dataflow.stream.app.label:unknown}-${spring.cloud.dataflow.stream.app.type:unknown}","instance.index":"1","management.metrics.export.influx.db":"myinfluxdb","spring.cloud.dataflow.stream.app.type":"source","spring.cloud.application.guid":"asdf.time-v1-1","spring.cloud.stream.kafka.binder.brokers":"PLAINTEXT://broker:9092","spring.jmx.default-domain":"asdf.time-v1","spring.cloud.application.group":"asdf"} -p 28716:28716 --name=asdf.time-v1-2 springcloudstream/time-source-kafka:3.0.2
2021-09-08 09:26:34.301  INFO 1 --- [eTaskExecutor-4] o.s.c.d.spi.local.LocalAppDeployer       : Deploying app with deploymentId asdf.time-v1 instance 2.

and doing a docker stats asdf.time-v1-2 I see.

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
c877b98f0b45        asdf.time-v1-2      0.25%               319.2MiB / 7.674GiB   4.06%               122kB / 474kB       64MB / 0B           50

I would expect it to read MiB/2MiB for MEM USAGE / LIMIT.

Am I missing something?

Environment info:

{
  "versions": {
    "implementation": {
      "name": "spring-cloud-dataflow-server",
      "version": "2.8.1"
    },
    "core": {
      "name": "Spring Cloud Data Flow Core",
      "version": "2.8.1"
    },
    "dashboard": {
      "name": "Spring Cloud Dataflow UI",
      "version": "3.1.1"
    },
    "shell": {
      "name": "Spring Cloud Data Flow Shell",
      "version": "2.8.1",
      "url": "https://repo1.maven.org/maven2/org/springframework/cloud/spring-cloud-dataflow-shell/2.8.1/spring-cloud-dataflow-shell-2.8.1.jar"
    }
  },
  "features": {
    "streams": true,
    "tasks": true,
    "schedules": false,
    "monitoringDashboardType": "GRAFANA"
  },
  "runtimeEnvironment": {
    "appDeployer": {
      "deployerImplementationVersion": "2.7.1",
      "deployerName": "Spring Cloud Skipper Server",
      "deployerSpiVersion": "2.7.1",
      "javaVersion": "11.0.10",
      "platformApiVersion": "",
      "platformClientVersion": "",
      "platformHostVersion": "",
      "platformSpecificInfo": {
        "default": "local"
      },
      "platformType": "Skipper Managed",
      "springBootVersion": "2.4.7",
      "springVersion": "5.3.8"
    },
    "taskLaunchers": [
      {
        "deployerImplementationVersion": "2.6.1",
        "deployerName": "LocalTaskLauncher",
        "deployerSpiVersion": "2.6.1",
        "javaVersion": "11.0.10",
        "platformApiVersion": "Linux 5.6.13-100.fc30.x86_64",
        "platformClientVersion": "5.6.13-100.fc30.x86_64",
        "platformHostVersion": "5.6.13-100.fc30.x86_64",
        "platformSpecificInfo": {},
        "platformType": "Local",
        "springBootVersion": "2.4.7",
        "springVersion": "5.3.8"
      }
    ]
  },
  "monitoringDashboardInfo": {
    "url": "http://localhost:3000",
    "source": "default-scdf-source",
    "refreshInterval": 15
  },
  "security": {
    "isAuthentication": false,
    "isAuthenticated": false,
    "username": null,
    "roles": []
  }
}
DemianTinkiel commented 2 years ago

Same seems to happen with CPU and disk properties, nothing in the Docker command that skipper creates sets them