Kapsule APIv1beta4

Download OpenAPI

Introduction

Kubernetes Kapsule by Scaleway is a managed, production-ready environment for deploying, managing and scaling containerized applications. It installs and operates Kubernetes Clusters, allowing you to get up and running with them in no time.

"Kubernetes is a portable, extensible open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available." -- What is kubernetes

The product is currently available as a beta version. This means that:

  • changes may be introduced in product API,
  • product may be discontinued,
  • you agree to use the product at your own risk,
  • the product is free of charge.

During this phase, we will do our best to ensure the production-like quality of the service but we cannot guarantee its continuity.

Features

  • Persistant Volume Claims (PVC) are available through Scaleway Block Volumes.
  • Pool autoscaling and autohealing is available using the API.
  • Multiple container runtimes available (Only docker is officially supported, containerd and crio are experimental. NB: containerd ships with gvisor for untrusted workloads).
  • Kubernetes auto upgrades features is available.
  • Kapsule is only available in PAR1 datacenter
  • Clusters can't be isolated in a VPC (Virtual Private Cloud).
  • During the beta phase the maximum number of nodes per cluster is 20.
  • During the beta phase all GP1 instances can be allocated in new and default pools.
  • The maximum of pod per node is 110.
  • Kubernetes Kapsule is currently in beta and no service continuity is guarantee
  • When replacing a node : the node is deleted and a new one is created in parallel.

This API allows you to:

  • create, update and delete a Kubernetes cluster
  • manage cluster resources using node pools

The Cluster Master directs the worker nodes, making scheduling decisions, responding to events, implementing changes, and monitoring the Cluster. Its components (kube-apiserver, kube-scheduler and kube-controller-manager) are managed by Scaleway to ensure the Master remains highly available. Consequently, you cannot set your own parameters on the Kubernetes api-server, controller-manager and scheduler. Scaleway takes care of your control plane: its health is continuously monitored and watched by a dedicated team. Its availability enables the Master to get upgraded or rebooted without any downtime, and the team can perform maintenance operations on your clusters in total transparency.

kube-apiserver

Component on the master that exposes the Kubernetes API. It is the front-end for the Kubernetes control plane. It is managed by Scaleway.

Component on the master that watches newly created pods that have no assigned node, and selects a node for them to run on. It is managed by Scaleway.

Component on the master that runs controllers of Kubernetes. It is managed by Scaleway.

Scaleway Load Balancers are used to route requests toward the multiple control-plane replicas. This enables high availability for your Cluster.

Consistent and highly-available key value store used as Kubernetes backing store for all cluster data.

The Cloud Controller Manager runs controllers that interact with Scaleway cloud, allowing to create load balancer objects and to retrieve information about your cluster (node public IP, node location, node commercial type...)

Deamon that reports nodes statuses to the orchestrator, allowing -for instance- healing actions when a node has been down for a certain period of time.

Cluster resources (i.e. nodes) are managed within pools. A pool has a name (optional), a size (its current number of nodes), and nodes number limits (min, max). Changing those limits increases/decreases the size of a pool. Thus, when autoscaling is enabled, the pool will grow or shrink inside those limits, depending on its cluster load. A "default pool" is automatically created with every Cluster and can't be deleted.

A Node (short for Worker Node) is an abstraction for a Scaleway instance. It is part of a pool and is instantiated by Scaleway, making Kubernetes software installed and configured automatically on it. Please note that Kubernetes nodes cannot be accessed with ssh.

Container Network Interface (https://github.com/containernetworking/cni) is a standard designed to ease configuration of container networking at their creation/deletion. Various projects have been released to address Kubernetes networking requirements and provide the networking features that cluster administrators require. Kubernetes Kapsule supports the following CNI plugins : cilium (https://cilium.io/), flannel (https://github.com/coreos/flannel), calico (https://github.com/projectcalico/cni-plugin) & weave (https://www.weave.works/oss/net/). Flannel plugin is installed by default, but yo can customize your cluster picking the one that suits your need.

Below is a step by step guide explaining how to create a cluster, deploy an application on it, use the cluster wildcard DNS to request the application, extend a pool and then delete the cluster.

In order to use the Scaleway API you need to have curl installed. It is also a good idea to have jq, which will help you to read and parse JSON output. Make sure you have these two tools before you begin. Otherwise use your package manager to install them.

To call the Scaleway API, you will need an X-Auth-Token. If you don't have one yet, you can create one on credentials page of your Scaleway account.

Using this token, get your organization ID:

$ export TOKEN="<Secret key of your token>"
$ export REGION="<choose your location (nl-ams/fr-par)>"

$ curl -H "X-Auth-Token: $TOKEN" https://account.scaleway.com/organizations | jq '.organizations[] | "orga_id: " + .id + " orga_name: " + .name'

$ export ORGANIZATION_ID="<your organization ID>"

You can also find your organization ID in Scaleway web console.

Customize the name, description, tags and set your organization ID

$ curl -X POST "https://api.scaleway.com/k8s/v1beta4/regions/$REGION/clusters" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json" \
-d "{
\"cni\": \"flannel\",
\"enable_dashboard\": true,
\"default_pool_config\": {
\"autoscaling\": true,
\"node_type\": \"gp1_xs\",
\"max_size\": 3,
\"min_size\": 1,
\"size\": 3,
},
\"description\": \"my first cluster\",
\"ingress\": \"nginx\",
\"name\": \"cluster1\",
\"organization_id\": \"${ORGANIZATION_ID}\",
\"tags\": [
\"tag1\",
\"tag2\"
],
\"version\": \"1.14.1\"
}"

{"region":"fr-par","id":"4a31ee90-71eb-4539-a647-7b1ad3bcde67","organization_id":"82833329-b242-4cf8-9193-8d1600aff0c1","created_at":"2019-04-30T12:37:51.006332102Z","updated_at":"2019-04-30T12:37:51.006332102Z","name":"cluster1","description":"my first cluster","current_node_count":0,"status":"creating","version":"1.14.1","cni":"flannel","tags":["tag1","tag2"],"current_core_count":0,"current_mem_count":0,"cluster_url":"https://4a31ee90-71eb-4539-a647-7b1ad3bcde67.api.k8s.fr-par.scw.cloud:6443","dns_wildcard":"*.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud","autoscaler_config":{"scale_down_disabled":false,"scale_down_delay_after_add":"10m","estimator":"binpacking","expander":"random","ignore_daemonsets_utilization":false,"balance_similar_node_groups":false,"expendable_pods_priority_cutoff":-10},"dashboard_enabled":true,"ingress":"nginx"}

Copy the id field of the response to use in the next steps. For the sake of simplicity we will save the ID to a variable, which we will use in the following examples:

$ export CLUSTER_ID="4a31ee90-71eb-4539-a647-7b1ad3bcde67"

Wait for the cluster to be in ready state:

$ curl -Ss -X GET "https://api.scaleway.com/k8s/v1beta4/regions/${REGION}/clusters/${CLUSTER_ID}" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json" | jq -r '.status'
ready

In order to be able to manage you cluster retrieve your kubeconfig file:

$ curl -Ss -X GET "https://api.scaleway.com/k8s/v1beta4/regions/${REGION}/clusters/${CLUSTER_ID}/kubeconfig?dl=1" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json" > /tmp/mycluster.kubeconfig

