spring-cloud-deployer-local
spring-cloud-deployer-local copied to clipboard
Resource limits ignored for docker local
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": []
}
}
Same seems to happen with CPU and disk properties, nothing in the Docker command that skipper creates sets them