© Atos Spain S.A. 2018
Rotterdam is a native-cloud Infrastructure-as-a-Service (IaaS) facade which facilitates the deployment and life cycle management of containerized tasks on container orchestration platforms. Its main purpose is to upload, organize, run, manage and stop sets of containers (named tasks) through API calls, and abstract all the resource infrastructure details, even the concept of cluster of machines/instances, to micro-service developers (in the case of CLASS, data analytics application/service developers.
Rotterdam is part of the CLASS Project (Edge and Cloud Computation: A Highly Distributed Software for Big Data Analytics): https://class-project.eu/
You can run Rotterdam in Docker or any other container orchestrator like Kubernetes, by pulling the image from Docker Hub:
docker pull atosclass/rotterdam-caas:1.10.7
docker run [OPTIONS] atosclass/rotterdam-caas:1.10.7 [COMMAND] [ARG...]
To run Rotterdam in Openshift, deploy the from Docker Hub using the OKD Web UI. The following environment variables can be defined:
The SLALiteEndPoint is used to automatically generate SLAs and to stop or terminate them. The SLALite component should also point to Rotterdam to send it the violations.
Add to project > Deploy ImageImage Name
atosclass/rotterdam
rotterdam-caasXXXOpenshiftOauthToken, KubernetesEndPoint, OpenshiftEndPoint, ServerIP, SLALiteEndPoint, PrometheusPushgatewayEndPointCreate Route
rotterdam-slalite.192.168.7.28.xip.iorotterdam-cass.192.168.7.28.xip.ioOnce Rotterdam is deployed, you can access it through the REST API UI provided by swagger: (e.g. http://rotterdam-caas.X.X.X.X.nip.io/swaggerui/)
The following methods have been defined:
To get information about Rotterdam
The following method is used by the SLALite component to send Rotterdam violations and notifications
To get all running tasks
To create a new tasks in Rotterdam
To view / manage tasks
To get all orchestrators to be managed by Rotterdam
To create a new orchestrators to be managed by Rotterdam
QoS templates
{
"ID": "maincluster",
"Name": "k8s",
"Description": "main cluster",
"DefaultDock": "class",
"Type": "Kubernetes",
"SO": "ubuntu18",
"KubernetesEndPoint": "http://X.X.X.X:8001",
"HostIP": "192.168.7.42",
"SLALiteEndPoint": "http://rotterdam-slalite.X.X.X.X.nip.io",
"PrometheusPushgatewayEndPoint": "http://pushgateway.X.X.X.X.nip.io",
"PrometheusEndPoint": "http://X.X.X.X:32679",
"User": "vagrant",
"Password": "vagrant",
"HostPort": 22
}
{
"name": "adas-my-nginx",
"dock": "default",
"cluster": "maincluster",
"qos": {
"name": "KubeletTooManyPods",
"description": "scale down task if cluster pods > 20",
},
"replicas": 10,
"containers": [{
"name": "adas-my-nginx-app",
"image": "nginx",
"ports": [
{
"containerPort": "80",
"hostPort": "80",
"protocol": "tcp"
}
],
"volumes": [
{
"name": "PATH",
"mounthPath": "/usr/share/class/vol/"
}],
"environment": [
{
"name": "TEST_VAL",
"value":"1.2.3"
}
]}
]
}
{
"name": "redis-app-2",
"dock": "class",
"qos": {
"name": "KubeletTooManyPods",
"description": "scale down task if cluster pods > 20"
},
"replicas": 4,
"containers": [
{
"name": "redis",
"image": "redis",
"ports": [
{
"containerPort": 6379,
"hostPort": 6379,
"protocol": "tcp"
}
]
}
]
}
QoS templates used to define the SLAs associated to the tasks managed by Rotterdam.
| QoS | description | description | source, job |
|---|---|---|---|
| KubeletTooManyPods | infra | scale down task if total of cluster pods is > 20 | Prometheus - kubernetes-nodes-cadvisor |
| KubeletPodsLessThan100 | infra | scale down task if total of cluster pods is > 100 | Prometheus - kubernetes-nodes-cadvisor |
| KubeletPodsMoreThan100 | infra | scale up task if total of cluster pods is < 100 | Prometheus - kubernetes-nodes-cadvisor |
| Test_Prometheus_01 | infra | force a task to be scaled up | Prometheus - kubernetes-nodes-cadvisor |
KubeletTooManyPods:
{
"qos": {
"name": "KubeletTooManyPods",
"description": "scale down task if cluster pods > 20"
}
}
KubeletTooManyPods QoS is equivalent to the following:
"custom": [{
"guarantees": [{"metric": "kubelet_running_pod_count", "condition": "<", "value": "50"}],
"action": "scale_down",
"scalefactor": 2,
"max": 30,
"min": 1,
"type": "infr",
"name": "cluster_pods_less_50",
"description": "scale down task if cluster pods > 50"
}]
Test01:
{
"qos": {
"name": "Test_Prometheus_01",
"description": "scale up task if go_memstats_frees_total metric is less than 500000"
}
}
Rotterdam is licensed under Apache License, version 2.
Content type
Image
Digest
Size
9.6 MB
Last updated
about 5 years ago
docker pull atosclass/rotterdam-caas