Use the previously downloaded kubeconfig file to manage your cluster. Wait for all the nodes to join the cluster (we allow you to connect to the control plane before all the nodes are ready and it can take some time to create it).

$ export KUBECONFIG=/tmp/mycluster.kubeconfig
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
scw-cluster1-default-5aa9167001624d5498033c647 Ready <none> 104s v1.14.1
scw-cluster1-default-60a2fd61a09e442ca2c5a905f Ready <none> 2m4s v1.14.1
scw-cluster1-default-d82d9a85b32c47f6ab489ea1c Ready <none> 97s v1.14.1
$ kubectl cluster-info
Kubernetes master is running at https://4a31ee90-71eb-4539-a647-7b1ad3bcde67.api.k8s.fr-par.scw.cloud:6443
CoreDNS is running at https://4a31ee90-71eb-4539-a647-7b1ad3bcde67.api.k8s.fr-par.scw.cloud:6443/api/v1/namespaces/kube-system/services/coredns:dns/proxy
kubernetes-dashboard is running at https://4a31ee90-71eb-4539-a647-7b1ad3bcde67.api.k8s.fr-par.scw.cloud:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

In this step we will show you how to deploy your first application on Kubernetes and how to leverage the free wildcard DNS automatically created by Scaleway with your new cluster.

Create the cafe application. This application is very simple and will show "coffee" if you query a coffee url, and "tea" if you query a tea url.

$ kubectl create -f https://raw.githubusercontent.com/nginxinc/kubernetes-ingress/master/examples/complete-example/cafe.yaml
deployment.extensions/coffee created
service/coffee-svc created
deployment.extensions/tea created
service/tea-svc created

By a default a free wildcard dns is given to you at the cluster creation, you can use it to create your ingress objects. This wildcard point to all the public ips of you cluster. If you want something more robust you can choose to deploy a load balancer (but it in this case you have to manage the dns by yourself). The free wildcard looks like that *.<CLUSTER_UUID>.nodes.k8s.fr-par.scw.cloud

You can check the wildcard is working.

$ host coffee.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
coffee.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 51.15.196.44
coffee.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 51.158.110.219
coffee.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 212.47.243.47
$ host tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 51.15.196.44
tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 51.158.110.219
tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 212.47.243.47

Then create the ingress object matching tea or coffee url:

$ cat << EOF > /tmp/myingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
spec:
rules:
- host: coffee.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
http:
paths:
- backend:
serviceName: coffee-svc
servicePort: 80
- host: tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
http:
paths:
- backend:
serviceName: tea-svc
servicePort: 80
EOF
$ kubectl create -f /tmp/myingress
ingress.extensions/cafe-ingress created

Just query both url using curl and check the application is working.

$ curl cafe.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
Server address: 100.64.2.3:80
Server name: coffee-bbd45c6-m6nck
Date: 30/Apr/2019:12:56:42 +0000
URI: /
Request ID: 7ad4396d26e472626fdf16b3b1a41d99
$ curl tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
Server address: 100.64.2.4:80
Server name: tea-5857f7786b-glxp8
Date: 30/Apr/2019:12:56:48 +0000
URI: /
Request ID: b1568ac01c0d0040f3ef9357fce4268c

Get the default pool id.

$ curl -Ss -X GET "https://api.scaleway.com/k8s/v1beta4/regions/$REGION/clusters/$CLUSTER_ID/pools" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json" | jq -r '.pools[]|select(.name|contains("default"))|.id'
e95f9a3a-5b95-4490-8b5c-adcd14abedb0
$ export POOL_ID=e95f9a3a-5b95-4490-8b5c-adcd14abedb0

Extend the pool for 3 to 4

$ curl -Ss -X PATCH "https://api.scaleway.com/k8s/v1beta4/regions/$REGION/pools/$POOL_ID" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json" -d "{

\"autoscaling\": true,
\"size\": \"4\",
\"min_size\": \"1\",
\"max_size\": \"4\"
}"

{"region":"fr-par","id":"e95f9a3a-5b95-4490-8b5c-adcd14abedb0","cluster_id":"4a31ee90-71eb-4539-a647-7b1ad3bcde67","created_at":"2019-04-30T12:37:51.008981Z","updated_at":"2019-04-30T13:14:18.428172545Z","name":"default","current_node_count":3,"status":"ready","version":"1.14.1","node_type":"gp1_xs","autoscaling":true,"size":4,"min_size":1,"max_size":4,"current_core_count":12,"current_mem_count":25769803776,"container_runtime":"docker","autohealing":false,"tags":[],"placement_group_id":null}

Wait for the pool to be extended.

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
scw-cluster1-default-5aa9167001624d5498033c647 Ready <none> 35m v1.14.1
scw-cluster1-default-60a2fd61a09e442ca2c5a905f Ready <none> 35m v1.14.1
scw-cluster1-default-86c266b168604d1a83a182cf2 NotReady <none> 1s v1.14.1
scw-cluster1-default-d82d9a85b32c47f6ab489ea1c Ready <none> 35m v1.14.1
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
scw-cluster1-default-5aa9167001624d5498033c647 Ready <none> 35m v1.14.1
scw-cluster1-default-60a2fd61a09e442ca2c5a905f Ready <none> 36m v1.14.1
scw-cluster1-default-86c266b168604d1a83a182cf2 Ready <none> 22s v1.14.1
scw-cluster1-default-d82d9a85b32c47f6ab489ea1c Ready <none> 35m v1.14.1
$ curl -Ss -X DELETE "https://api.scaleway.com/k8s/v1beta4/regions/$REGION/clusters/$CLUSTER_ID" -H "Accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json"

A cluster is a fully managed Kubernetes cluster. It is composed of different pools, each pool containing same kind of nodes.

This method allows to list all the existing Kubernetes clusters in an account.

GET
/k8s/v1beta4/regions/{region}/clusters
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.
Query Parameters

organization_id
nullable string
The organization ID on which to filter the returned clusters.

order_by
string
The sort order of the returned clusters. Possible values are created_at_asc, created_at_desc, updated_at_asc, updated_at_desc, name_asc, name_desc, status_asc, status_desc, version_asc and version_desc. The default value is created_at_asc.

page
number
The page number for the returned clusters. The default value is 1.

page_size
number
The maximum number of clusters per page. The default value is 20.

name
nullable string
The name on which to filter the retured clusters.

status
string
The status on which to filter the returned clusters. Possible values are unknown, creating, ready, deleting, deleted, updating, warning, error and locked. The default value is unknown.
200 Response

total_count
number
The total number of clusters.

clusters
array
The paginated returned clusters.
id
string
The ID of the cluster.

region
string
The region in which is the cluster.

name
string
The name of the cluster.

description
string
The description of the cluster.

organization_id
string
The ID of the organization owning the cluster.

tags
array
The tags associated to the cluster.

status
string
The status of the cluster. Possible values are unknown, creating, ready, deleting, deleted, updating, warning, error and locked. The default value is unknown.

version
string
The Kubernetes version of the cluster.

cni
string
The Container Network Interface (CNI) plugin running in the cluster. Possible values are unknown_cni, cilium, calico, weave and flannel. The default value is unknown_cni.

cluster_url
string
The Kubernetes API server URL of the cluster.

dns_wildcard
string
The DNS wildcard resovling all the ready nodes of the cluster.

created_at
string
The date at which the cluster was created.

updated_at
string
The date at which the cluster was last updated.

current_core_count
number
The total number of cores of all the nodes in the cluster.

current_node_count
number
The total number of nodes in the cluster.

current_mem_count
number
The total amount of memory of all the nodes in the cluster.

autoscaler_config
object
The autoscaler config for the cluster.
scale_down_disabled
boolean

scale_down_delay_after_add
string

estimator
string
Possible values are unknown_estimator, binpacking and oldbinpacking. The default value is unknown_estimator.

expander
string
Possible values are unknown_expander, random, most_pods, least_waste and priority. The default value is unknown_expander.

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number

dashboard_enabled
boolean
The enablement of the Kubernetes Dashboard in the cluster.

ingress
string
The ingress controller used in the cluster. Possible values are unknown_ingress, none, nginx and traefik. The default value is unknown_ingress.

auto_upgrade
object
The auo upgrade configuration of the cluster.
enabled
boolean

maintenance_window
object
start_hour
number

day
string
Possible values are any, monday, tuesday, wednesday, thursday, friday, saturday and sunday. The default value is any.

upgrade_available
boolean
True if a new Kubernetes version is available.

feature_gates
array
List of enabled feature gates.

admission_plugins
array
List of enabled admission plugins.
Response Example
{
"total_count": 42,
"clusters": [
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "unknown",
"version": "string",
"cni": "unknown_cni",
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disabled": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "unknown_estimator",
"expander": "unknown_expander",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
},
"dashboard_enabled": "boolean",
"ingress": "unknown_ingress",
"auto_upgrade": {
"enabled": "boolean",
"maintenance_window": {
"start_hour": 42,
"day": "any"
}
},
"upgrade_available": "boolean",
"feature_gates": [
"string"
],
"admission_plugins": [
"string"
]
}
]
}

This method allows to create a new Kubernetes cluster on an account.

POST
/k8s/v1beta4/regions/{region}/clusters
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.
Body

organization_id
required string
The organization ID where the cluster will be created.

name
required string
The name of the cluster.

description
string
The description of the cluster.

tags
array
The tags associated with the cluster.

version
required string
The Kubernetes version of the cluster.

cni
required string
The Container Network Interface (CNI) plugin that will run in the cluster. Possible values are unknown_cni, cilium, calico, weave and flannel. The default value is unknown_cni.

enable_dashboard
boolean
The enablement of the Kubernetes Dashboard in the cluster.

ingress
string
The Ingress Controller that will run in the cluster. Possible values are unknown_ingress, none, nginx and traefik. The default value is unknown_ingress.

default_pool_config
object
The config of the defaul pool of the cluster.
node_type
string

placement_group_id
nullable string

autoscaling
boolean

size
number

min_size
nullable number

max_size
nullable number

container_runtime
string
Possible values are unknown_runtime, docker, containerd and crio. The default value is unknown_runtime.

autohealing
boolean

tags
array

autoscaler_config
object
This field allows to specify some configuration for the autoscaler, which is an implementation of the [cluster-autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler/).
scale_down_disabled
nullable boolean

scale_down_delay_after_add
nullable string

estimator
string
Possible values are unknown_estimator, binpacking and oldbinpacking. The default value is unknown_estimator.

expander
string
Possible values are unknown_expander, random, most_pods, least_waste and priority. The default value is unknown_expander.

ignore_daemonsets_utilization
nullable boolean

balance_similar_node_groups
nullable boolean

expendable_pods_priority_cutoff
nullable number

auto_upgrade
object
This configuratiom enables to set a speicific 2-hour time window in which the cluster can be automatically updated to the latest patch version in the current minor one.
enable
boolean

maintenance_window
object
start_hour
number

day
string
Possible values are any, monday, tuesday, wednesday, thursday, friday, saturday and sunday. The default value is any.

feature_gates
array
List of feature gates to enable.

admission_plugins
array
List of admission plugins to enable.
Request Example
{
"organization_id": "string",
"name": "string",
"description": "string",
"tags": [
"string"
],
"version": "string",
"cni": "unknown_cni",
"enable_dashboard": "boolean",
"ingress": "unknown_ingress",
"default_pool_config": {
"node_type": "string",
"placement_group_id": "string",
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"container_runtime": "unknown_runtime",
"autohealing": "boolean",
"tags": [
"string"
]
},
"autoscaler_config": {
"scale_down_disabled": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "unknown_estimator",
"expander": "unknown_expander",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
},
"auto_upgrade": {
"enable": "boolean",
"maintenance_window": {
"start_hour": 42,
"day": "any"
}
},
"feature_gates": [
"string"
],
"admission_plugins": [
"string"
]
}
200 Response

id
string
The ID of the cluster.

region
string
The region in which is the cluster.

name
string
The name of the cluster.

description
string
The description of the cluster.

organization_id
string
The ID of the organization owning the cluster.

tags
array
The tags associated to the cluster.

status
string
The status of the cluster. Possible values are unknown, creating, ready, deleting, deleted, updating, warning, error and locked. The default value is unknown.

version
string
The Kubernetes version of the cluster.

cni
string
The Container Network Interface (CNI) plugin running in the cluster. Possible values are unknown_cni, cilium, calico, weave and flannel. The default value is unknown_cni.

cluster_url
string
The Kubernetes API server URL of the cluster.

dns_wildcard
string
The DNS wildcard resovling all the ready nodes of the cluster.

created_at
string
The date at which the cluster was created.

updated_at
string
The date at which the cluster was last updated.

current_core_count
number
The total number of cores of all the nodes in the cluster.

current_node_count
number
The total number of nodes in the cluster.

current_mem_count
number
The total amount of memory of all the nodes in the cluster.

autoscaler_config
object
The autoscaler config for the cluster.
scale_down_disabled
boolean

scale_down_delay_after_add
string

estimator
string
Possible values are unknown_estimator, binpacking and oldbinpacking. The default value is unknown_estimator.

expander
string
Possible values are unknown_expander, random, most_pods, least_waste and priority. The default value is unknown_expander.

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number

dashboard_enabled
boolean
The enablement of the Kubernetes Dashboard in the cluster.

ingress
string
The ingress controller used in the cluster. Possible values are unknown_ingress, none, nginx and traefik. The default value is unknown_ingress.

auto_upgrade
object
The auo upgrade configuration of the cluster.
enabled
boolean

maintenance_window
object
start_hour
number

day
string
Possible values are any, monday, tuesday, wednesday, thursday, friday, saturday and sunday. The default value is any.

upgrade_available
boolean
True if a new Kubernetes version is available.

feature_gates
array
List of enabled feature gates.

admission_plugins
array
List of enabled admission plugins.
Response Example
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "unknown",
"version": "string",
"cni": "unknown_cni",
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disabled": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "unknown_estimator",
"expander": "unknown_expander",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
},
"dashboard_enabled": "boolean",
"ingress": "unknown_ingress",
"auto_upgrade": {
"enabled": "boolean",
"maintenance_window": {
"start_hour": 42,
"day": "any"
}
},
"upgrade_available": "boolean",
"feature_gates": [
"string"
],
"admission_plugins": [
"string"
]
}

This method allows to get details about a specific Kubernetes cluster.

GET
/k8s/v1beta4/regions/{region}/clusters/{cluster_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
The ID of the requested cluster.
200 Response

id
string
The ID of the cluster.

region
string
The region in which is the cluster.

name
string
The name of the cluster.

description
string
The description of the cluster.

organization_id
string
The ID of the organization owning the cluster.

tags
array
The tags associated to the cluster.

status
string
The status of the cluster. Possible values are unknown, creating, ready, deleting, deleted, updating, warning, error and locked. The default value is unknown.

version
string
The Kubernetes version of the cluster.

cni
string
The Container Network Interface (CNI) plugin running in the cluster. Possible values are unknown_cni, cilium, calico, weave and flannel. The default value is unknown_cni.

cluster_url
string
The Kubernetes API server URL of the cluster.

dns_wildcard
string
The DNS wildcard resovling all the ready nodes of the cluster.

created_at
string
The date at which the cluster was created.

updated_at
string
The date at which the cluster was last updated.

current_core_count
number
The total number of cores of all the nodes in the cluster.

current_node_count
number
The total number of nodes in the cluster.

current_mem_count
number
The total amount of memory of all the nodes in the cluster.

autoscaler_config
object
The autoscaler config for the cluster.
scale_down_disabled
boolean

scale_down_delay_after_add
string

estimator
string
Possible values are unknown_estimator, binpacking and oldbinpacking. The default value is unknown_estimator.

expander
string
Possible values are unknown_expander, random, most_pods, least_waste and priority. The default value is unknown_expander.

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number

dashboard_enabled
boolean
The enablement of the Kubernetes Dashboard in the cluster.

ingress
string
The ingress controller used in the cluster. Possible values are unknown_ingress, none, nginx and traefik. The default value is unknown_ingress.

auto_upgrade
object
The auo upgrade configuration of the cluster.
enabled
boolean

maintenance_window
object
start_hour
number

day
string
Possible values are any, monday, tuesday, wednesday, thursday, friday, saturday and sunday. The default value is any.

upgrade_available
boolean
True if a new Kubernetes version is available.

feature_gates
array
List of enabled feature gates.

admission_plugins
array
List of enabled admission plugins.
Response Example
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "unknown",
"version": "string",
"cni": "unknown_cni",
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disabled": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "unknown_estimator",
"expander": "unknown_expander",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
},
"dashboard_enabled": "boolean",
"ingress": "unknown_ingress",
"auto_upgrade": {
"enabled": "boolean",
"maintenance_window": {
"start_hour": 42,
"day": "any"
}
},
"upgrade_available": "boolean",
"feature_gates": [
"string"
],
"admission_plugins": [
"string"
]
}

This method allows to update a specific Kubernetes cluster. Note that this method is not made to upgrade a Kubernetes cluster.

PATCH
/k8s/v1beta4/regions/{region}/clusters/{cluster_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
The ID of the cluster to update.
Body

name
nullable string
This field allows to update the external name of the cluster. The internal name (used for instance in hostname) won't change.

description
nullable string
The new description of the cluster.

tags
nullable array
The new tags associated with the cluster.

autoscaler_config
object
This field allows to update some configuration for the autoscaler, which is an implementation of the [cluster-autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler/).
scale_down_disabled
nullable boolean

scale_down_delay_after_add
nullable string

estimator
string
Possible values are unknown_estimator, binpacking and oldbinpacking. The default value is unknown_estimator.

expander
string
Possible values are unknown_expander, random, most_pods, least_waste and priority. The default value is unknown_expander.

ignore_daemonsets_utilization
nullable boolean

balance_similar_node_groups
nullable boolean

expendable_pods_priority_cutoff
nullable number

enable_dashboard
nullable boolean
The new value of the Kubernetes Dashboard enablement.

ingress
string
The new Ingress Controller for the cluster. Possible values are unknown_ingress, none, nginx and traefik. The default value is unknown_ingress.

auto_upgrade
object
The new auo upgrade configuration of the cluster. Note that all the fields needs to be set.
enable
nullable boolean

maintenance_window
object
start_hour
number

day
string
Possible values are any, monday, tuesday, wednesday, thursday, friday, saturday and sunday. The default value is any.

feature_gates
nullable array
List of feature gates to enable.

admission_plugins
nullable array
List of admission plugins to enable.
Request Example
{
"name": "string",
"description": "string",
"tags": [
"string"
],
"autoscaler_config": {
"scale_down_disabled": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "unknown_estimator",
"expander": "unknown_expander",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
},
"enable_dashboard": "boolean",
"ingress": "unknown_ingress",
"auto_upgrade": {
"enable": "boolean",
"maintenance_window": {
"start_hour": 42,
"day": "any"
}
},
"feature_gates": [
"string"
],
"admission_plugins": [
"string"
]
}
200 Response

id
string
The ID of the cluster.

region
string
The region in which is the cluster.

name
string
The name of the cluster.

description
string
The description of the cluster.

organization_id
string
The ID of the organization owning the cluster.

tags
array
The tags associated to the cluster.

status
string
The status of the cluster. Possible values are unknown, creating, ready, deleting, deleted, updating, warning, error and locked. The default value is unknown.

version
string
The Kubernetes version of the cluster.

cni
string
The Container Network Interface (CNI) plugin running in the cluster. Possible values are unknown_cni, cilium, calico, weave and flannel. The default value is unknown_cni.

cluster_url
string
The Kubernetes API server URL of the cluster.

dns_wildcard
string
The DNS wildcard resovling all the ready nodes of the cluster.

created_at
string
The date at which the cluster was created.

updated_at
string
The date at which the cluster was last updated.

current_core_count
number
The total number of cores of all the nodes in the cluster.

current_node_count
number
The total number of nodes in the cluster.

current_mem_count
number
The total amount of memory of all the nodes in the cluster.

autoscaler_config
object
The autoscaler config for the cluster.
scale_down_disabled
boolean

scale_down_delay_after_add
string

estimator
string
Possible values are unknown_estimator, binpacking and oldbinpacking. The default value is unknown_estimator.

expander
string
Possible values are unknown_expander, random, most_pods, least_waste and priority. The default value is unknown_expander.

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number

dashboard_enabled
boolean
The enablement of the Kubernetes Dashboard in the cluster.

ingress
string
The ingress controller used in the cluster. Possible values are unknown_ingress, none, nginx and traefik. The default value is unknown_ingress.

auto_upgrade
object
The auo upgrade configuration of the cluster.
enabled
boolean

maintenance_window
object
start_hour
number

day
string
Possible values are any, monday, tuesday, wednesday, thursday, friday, saturday and sunday. The default value is any.

upgrade_available
boolean
True if a new Kubernetes version is available.

feature_gates
array
List of enabled feature gates.

admission_plugins
array
List of enabled admission plugins.
Response Example
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "unknown",
"version": "string",
"cni": "unknown_cni",
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disabled": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "unknown_estimator",
"expander": "unknown_expander",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
},
"dashboard_enabled": "boolean",
"ingress": "unknown_ingress",
"auto_upgrade": {
"enabled": "boolean",
"maintenance_window": {
"start_hour": 42,
"day": "any"
}
},
"upgrade_available": "boolean",
"feature_gates": [
"string"
],
"admission_plugins": [
"string"
]
}

This method allows to delete a specific cluster and all its associated pools and nodes. Note that this method will not delete any Load Balancers or Block Volumes that are associated with the cluster.

DELETE
/k8s/v1beta4/regions/{region}/clusters/{cluster_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
The ID of the cluster to delete.
200 Response

id
string
The ID of the cluster.

region
string
The region in which is the cluster.

name
string
The name of the cluster.

description
string
The description of the cluster.

organization_id
string
The ID of the organization owning the cluster.

tags
array
The tags associated to the cluster.

status
string
The status of the cluster. Possible values are unknown, creating, ready, deleting, deleted, updating, warning, error and locked. The default value is unknown.

version
string
The Kubernetes version of the cluster.

cni
string
The Container Network Interface (CNI) plugin running in the cluster. Possible values are unknown_cni, cilium, calico, weave and flannel. The default value is unknown_cni.

cluster_url
string
The Kubernetes API server URL of the cluster.

dns_wildcard
string
The DNS wildcard resovling all the ready nodes of the cluster.

created_at
string
The date at which the cluster was created.

updated_at
string
The date at which the cluster was last updated.

current_core_count
number
The total number of cores of all the nodes in the cluster.

current_node_count
number
The total number of nodes in the cluster.

current_mem_count
number
The total amount of memory of all the nodes in the cluster.

autoscaler_config
object
The autoscaler config for the cluster.
scale_down_disabled
boolean

scale_down_delay_after_add
string

estimator
string
Possible values are unknown_estimator, binpacking and oldbinpacking. The default value is unknown_estimator.

expander
string
Possible values are unknown_expander, random, most_pods, least_waste and priority. The default value is unknown_expander.

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number

dashboard_enabled
boolean
The enablement of the Kubernetes Dashboard in the cluster.

ingress
string
The ingress controller used in the cluster. Possible values are unknown_ingress, none, nginx and traefik. The default value is unknown_ingress.

auto_upgrade
object
The auo upgrade configuration of the cluster.
enabled
boolean

maintenance_window
object
start_hour
number

day
string
Possible values are any, monday, tuesday, wednesday, thursday, friday, saturday and sunday. The default value is any.

upgrade_available
boolean
True if a new Kubernetes version is available.

feature_gates
array
List of enabled feature gates.

admission_plugins
array
List of enabled admission plugins.
Response Example
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "unknown",
"version": "string",
"cni": "unknown_cni",
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disabled": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "unknown_estimator",
"expander": "unknown_expander",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
},
"dashboard_enabled": "boolean",
"ingress": "unknown_ingress",
"auto_upgrade": {
"enabled": "boolean",
"maintenance_window": {
"start_hour": 42,
"day": "any"
}
},
"upgrade_available": "boolean",
"feature_gates": [
"string"
],
"admission_plugins": [
"string"
]
}

This method allows to list the versions that a specific Kubernetes cluster is allowed to upgrade to. Note that it will be every patch version greater than the actual one as well a one minor version ahead of the actual one. Upgrades skipping a minor version will not work.

GET
/k8s/v1beta4/regions/{region}/clusters/{cluster_id}/available-versions
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
The ID of the cluster which the available Kuberentes versions will be listed from.
200 Response

versions
array
The available Kubernetes version for the cluster.
region
string
The regions in which this version is available.

name
string
The name of the Kubernetes version.

label
string
The label of the Kubernetes version.

available_cnis
array
The supported Container Network Interface (CNI) plugins for this version.

available_ingresses
array
The supported Ingress Controllers for this version.

available_container_runtimes
array
The supported container runtimes for this version.

available_feature_gates
array
The supported feature gates for this version.

available_admission_plugins
array
The supported admission plugins for this version.
Response Example
{
"versions": [
{
"region": "string",
"name": "string",
"label": "string",
"available_cnis": [
"unknown_cni"
],
"available_ingresses": [
"unknown_ingress"
],
"available_container_runtimes": [
"unknown_runtime"
],
"available_feature_gates": [
"string"
],
"available_admission_plugins": [
"string"
]
}
]
}

This method allows to download the Kubernetes cluster config file (AKA kubeconfig) for a specific cluster in order to use it with, for instance, kubectl. Tips: add ?dl=1 at the end of the URL to directly get the base64 decoded kubeconfig. If not, the kubeconfig will be base64 encoded.

GET
/k8s/v1beta4/regions/{region}/clusters/{cluster_id}/kubeconfig
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
The ID of the cluster to download the kubeconfig from.
200 Response

name
string

content_type
string

content
string
Response Example
{
"name": "string",
"content_type": "string",
"content": "string"
}

This method allows to reset the admin token for a specific Kubernetes cluster. This will invalidate the old admin token (which will not be usable after) and create a new one. Note that the redownload of the kubeconfig will be necessary to keep interacting with the cluster (if the old admin token was used).

POST
/k8s/v1beta4/regions/{region}/clusters/{cluster_id}/reset-admin-token
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
The ID of the cluster of which the admin token will be renewed.
Body

Request Example
{}
204 Response

Empty response

This method allows to upgrade a specific Kubernetes cluster and/or its associated pools to a specific and supported Kubernetes version.

POST
/k8s/v1beta4/regions/{region}/clusters/{cluster_id}/upgrade
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
The ID of the cluster to upgrade.
Body

version
string
The new Kubernetes version of the cluster. Note that the version shoud either be a higher patch version of the same minor version or the direct minor version after the current one.

upgrade_pools
boolean
This field makes the upgrade upgrades the pool once the Kubernetes master in upgrade.
Request Example
{
"version": "string",
"upgrade_pools": "boolean"
}
200 Response

id
string
The ID of the cluster.

region
string
The region in which is the cluster.

name
string
The name of the cluster.

description
string
The description of the cluster.

organization_id
string
The ID of the organization owning the cluster.

tags
array
The tags associated to the cluster.

status
string
The status of the cluster. Possible values are unknown, creating, ready, deleting, deleted, updating, warning, error and locked. The default value is unknown.

version
string
The Kubernetes version of the cluster.

cni
string
The Container Network Interface (CNI) plugin running in the cluster. Possible values are unknown_cni, cilium, calico, weave and flannel. The default value is unknown_cni.

cluster_url
string
The Kubernetes API server URL of the cluster.

dns_wildcard
string
The DNS wildcard resovling all the ready nodes of the cluster.

created_at
string
The date at which the cluster was created.

updated_at
string
The date at which the cluster was last updated.

current_core_count
number
The total number of cores of all the nodes in the cluster.

current_node_count
number
The total number of nodes in the cluster.

current_mem_count
number
The total amount of memory of all the nodes in the cluster.

autoscaler_config
object
The autoscaler config for the cluster.
scale_down_disabled
boolean

scale_down_delay_after_add
string

estimator
string
Possible values are unknown_estimator, binpacking and oldbinpacking. The default value is unknown_estimator.

expander
string
Possible values are unknown_expander, random, most_pods, least_waste and priority. The default value is unknown_expander.

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number

dashboard_enabled
boolean
The enablement of the Kubernetes Dashboard in the cluster.

ingress
string
The ingress controller used in the cluster. Possible values are unknown_ingress, none, nginx and traefik. The default value is unknown_ingress.

auto_upgrade
object
The auo upgrade configuration of the cluster.
enabled
boolean

maintenance_window
object
start_hour
number

day
string
Possible values are any, monday, tuesday, wednesday, thursday, friday, saturday and sunday. The default value is any.

upgrade_available
boolean
True if a new Kubernetes version is available.

feature_gates
array
List of enabled feature gates.

admission_plugins
array
List of enabled admission plugins.
Response Example
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "unknown",
"version": "string",
"cni": "unknown_cni",
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disabled": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "unknown_estimator",
"expander": "unknown_expander",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
},
"dashboard_enabled": "boolean",
"ingress": "unknown_ingress",
"auto_upgrade": {
"enabled": "boolean",
"maintenance_window": {
"start_hour": 42,
"day": "any"
}
},
"upgrade_available": "boolean",
"feature_gates": [
"string"
],
"admission_plugins": [
"string"
]
}

A pool is a set of identical Nodes. A pool has a name, a size (its current number of nodes), and nodes number limits (min, max). Changing those limits increases/decreases the size of a pool. Thus, when autoscaling is enabled, the pool will grow or shrink inside those limits, depending on its load. A "default pool" is automatically created with every cluster.

This method allows to list all the existing pools for a specific Kubernetes cluster.

GET
/k8s/v1beta4/regions/{region}/clusters/{cluster_id}/pools
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
The ID of the cluster from which the pools will be listed from.
Query Parameters

order_by
string
The sort order of the returned pools. Possible values are created_at_asc, created_at_desc, updated_at_asc, updated_at_desc, name_asc, name_desc, status_asc, status_desc, version_asc and version_desc. The default value is created_at_asc.

page
number
The page number for the returned pools. The default value is 1.

page_size
number
The maximum number of pools per page. The default value is 20.

name
nullable string
The name on which to filter the retured clusters.
200 Response

total_count
number
The total number of pools that exists for the cluster.

pools
array
The paginated returned pools.
id
string
The ID of the pool.

cluster_id
string
The cluster ID of the pool.

created_at
string
The date at which the pool was created.

updated_at
string
The date at which the pool was last updated.

name
string
The name of the pool.

current_node_count
number
The total number of nodes in the pool.

status
string
The status of the pool. Possible values are unknown, creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is unknown.

version
string
The version of the pool.

node_type
required string
The node type is the type of Scaleway Instance wanted for the pool.

autoscaling
boolean
The enablement of the autoscaling feature for the pool.

size
required number
The size (number of nodes) of the pool.

min_size
number
The minimun size of the pool. Note that this fields will be used only when autoscaling is enabled.

max_size
number
The maximum size of the pool. Note that this fields will be used only when autoscaling is enabled.

current_core_count
number
The total number of cores of all the nodes in the pool.

current_mem_count
number
The total amount of memory of all the nodes in the pool.

container_runtime
string
The customization of the container runtime is available for each pool. Note that `docker` is the only supporter runtime at the moment. Others are to be considered experimental. . Possible values are unknown_runtime, docker, containerd and crio. The default value is unknown_runtime.

autohealing
boolean
The enablement of the autohealing feature for the pool.

tags
array
The tags associated with the pool.

placement_group_id
nullable string
The placement group ID in which all the nodes of the pool will be created.

region
string
The cluster region of the pool.
Response Example
{
"total_count": 42,
"pools": [
{
"id": "string",
"cluster_id": "string",
"created_at": "string",
"updated_at": "string",
"name": "string",
"current_node_count": 42,
"status": "unknown",
"version": "string",
"node_type": "string",
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"current_core_count": 42,
"current_mem_count": 42,
"container_runtime": "unknown_runtime",
"autohealing": "boolean",
"tags": [
"string"
],
"placement_group_id": "string",
"region": "string"
}
]
}

This method allows to create a new pool in a specific Kubernetes cluster.

POST
/k8s/v1beta4/regions/{region}/clusters/{cluster_id}/pools
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
The ID of the cluster in which the pool will be created.
Body

name
required string
The name of the pool.

node_type
required string
The node type is the type of Scaleway Instance wanted for the pool.

placement_group_id
nullable string
The placement group ID in which all the nodes of the pool will be created.

autoscaling
boolean
The enablement of the autoscaling feature for the pool.

size
required number
The size (number of nodes) of the pool.

min_size
nullable number
The minimun size of the pool. Note that this fields will be used only when autoscaling is enabled.

max_size
nullable number
The maximum size of the pool. Note that this fields will be used only when autoscaling is enabled.

container_runtime
string
The customization of the container runtime is available for each pool. Note that `docker` is the only supporter runtime at the moment. Others are to be considered experimental. . Possible values are unknown_runtime, docker, containerd and crio. The default value is unknown_runtime.

autohealing
boolean
The enablement of the autohealing feature for the pool.

tags
array
The tags associated with the pool.
Request Example
{
"name": "string",
"node_type": "string",
"placement_group_id": "string",
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"container_runtime": "unknown_runtime",
"autohealing": "boolean",
"tags": [
"string"
]
}
200 Response

id
string
The ID of the pool.

cluster_id
string
The cluster ID of the pool.

created_at
string
The date at which the pool was created.

updated_at
string
The date at which the pool was last updated.

name
string
The name of the pool.

current_node_count
number
The total number of nodes in the pool.

status
string
The status of the pool. Possible values are unknown, creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is unknown.

version
string
The version of the pool.

node_type
required string
The node type is the type of Scaleway Instance wanted for the pool.

autoscaling
boolean
The enablement of the autoscaling feature for the pool.

size
required number
The size (number of nodes) of the pool.

min_size
number
The minimun size of the pool. Note that this fields will be used only when autoscaling is enabled.

max_size
number
The maximum size of the pool. Note that this fields will be used only when autoscaling is enabled.

current_core_count
number
The total number of cores of all the nodes in the pool.

current_mem_count
number
The total amount of memory of all the nodes in the pool.

container_runtime
string
The customization of the container runtime is available for each pool. Note that `docker` is the only supporter runtime at the moment. Others are to be considered experimental. . Possible values are unknown_runtime, docker, containerd and crio. The default value is unknown_runtime.

autohealing
boolean
The enablement of the autohealing feature for the pool.

tags
array
The tags associated with the pool.

placement_group_id
nullable string
The placement group ID in which all the nodes of the pool will be created.

region
string
The cluster region of the pool.
Response Example
{
"id": "string",
"cluster_id": "string",
"created_at": "string",
"updated_at": "string",
"name": "string",
"current_node_count": 42,
"status": "unknown",
"version": "string",
"node_type": "string",
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"current_core_count": 42,
"current_mem_count": 42,
"container_runtime": "unknown_runtime",
"autohealing": "boolean",
"tags": [
"string"
],
"placement_group_id": "string",
"region": "string"
}

This method allows to get details about a specific pool.

GET
/k8s/v1beta4/regions/{region}/pools/{pool_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

pool_id
required string
The ID of the requested pool.
200 Response

id
string
The ID of the pool.

cluster_id
string
The cluster ID of the pool.

created_at
string
The date at which the pool was created.

updated_at
string
The date at which the pool was last updated.

name
string
The name of the pool.

current_node_count
number
The total number of nodes in the pool.

status
string
The status of the pool. Possible values are unknown, creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is unknown.

version
string
The version of the pool.

node_type
required string
The node type is the type of Scaleway Instance wanted for the pool.

autoscaling
boolean
The enablement of the autoscaling feature for the pool.

size
required number
The size (number of nodes) of the pool.

min_size
number
The minimun size of the pool. Note that this fields will be used only when autoscaling is enabled.

max_size
number
The maximum size of the pool. Note that this fields will be used only when autoscaling is enabled.

current_core_count
number
The total number of cores of all the nodes in the pool.

current_mem_count
number
The total amount of memory of all the nodes in the pool.

container_runtime
string
The customization of the container runtime is available for each pool. Note that `docker` is the only supporter runtime at the moment. Others are to be considered experimental. . Possible values are unknown_runtime, docker, containerd and crio. The default value is unknown_runtime.

autohealing
boolean
The enablement of the autohealing feature for the pool.

tags
array
The tags associated with the pool.

placement_group_id
nullable string
The placement group ID in which all the nodes of the pool will be created.

region
string
The cluster region of the pool.
Response Example
{
"id": "string",
"cluster_id": "string",
"created_at": "string",
"updated_at": "string",
"name": "string",
"current_node_count": 42,
"status": "unknown",
"version": "string",
"node_type": "string",
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"current_core_count": 42,
"current_mem_count": 42,
"container_runtime": "unknown_runtime",
"autohealing": "boolean",
"tags": [
"string"
],
"placement_group_id": "string",
"region": "string"
}

This method allows to update a specific pool.

PATCH
/k8s/v1beta4/regions/{region}/pools/{pool_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

pool_id
required string
The ID of the pool to update.
Body

autoscaling
nullable boolean
The new value for the enablement of autoscaling for the pool.

size
nullable number
The new size for the pool.

min_size
nullable number
The new minimun size for the pool.

max_size
nullable number
The new maximum size for the pool.

autohealing
nullable boolean
The new value for the enablement of autohealing for the pool.

tags
nullable array
The new tags associated with the pool.
Request Example
{
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"autohealing": "boolean",
"tags": [
"string"
]
}
200 Response

id
string
The ID of the pool.

cluster_id
string
The cluster ID of the pool.

created_at
string
The date at which the pool was created.

updated_at
string
The date at which the pool was last updated.

name
string
The name of the pool.

current_node_count
number
The total number of nodes in the pool.

status
string
The status of the pool. Possible values are unknown, creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is unknown.

version
string
The version of the pool.

node_type
required string
The node type is the type of Scaleway Instance wanted for the pool.

autoscaling
boolean
The enablement of the autoscaling feature for the pool.

size
required number
The size (number of nodes) of the pool.

min_size
number
The minimun size of the pool. Note that this fields will be used only when autoscaling is enabled.

max_size
number
The maximum size of the pool. Note that this fields will be used only when autoscaling is enabled.

current_core_count
number
The total number of cores of all the nodes in the pool.

current_mem_count
number
The total amount of memory of all the nodes in the pool.

container_runtime
string
The customization of the container runtime is available for each pool. Note that `docker` is the only supporter runtime at the moment. Others are to be considered experimental. . Possible values are unknown_runtime, docker, containerd and crio. The default value is unknown_runtime.

autohealing
boolean
The enablement of the autohealing feature for the pool.

tags
array
The tags associated with the pool.

placement_group_id
nullable string
The placement group ID in which all the nodes of the pool will be created.

region
string
The cluster region of the pool.
Response Example
{
"id": "string",
"cluster_id": "string",
"created_at": "string",
"updated_at": "string",
"name": "string",
"current_node_count": 42,
"status": "unknown",
"version": "string",
"node_type": "string",
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"current_core_count": 42,
"current_mem_count": 42,
"container_runtime": "unknown_runtime",
"autohealing": "boolean",
"tags": [
"string"
],
"placement_group_id": "string",
"region": "string"
}

This method allows to delete a specific pool from a cluster, deleting all the nodes associated with it.

DELETE
/k8s/v1beta4/regions/{region}/pools/{pool_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

pool_id
required string
The ID of the pool to delete.
200 Response

id
string
The ID of the pool.

cluster_id
string
The cluster ID of the pool.

created_at
string
The date at which the pool was created.

updated_at
string
The date at which the pool was last updated.

name
string
The name of the pool.

current_node_count
number
The total number of nodes in the pool.

status
string
The status of the pool. Possible values are unknown, creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is unknown.

version
string
The version of the pool.

node_type
required string
The node type is the type of Scaleway Instance wanted for the pool.

autoscaling
boolean
The enablement of the autoscaling feature for the pool.

size
required number
The size (number of nodes) of the pool.

min_size
number
The minimun size of the pool. Note that this fields will be used only when autoscaling is enabled.

max_size
number
The maximum size of the pool. Note that this fields will be used only when autoscaling is enabled.

current_core_count
number
The total number of cores of all the nodes in the pool.

current_mem_count
number
The total amount of memory of all the nodes in the pool.

container_runtime
string
The customization of the container runtime is available for each pool. Note that `docker` is the only supporter runtime at the moment. Others are to be considered experimental. . Possible values are unknown_runtime, docker, containerd and crio. The default value is unknown_runtime.

autohealing
boolean
The enablement of the autohealing feature for the pool.

tags
array
The tags associated with the pool.

placement_group_id
nullable string
The placement group ID in which all the nodes of the pool will be created.

region
string
The cluster region of the pool.
Response Example
{
"id": "string",
"cluster_id": "string",
"created_at": "string",
"updated_at": "string",
"name": "string",
"current_node_count": 42,
"status": "unknown",
"version": "string",
"node_type": "string",
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"current_core_count": 42,
"current_mem_count": 42,
"container_runtime": "unknown_runtime",
"autohealing": "boolean",
"tags": [
"string"
],
"placement_group_id": "string",
"region": "string"
}

This method allows to upgrade a specific pool. Note that this will work when the targeted version is the same than the version of the cluster.

POST
/k8s/v1beta4/regions/{region}/pools/{pool_id}/upgrade
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

pool_id
required string
The ID of the pool to upgrade.
Body

version
string
The new Kubernetes version for the pool.
Request Example
{
"version": "string"
}
200 Response

id
string
The ID of the pool.

cluster_id
string
The cluster ID of the pool.

created_at
string
The date at which the pool was created.

updated_at
string
The date at which the pool was last updated.

name
string
The name of the pool.

current_node_count
number
The total number of nodes in the pool.

status
string
The status of the pool. Possible values are unknown, creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is unknown.

version
string
The version of the pool.

node_type
required string
The node type is the type of Scaleway Instance wanted for the pool.

autoscaling
boolean
The enablement of the autoscaling feature for the pool.

size
required number
The size (number of nodes) of the pool.

min_size
number
The minimun size of the pool. Note that this fields will be used only when autoscaling is enabled.

max_size
number
The maximum size of the pool. Note that this fields will be used only when autoscaling is enabled.

current_core_count
number
The total number of cores of all the nodes in the pool.

current_mem_count
number
The total amount of memory of all the nodes in the pool.

container_runtime
string
The customization of the container runtime is available for each pool. Note that `docker` is the only supporter runtime at the moment. Others are to be considered experimental. . Possible values are unknown_runtime, docker, containerd and crio. The default value is unknown_runtime.

autohealing
boolean
The enablement of the autohealing feature for the pool.

tags
array
The tags associated with the pool.

placement_group_id
nullable string
The placement group ID in which all the nodes of the pool will be created.

region
string
The cluster region of the pool.
Response Example
{
"id": "string",
"cluster_id": "string",
"created_at": "string",
"updated_at": "string",
"name": "string",
"current_node_count": 42,
"status": "unknown",
"version": "string",
"node_type": "string",
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"current_core_count": 42,
"current_mem_count": 42,
"container_runtime": "unknown_runtime",
"autohealing": "boolean",
"tags": [
"string"
],
"placement_group_id": "string",
"region": "string"
}

A node (short for worker node) is an abstraction for a Scaleway Instance. It is part of a pool and is instantiated by Scaleway, making Kubernetes software installed and configured automatically on it. Please note that Kubernetes nodes cannot be accessed with ssh.

This method allows to list all the existing nodes for a specific Kubernetes cluster.

GET
/k8s/v1beta4/regions/{region}/clusters/{cluster_id}/nodes
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
The cluster ID from which the nodes will be listed from.
Query Parameters

pool_id
nullable string
The pool ID on which to filter the returned nodes.

order_by
string
The sort order of the returned nodes. Possible values are created_at_asc and created_at_desc. The default value is created_at_asc.

page
number
The page number for the returned nodes. The default value is 1.

page_size
number
The maximum number of nodes per page. The default value is 20.

name
nullable string
The name on which to filter the retured nodes.

status
string
The status on which to filter the returned nodes. Possible values are unknown, creating, rebuilding, notready, ready, deleting, deleted, warning, error, locked and rebooting. The default value is unknown.
200 Response

total_count
number
The total number of nodes.

nodes
array
The paginated returned nodes.
id
string
The ID of the node.

pool_id
string
The pool ID of the node.

cluster_id
string
The cluster ID of the node.

region
string
The cluster region of the node.

name
string
The name of the node.

public_ip_v4
nullable string
The public IPv4 address of the node (IPv4 address).

public_ip_v6
nullable string
The public IPv6 address of the node (IPv6 address).

conditions
map
These conditions contains the Node Problem Detector conditions, as well as some in house conditions.
<conditionKey>
string

status
string
The status of the node. Possible values are unknown, creating, rebuilding, notready, ready, deleting, deleted, warning, error, locked and rebooting. The default value is unknown.

created_at
string
The date at which the node was created.

updated_at
string
The date at which the node was last updated.
Response Example
{
"total_count": 42,
"nodes": [
{
"id": "string",
"pool_id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"public_ip_v4": "1.2.3.4",
"public_ip_v6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
"conditions": {
"<conditionKey>": "string"
},
"status": "unknown",
"created_at": "string",
"updated_at": "string"
}
]
}

This method allows to get details about a specific Kubernetes node.

GET
/k8s/v1beta4/regions/{region}/nodes/{node_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

node_id
required string
The ID of the requested node.
200 Response

id
string
The ID of the node.

pool_id
string
The pool ID of the node.

cluster_id
string
The cluster ID of the node.

region
string
The cluster region of the node.

name
string
The name of the node.

public_ip_v4
nullable string
The public IPv4 address of the node (IPv4 address).

public_ip_v6
nullable string
The public IPv6 address of the node (IPv6 address).

conditions
map
These conditions contains the Node Problem Detector conditions, as well as some in house conditions.
<conditionKey>
string

status
string
The status of the node. Possible values are unknown, creating, rebuilding, notready, ready, deleting, deleted, warning, error, locked and rebooting. The default value is unknown.

created_at
string
The date at which the node was created.

updated_at
string
The date at which the node was last updated.
Response Example
{
"id": "string",
"pool_id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"public_ip_v4": "1.2.3.4",
"public_ip_v6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
"conditions": {
"<conditionKey>": "string"
},
"status": "unknown",
"created_at": "string",
"updated_at": "string"
}

This method allows to reboot a specific node. This node will frist be cordoned, meaning that scheduling will be disabled. Then the existing pods on the node will be drained and reschedule onto another schedulable node. Note that when there is not enough space to reschedule all the pods (in a one node cluster for instance), you may experience some disruption of your applications.

POST
/k8s/v1beta4/regions/{region}/nodes/{node_id}/reboot
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

node_id
required string
The ID of the node to reboot.
Body

Request Example
{}
200 Response

id
string
The ID of the node.

pool_id
string
The pool ID of the node.

cluster_id
string
The cluster ID of the node.

region
string
The cluster region of the node.

name
string
The name of the node.

public_ip_v4
nullable string
The public IPv4 address of the node (IPv4 address).

public_ip_v6
nullable string
The public IPv6 address of the node (IPv6 address).

conditions
map
These conditions contains the Node Problem Detector conditions, as well as some in house conditions.
<conditionKey>
string

status
string
The status of the node. Possible values are unknown, creating, rebuilding, notready, ready, deleting, deleted, warning, error, locked and rebooting. The default value is unknown.

created_at
string
The date at which the node was created.

updated_at
string
The date at which the node was last updated.
Response Example
{
"id": "string",
"pool_id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"public_ip_v4": "1.2.3.4",
"public_ip_v6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
"conditions": {
"<conditionKey>": "string"
},
"status": "unknown",
"created_at": "string",
"updated_at": "string"
}

This method allows to replace a specific node. The node will be set cordoned, meaning that scheduling will be disabled. Then the existing pods on the node will be drained and reschedule onto another schedulable node. Then the node will be deleted, and a new one will be created after the deletion. Note that when there is not enough space to reschedule all the pods (in a one node cluster for instance), you may experience some disruption of your applications.

POST
/k8s/v1beta4/regions/{region}/nodes/{node_id}/replace
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

node_id
required string
The ID of the node to replace.
Body

Request Example
{}
200 Response

id
string
The ID of the node.

pool_id
string
The pool ID of the node.

cluster_id
string
The cluster ID of the node.

region
string
The cluster region of the node.

name
string
The name of the node.

public_ip_v4
nullable string
The public IPv4 address of the node (IPv4 address).

public_ip_v6
nullable string
The public IPv6 address of the node (IPv6 address).

conditions
map
These conditions contains the Node Problem Detector conditions, as well as some in house conditions.
<conditionKey>
string

status
string
The status of the node. Possible values are unknown, creating, rebuilding, notready, ready, deleting, deleted, warning, error, locked and rebooting. The default value is unknown.

created_at
string
The date at which the node was created.

updated_at
string
The date at which the node was last updated.
Response Example
{
"id": "string",
"pool_id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"public_ip_v4": "1.2.3.4",
"public_ip_v6": "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
"conditions": {
"<conditionKey>": "string"
},
"status": "unknown",
"created_at": "string",
"updated_at": "string"
}

A version is a vanilla Kubernetes version like x.y.z. It is composed of a major version x, a minor version y and a patch version z. Scaleway's managed Kubernetes, Kapsule, will at least support the last patch version for the last three minor release.

This method allows to list all available versions for the creation of a new Kubernetes cluster.

GET
/k8s/v1beta4/regions/{region}/versions
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.
200 Response

versions
array
The available Kubernetes versions.
region
string
The regions in which this version is available.

name
string
The name of the Kubernetes version.

label
string
The label of the Kubernetes version.

available_cnis
array
The supported Container Network Interface (CNI) plugins for this version.

available_ingresses
array
The supported Ingress Controllers for this version.

available_container_runtimes
array
The supported container runtimes for this version.

available_feature_gates
array
The supported feature gates for this version.

available_admission_plugins
array
The supported admission plugins for this version.
Response Example
{
"versions": [
{
"region": "string",
"name": "string",
"label": "string",
"available_cnis": [
"unknown_cni"
],
"available_ingresses": [
"unknown_ingress"
],
"available_container_runtimes": [
"unknown_runtime"
],
"available_feature_gates": [
"string"
],
"available_admission_plugins": [
"string"
]
}
]
}