Scaleway logo
Commands

Documentation for `scw k8s`

The CLI documentation pages are currently under construction

The content is up to date. We're making improvements to the site over the next few weeks for a better experience.

This API allows you to manage Kubernetes Kapsule and Kosmos clusters.

Access Control List (ACL) management commands

Network Access Control Lists (ACLs) allow you to manage inbound network traffic by setting up ACL rules.

Add new ACLs

Add new ACL rules for a specific cluster.

Usage:

TerminalCode
scw k8s acl add [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idID of the cluster whose ACLs will be addedRequired
acls.{index}.ipIP subnet to allow
acls.{index}.scaleway-rangesAllow access to cluster from all Scaleway ranges as defined in https://www.scaleway.com/en/docs/console/account/reference-content/scaleway-network-information/#ip-ranges-used-by-scalewayOpen in new context.
acls.{index}.descriptionDescription of the ACL
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Delete an existing ACL

Delete an existing ACL.

Usage:

TerminalCode
scw k8s acl delete [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
acl-idID of the ACL rule to deleteRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

List ACLs

List ACLs for a specific cluster.

Usage:

TerminalCode
scw k8s acl list [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idID of the cluster whose ACLs will be listedRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil, all

Set new ACLs

Set new ACL rules for a specific cluster.

Usage:

TerminalCode
scw k8s acl set [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idID of the cluster whose ACLs will be setRequired
acls.{index}.ipIP subnet to allow
acls.{index}.scaleway-rangesAllow access to cluster from all Scaleway ranges as defined in https://www.scaleway.com/en/docs/console/account/reference-content/scaleway-network-information/#ip-ranges-used-by-scalewayOpen in new context.
acls.{index}.descriptionDescription of the ACL
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Kapsule cluster management commands

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

Create a new Cluster

Create a new Kubernetes cluster in a Scaleway region.

Usage:

TerminalCode
scw k8s cluster create [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
project-idProject ID to use. If none is passed the default project ID will be used
typeType of the cluster. See list available cluster types for a list of valid types
nameCluster nameRequired
Default: <generated>
descriptionCluster description
tags.{index}Tags associated with the cluster
versionKubernetes version of the clusterRequired
Default: latest
cniContainer Network Interface (CNI) plugin running in the clusterRequired
Default: cilium
One of: unknown_cni, cilium, calico, kilo, none, cilium_native
pools.{index}.nameName of the pool
pools.{index}.node-typeNode type is the type of Scaleway Instance wanted for the pool. Nodes with insufficient memory are not eligible (DEV1-S, PLAY2-PICO, STARDUST). 'external' is a special node type used to provision instances from other cloud providers in a Kosmos Cluster
pools.{index}.placement-group-idPlacement group ID in which all the nodes of the pool will be created, placement groups are limited to 20 instances.
pools.{index}.autoscalingDefines whether the autoscaling feature is enabled for the pool
pools.{index}.sizeSize (number of nodes) of the pool
pools.{index}.min-sizeDefines the minimum size of the pool. Note that this field is only used when autoscaling is enabled on the pool
pools.{index}.max-sizeDefines the maximum size of the pool. Note that this field is only used when autoscaling is enabled on the pool
pools.{index}.container-runtimeCustomization of the container runtime is available for each poolOne of: unknown_runtime, containerd
pools.{index}.autohealingDefines whether the autohealing feature is enabled for the pool
pools.{index}.tags.{index}Tags associated with the pool, see managing tagsOpen in new context
pools.{index}.kubelet-args.{key}Kubelet arguments to be used by this pool. Note that this feature is experimental
pools.{index}.upgrade-policy.max-unavailableThe maximum number of nodes that can be upgrading at the same time
pools.{index}.upgrade-policy.max-surgeThe maximum number of nodes to be created during the upgrade, e.g. the pool will scale up to reach size+max_surge before downscaling to size after node upgrades
pools.{index}.zoneZone in which the pool's nodes will be spawned
pools.{index}.root-volume-typeDefines the system volume disk type. Several types of volume (volume_type) are provided:One of: default_volume_type, l_ssd, b_ssd, sbs_5k, sbs_15k
pools.{index}.root-volume-sizeSystem volume disk size
pools.{index}.public-ip-disabledDefines if the public IP should be removed from Nodes. To use this feature, your Cluster must have an attached Private Network set up with a Public Gateway
pools.{index}.security-group-idSecurity group ID in which all the nodes of the pool will be created. If unset, the pool will use default Kapsule security group in current zone
pools.{index}.labels.{key}Kubernetes labels applied and reconciled on the nodes
pools.{index}.taints.{index}.keyThe taint key to be applied to a node
pools.{index}.taints.{index}.valueThe taint value corresponding to the taint key
pools.{index}.taints.{index}.effectEffect defines the effects of TaintOne of: NoSchedule, PreferNoSchedule, NoExecute
pools.{index}.startup-taints.{index}.keyThe taint key to be applied to a node
pools.{index}.startup-taints.{index}.valueThe taint value corresponding to the taint key
pools.{index}.startup-taints.{index}.effectEffect defines the effects of TaintOne of: NoSchedule, PreferNoSchedule, NoExecute
pools.{index}.max-termination-grace-periodMaximum amount of time in seconds before the API forces the drain and deletion of a deleting node. It overrides pods PodDisruptionBudget and terminationGracePeriodSeconds. Defaults to 15 minutes, up to 1 hour.
pools.{index}.user-data.{key}User data applied and reconciled with the pool
autoscaler-config.scale-down-disabledForbid cluster autoscaler to scale down the cluster, defaults to false
autoscaler-config.scale-down-delay-after-addHow long after scale up the scale down evaluation resumes
autoscaler-config.estimatorType of resource estimator to be used in scale upOne of: unknown_estimator, binpacking
autoscaler-config.expanderKubernetes autoscaler strategy to fit pods into nodes, see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-expandersOpen in new context for detailsOne of: unknown_expander, random, most_pods, least_waste, priority, price
autoscaler-config.ignore-daemonsets-utilizationIgnore DaemonSet pods when calculating resource utilization for scaling down, defaults to false
autoscaler-config.balance-similar-node-groupsDetect similar node groups and balance the number of nodes between them, defaults to false
autoscaler-config.expendable-pods-priority-cutoffPods with priority below cutoff will be expendable. They can be killed without any consideration during scale down and they won't cause scale up. Pods with null priority (PodPriority disabled) are non expendable
autoscaler-config.scale-down-unneeded-timeHow long a node should be unneeded before it is eligible for scale down, defaults to 10 minutes
autoscaler-config.scale-down-utilization-thresholdNode utilization level, defined as a sum of requested resources divided by allocatable capacity, below which a node can be considered for scale down
autoscaler-config.max-graceful-termination-secMaximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node, defaults to 600 (10 minutes)
autoscaler-config.skip-nodes-with-local-storageCluster autoscaler will never delete nodes with pods with local storage, e.g. EmptyDir or HostPath, defaults to true
autoscaler-config.log-levelCluster autoscaler logging level expressed from 0 to 4 (4 being the more verbose), defaults to 2. see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#how-can-i-increase-the-information-that-the-ca-is-loggingOpen in new context for details
auto-upgrade.enableDefines whether auto upgrade is enabled for the cluster
auto-upgrade.maintenance-window.start-hourStart time of the two-hour maintenance window
auto-upgrade.maintenance-window.dayDay of the week for the maintenance windowOne of: any, monday, tuesday, wednesday, thursday, friday, saturday, sunday
feature-gates.{index}List of feature gates to enable
admission-plugins.{index}List of admission plugins to enable
open-id-connect-config.issuer-urlURL of the provider which allows the API server to discover public signing keys. Only URLs using the https:// scheme are accepted. This is typically the provider's discovery URL without a path, for example "https://accounts.google.comOpen in new context" or "https://login.salesforce.comOpen in new context"
open-id-connect-config.client-idA client ID that all tokens must be issued for
open-id-connect-config.username-claimJWT claim to use as the user name. The default is sub, which is expected to be the end user's unique identifier. Admins can choose other claims, such as email or name, depending on their provider. However, claims other than email will be prefixed with the issuer URL to prevent name collision
open-id-connect-config.username-prefixPrefix prepended to username claims to prevent name collision (such as system: users). For example, the value oidc: will create usernames like oidc:jane.doe. If this flag is not provided and username_claim is a value other than email, the prefix defaults to ( Issuer URL )# where ( Issuer URL ) is the value of issuer_url. The value - can be used to disable all prefixing
open-id-connect-config.groups-claim.{index}JWT claim to use as the user's group
open-id-connect-config.groups-prefixPrefix prepended to group claims to prevent name collision (such as system: groups). For example, the value oidc: will create group names like oidc:engineering and oidc:infra
open-id-connect-config.required-claim.{index}Multiple key=value pairs describing a required claim in the ID token. If set, the claims are verified to be present in the ID token with a matching value
apiserver-cert-sans.{index}Additional Subject Alternative Names for the Kubernetes API server certificate
private-network-idPrivate network ID for internal cluster communication (cannot be changed later). For Kapsule clusters, if none is provided, a private network will be created
pod-cidrSubnet used for the Pod CIDR (cannot be changed later)
service-cidrSubnet used for the Service CIDR (cannot be changed later)
service-dns-ipIP used for the DNS Service (cannot be changes later). If unset, default to Service CIDR's network + 10
organization-idOrganization ID to use. If none is passed the default organization ID will be used
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Create a Kubernetes cluster named foo with cilium as CNI, in version 1.31.2 and with a pool named default composed of 3 DEV1-M

TerminalCode
scw k8s cluster create name=foo version=1.31.2 pools.0.size=3 pools.0.node-type=DEV1-M pools.0.name=default

Create a Kubernetes cluster named bar, tagged, calico as CNI, in version 1.31.2 and with a tagged pool named default composed of 2 RENDER-S and autohealing and autoscaling enabled (between 1 and 10 nodes)

TerminalCode
scw k8s cluster create name=bar version=1.31.2 tags.0=tag1 tags.1=tag2 cni=calico pools.0.size=2 pools.0.node-type=RENDER-S pools.0.min-size=1 pools.0.max-size=10 pools.0.autohealing=true pools.0.autoscaling=true pools.0.tags.0=pooltag1 pools.0.tags.1=pooltag2 pools.0.name=default

Delete a Cluster

Delete a specific Kubernetes cluster and all its associated pools and nodes, and possibly its associated Load Balancers or Block Volumes.

Usage:

TerminalCode
scw k8s cluster delete <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idID of the cluster to deleteRequired
with-additional-resourcesDefines whether all volumes (including retain volume type), empty Private Networks and Load Balancers with a name starting with the cluster ID will also be deleted
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Delete a cluster without deleting its Block volumes and Load Balancers

TerminalCode
scw k8s cluster delete 11111111-1111-1111-1111-111111111111

Delete a cluster with its Block volumes and Load Balancers (best effort)

TerminalCode
scw k8s cluster delete 11111111-1111-1111-1111-111111111111 with-additional-resources=true

Get a Cluster

Retrieve information about a specific Kubernetes cluster.

Usage:

TerminalCode
scw k8s cluster get <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idID of the requested clusterRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Get a cluster information

TerminalCode
scw k8s cluster get 11111111-1111-1111-1111-111111111111

List Clusters

List all existing Kubernetes clusters in a specific region.

Usage:

TerminalCode
scw k8s cluster list [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
project-idProject ID on which to filter the returned clusters
order-bySort order of returned clustersOne of: created_at_asc, created_at_desc, updated_at_asc, updated_at_desc, name_asc, name_desc, status_asc, status_desc, version_asc, version_desc
nameName to filter on, only clusters containing this substring in their name will be returned
statusStatus to filter on, only clusters with this status will be returnedOne of: unknown, creating, ready, deleting, deleted, updating, locked, pool_required
typeType to filter on, only clusters with this type will be returned
private-network-idPrivate Network ID to filter on, only clusters within this Private Network will be returned
versionVersion to filter on, only cluster matching this prefix version will be returned
organization-idOrganization ID on which to filter the returned clusters
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil, all

Examples:

List all clusters on your default region

TerminalCode
scw k8s cluster list

List the ready clusters on your default region

TerminalCode
scw k8s cluster list status=ready

List the clusters that match the given name on fr-par ('cluster1' will return 'cluster100' and 'cluster1' but not 'foo')

TerminalCode
scw k8s cluster list region=fr-par name=cluster1

List available cluster types for a cluster

List the cluster types that a specific Kubernetes cluster is allowed to switch to.

Usage:

TerminalCode
scw k8s cluster list-available-types <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idCluster ID for which the available Kubernetes types will be listedRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

List all cluster types that a cluster can upgrade to

TerminalCode
scw k8s cluster list-available-types 11111111-1111-1111-1111-111111111111

List available versions for a Cluster

List the versions that a specific Kubernetes cluster is allowed to upgrade to. Results will include every patch version greater than the current patch, as well as one minor version ahead of the current version. Any upgrade skipping a minor version will not work.

Usage:

TerminalCode
scw k8s cluster list-available-versions <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idCluster ID for which the available Kubernetes versions will be listedRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

List all versions that a cluster can upgrade to

TerminalCode
scw k8s cluster list-available-versions 11111111-1111-1111-1111-111111111111

Reset the admin token of a Cluster

Reset the admin token for a specific Kubernetes cluster. This will revoke the old admin token (which will not be usable afterwards) and create a new one. Note that you will need to download the kubeconfig again to keep interacting with the cluster.

Usage:

TerminalCode
scw k8s cluster reset-admin-token <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idCluster ID on which the admin token will be renewedRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Reset the admin token for a cluster

TerminalCode
scw k8s cluster reset-admin-token 11111111-1111-1111-1111-111111111111

Change the Cluster type

Change the type of a specific Kubernetes cluster. To see the possible values you can enter for the type field, list available cluster types.

Usage:

TerminalCode
scw k8s cluster set-type <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idID of the cluster to migrate from one type to anotherRequired
typeType of the cluster. Note that some migrations are not possible (please refer to product documentation)Required
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Convert a kapsule cluster to a kapsule-dedicated-16 cluster

TerminalCode
scw k8s cluster set-type 11111111-1111-1111-1111-111111111111 type=kapsule-dedicated-16

Update a Cluster

Update information on a specific Kubernetes cluster. You can update details such as its name, description, tags and configuration. To upgrade a cluster, you will need to use the dedicated endpoint.

Usage:

TerminalCode
scw k8s cluster update <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idID of the cluster to updateRequired
nameNew external name for the cluster
descriptionNew description for the cluster
tags.{index}New tags associated with the cluster
autoscaler-config.scale-down-disabledForbid cluster autoscaler to scale down the cluster, defaults to false
autoscaler-config.scale-down-delay-after-addHow long after scale up the scale down evaluation resumes
autoscaler-config.estimatorType of resource estimator to be used in scale upOne of: unknown_estimator, binpacking
autoscaler-config.expanderKubernetes autoscaler strategy to fit pods into nodes, see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-expandersOpen in new context for detailsOne of: unknown_expander, random, most_pods, least_waste, priority, price
autoscaler-config.ignore-daemonsets-utilizationIgnore DaemonSet pods when calculating resource utilization for scaling down, defaults to false
autoscaler-config.balance-similar-node-groupsDetect similar node groups and balance the number of nodes between them, defaults to false
autoscaler-config.expendable-pods-priority-cutoffPods with priority below cutoff will be expendable. They can be killed without any consideration during scale down and they won't cause scale up. Pods with null priority (PodPriority disabled) are non expendable
autoscaler-config.scale-down-unneeded-timeHow long a node should be unneeded before it is eligible for scale down, defaults to 10 minutes
autoscaler-config.scale-down-utilization-thresholdNode utilization level, defined as a sum of requested resources divided by allocatable capacity, below which a node can be considered for scale down
autoscaler-config.max-graceful-termination-secMaximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node, defaults to 600 (10 minutes)
autoscaler-config.skip-nodes-with-local-storageCluster autoscaler will never delete nodes with pods with local storage, e.g. EmptyDir or HostPath, defaults to true
autoscaler-config.log-levelCluster autoscaler logging level expressed from 0 to 4 (4 being the more verbose), defaults to 2. see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#how-can-i-increase-the-information-that-the-ca-is-loggingOpen in new context for details
auto-upgrade.enableDefines whether auto upgrade is enabled for the cluster
auto-upgrade.maintenance-window.start-hourStart time of the two-hour maintenance window
auto-upgrade.maintenance-window.dayDay of the week for the maintenance windowOne of: any, monday, tuesday, wednesday, thursday, friday, saturday, sunday
feature-gates.{index}List of feature gates to enable
admission-plugins.{index}List of admission plugins to enable
open-id-connect-config.issuer-urlURL of the provider which allows the API server to discover public signing keys. Only URLs using the https:// scheme are accepted. This is typically the provider's discovery URL without a path, for example "https://accounts.google.comOpen in new context" or "https://login.salesforce.comOpen in new context"
open-id-connect-config.client-idA client ID that all tokens must be issued for
open-id-connect-config.username-claimJWT claim to use as the user name. The default is sub, which is expected to be the end user's unique identifier. Admins can choose other claims, such as email or name, depending on their provider. However, claims other than email will be prefixed with the issuer URL to prevent name collision
open-id-connect-config.username-prefixPrefix prepended to username claims to prevent name collision (such as system: users). For example, the value oidc: will create usernames like oidc:jane.doe. If this flag is not provided and username_claim is a value other than email, the prefix defaults to ( Issuer URL )# where ( Issuer URL ) is the value of issuer_url. The value - can be used to disable all prefixing
open-id-connect-config.groups-claim.{index}JWT claim to use as the user's group
open-id-connect-config.groups-prefixPrefix prepended to group claims to prevent name collision (such as system: groups). For example, the value oidc: will create group names like oidc:engineering and oidc:infra
open-id-connect-config.required-claim.{index}Multiple key=value pairs describing a required claim in the ID token. If set, the claims are verified to be present in the ID token with a matching value
apiserver-cert-sans.{index}Additional Subject Alternative Names for the Kubernetes API server certificate
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Add InPlacePodVerticalScaling and SidecarContainers as feature gates on a cluster

TerminalCode
scw k8s cluster update 11111111-1111-1111-1111-111111111111 feature-gates.0=InPlacePodVerticalScaling feature-gates.1=SidecarContainers

Remove all custom feature gates on a cluster

TerminalCode
scw k8s cluster update 11111111-1111-1111-1111-111111111111 feature-gates=none

Upgrade a Cluster

Upgrade a specific Kubernetes cluster and possibly its associated pools to a specific and supported Kubernetes version.

Usage:

TerminalCode
scw k8s cluster upgrade <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idID of the cluster to upgradeRequired
versionNew Kubernetes version of the cluster. Note that the version should either be a higher patch version of the same minor version or the direct minor version after the current oneRequired
upgrade-poolsDefines whether pools will also be upgraded once the control plane is upgraded
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Upgrade a cluster to version 1.31.2 of Kubernetes (pools are not included)

TerminalCode
scw k8s cluster upgrade 11111111-1111-1111-1111-111111111111 version=1.31.2

Upgrade a cluster to version 1.31.2 of Kubernetes (pools are included)

TerminalCode
scw k8s cluster upgrade 11111111-1111-1111-1111-111111111111 version=1.31.2 upgrade-pools=true

Wait for a cluster to reach a stable state

Wait for server to reach a stable state. This is similar to using --wait flag on other action commands, but without requiring a new action on the server.

Usage:

TerminalCode
scw k8s cluster wait <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idID of the cluster.Required
wait-for-poolsWait for pools to be ready.
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
timeoutTimeout of the waitDefault: 10m0s

Examples:

Wait for a cluster to reach a stable state

TerminalCode
scw k8s cluster wait 11111111-1111-1111-1111-111111111111

Cluster type management commands

All cluster types available in a specified region A cluster type represents the different commercial types of clusters offered by Scaleway.

List cluster types

List available cluster types and their technical details.

Usage:

TerminalCode
scw k8s cluster-type list [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil, all

Manage your Kubernetes Kapsule cluster's kubeconfig files

Retrieve a kubeconfig

Retrieve the kubeconfig for a specified cluster.

Usage:

TerminalCode
scw k8s kubeconfig get <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idCluster ID from which to retrieve the kubeconfigRequired
auth-methodWhich method to use to authenticate using kubeletDefault: cli
One of: cli, copy-cli-token, legacy
regionRegion to target. If none is passed will use default region from the configDefault: fr-par

Examples:

Get the kubeconfig for a given cluster

TerminalCode
scw k8s kubeconfig get 11111111-1111-1111-1111-111111111111

Get the kubeconfig for a given cluster by copying current secret_key to it

TerminalCode
scw k8s kubeconfig get 11111111-1111-1111-1111-111111111111 auth-method=copy-cli-token

Get the kubeconfig for a given cluster and use legacy authentication

TerminalCode
scw k8s kubeconfig get 11111111-1111-1111-1111-111111111111 auth-method=legacy

Install a kubeconfig

Retrieve the kubeconfig for a specified cluster and write it on disk. It will merge the new kubeconfig in the file pointed by the KUBECONFIG variable. If empty it will default to $HOME/.kube/config.

Usage:

TerminalCode
scw k8s kubeconfig install <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idCluster ID from which to retrieve the kubeconfigRequired
auth-methodWhich method to use to authenticate using kubeletDefault: cli
One of: cli, copy-cli-token, legacy
keep-current-contextWhether or not to keep the current kubeconfig context unmodified
regionRegion to target. If none is passed will use default region from the configDefault: fr-par

Examples:

Install the kubeconfig for a given cluster and using the new context

TerminalCode
scw k8s kubeconfig install 11111111-1111-1111-1111-111111111111

Get the kubeconfig for a given cluster by copying current secret_key to it

TerminalCode
scw k8s kubeconfig install 11111111-1111-1111-1111-111111111111 auth-method=copy-cli-token

Get the kubeconfig for a given cluster and use legacy authentication

TerminalCode
scw k8s kubeconfig install 11111111-1111-1111-1111-111111111111 auth-method=legacy

Uninstall a kubeconfig

Remove specified cluster from kubeconfig file specified by the KUBECONFIG env, if empty it will default to $HOME/.kube/config. If the current context points to this cluster, it will be set to an empty context.

Usage:

TerminalCode
scw k8s kubeconfig uninstall <cluster-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idCluster ID from which to uninstall the kubeconfigRequired

Examples:

Uninstall the kubeconfig for a given cluster

TerminalCode
scw k8s kubeconfig uninstall 11111111-1111-1111-1111-111111111111

Kapsule node management commands

A node (short for worker node) is an abstraction for a Scaleway Instance A node is always part of a pool. Each of them has the Kubernetes software automatically installed and configured by Scaleway.

Delete a Node in a Cluster

Delete a specific Node. Pool size is reduced by 1. The node will first be drained and pods will be rescheduled onto another node. Note that when there is not enough space to reschedule all the pods (such as in a one-node cluster, or with specific constraints), disruption of your applications may occur.

Usage:

TerminalCode
scw k8s node delete <node-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
node-idID of the node to replaceRequired
skip-drainSkip draining node from its workload (Note: this parameter is currently inactive)
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Delete a node

TerminalCode
scw k8s node delete 11111111-1111-1111-1111-111111111111

Delete a node without evicting workloads

TerminalCode
scw k8s node delete 11111111-1111-1111-1111-111111111111 skip-drain=true

Get a Node in a Cluster

Retrieve details about a specific Kubernetes Node.

Usage:

TerminalCode
scw k8s node get <node-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
node-idID of the requested nodeRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Get a node

TerminalCode
scw k8s node get 11111111-1111-1111-1111-111111111111

List Nodes in a Cluster

List all the existing nodes for a specific Kubernetes cluster.

Usage:

TerminalCode
scw k8s node list [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idCluster ID from which the nodes will be listed fromRequired
pool-idPool ID on which to filter the returned nodes
order-bySort order of the returned nodesOne of: created_at_asc, created_at_desc, updated_at_asc, updated_at_desc, name_asc, name_desc, status_asc, status_desc, version_asc, version_desc
nameName to filter on, only nodes containing this substring in their name will be returned
statusStatus to filter on, only nodes with this status will be returnedOne of: unknown, creating, not_ready, ready, deleting, deleted, locked, rebooting, creation_error, upgrading, starting, registering
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil, all

Examples:

List all the nodes in the cluster

TerminalCode
scw k8s node list cluster-id=11111111-1111-1111-1111-111111111111

List all the nodes in the cluster's 22222222-2222-2222-2222-222222222222 pool

TerminalCode
scw k8s node list cluster-id=11111111-1111-1111-1111-111111111111 pool-id=22222222-2222-2222-2222-222222222222

List all cluster nodes that are ready

TerminalCode
scw k8s node list cluster-id=11111111-1111-1111-1111-111111111111 status=ready

Reboot a Node in a Cluster

Reboot a specific Node. The node will first be drained and pods will be rescheduled onto another node. Note that when there is not enough space to reschedule all the pods (such as in a one-node cluster, or with specific constraints), disruption of your applications may occur.

Usage:

TerminalCode
scw k8s node reboot <node-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
node-idID of the node to rebootRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Reboot a node

TerminalCode
scw k8s node reboot 11111111-1111-1111-1111-111111111111

Replace a Node in a Cluster

Replace a specific Node. The node will first be drained and pods will be rescheduled onto another node. Note that when there is not enough space to reschedule all the pods (such as in a one-node cluster, or with specific constraints), disruption of your applications may occur.

Usage:

TerminalCode
scw k8s node replace <node-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
node-idID of the node to replaceRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Replace a node

TerminalCode
scw k8s node replace 11111111-1111-1111-1111-111111111111

Wait for a node to reach a stable state

Wait for a node to reach a stable state. This is similar to using --wait flag on other action commands, but without requiring a new action on the node.

Usage:

TerminalCode
scw k8s node wait <node-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
node-idID of the node.Required
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
timeoutTimeout of the waitDefault: 10m0s

Examples:

Wait for a node to reach a stable state

TerminalCode
scw k8s node wait 11111111-1111-1111-1111-111111111111

Kapsule pool management commands

A pool is a set of identical nodes A pool has a name, a size (its desired number of nodes), node number limits (min, max), and a Scaleway Instance type. Changing those limits increases/decreases the size of a pool. As a result and depending on its load, the pool will grow or shrink within those limits when autoscaling is enabled.

Add an external node to a Kosmos Pool

Add an external node to a Kosmos Pool. This will connect via SSH to the node, download the multicloud configuration script and run it with sudo privileges. Keep in mind that your external node needs to have wget in order to download the script.

Usage:

TerminalCode
scw k8s pool add-external-node [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
node-ipIP address of the external nodeRequired
pool-idID of the Pool the node should be added toRequired
usernameUsername used for the SSH connectionDefault: root
regionRegion to target. If none is passed will use default region from the configDefault: fr-par

Create a new Pool in a Cluster

Create a new pool in a specific Kubernetes cluster.

Usage:

TerminalCode
scw k8s pool create [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idCluster ID to which the pool will be attachedRequired
namePool nameRequired
Default: <generated>
node-typeNode type is the type of Scaleway Instance wanted for the pool. Nodes with insufficient memory are not eligible (DEV1-S, PLAY2-PICO, STARDUST). 'external' is a special node type used to provision instances from other cloud providers in a Kosmos ClusterRequired
Default: DEV1-M
placement-group-idPlacement group ID in which all the nodes of the pool will be created, placement groups are limited to 20 instances.
autoscalingDefines whether the autoscaling feature is enabled for the pool
sizeSize (number of nodes) of the poolRequired
Default: 1
min-sizeDefines the minimum size of the pool. Note that this field is only used when autoscaling is enabled on the pool
max-sizeDefines the maximum size of the pool. Note that this field is only used when autoscaling is enabled on the pool
container-runtimeCustomization of the container runtime is available for each poolOne of: unknown_runtime, containerd
autohealingDefines whether the autohealing feature is enabled for the pool
tags.{index}Tags associated with the pool, see managing tagsOpen in new context
kubelet-args.{key}Kubelet arguments to be used by this pool. Note that this feature is experimental
upgrade-policy.max-unavailableThe maximum number of nodes that can be upgrading at the same time
upgrade-policy.max-surgeThe maximum number of nodes to be created during the upgrade, e.g. the pool will scale up to reach size+max_surge before downscaling to size after node upgrades
zoneZone in which the pool's nodes will be spawned
root-volume-typeDefines the system volume disk type. Several types of volume (volume_type) are provided:One of: default_volume_type, l_ssd, b_ssd, sbs_5k, sbs_15k
root-volume-sizeSystem volume disk size
public-ip-disabledDefines if the public IP should be removed from Nodes. To use this feature, your Cluster must have an attached Private Network set up with a Public Gateway
security-group-idSecurity group ID in which all the nodes of the pool will be created. If unset, the pool will use default Kapsule security group in current zone
labels.{key}Kubernetes labels applied and reconciled on the nodes
taints.{index}.keyThe taint key to be applied to a node
taints.{index}.valueThe taint value corresponding to the taint key
taints.{index}.effectEffect defines the effects of TaintOne of: NoSchedule, PreferNoSchedule, NoExecute
startup-taints.{index}.keyThe taint key to be applied to a node
startup-taints.{index}.valueThe taint value corresponding to the taint key
startup-taints.{index}.effectEffect defines the effects of TaintOne of: NoSchedule, PreferNoSchedule, NoExecute
user-data.{key}User data applied and reconciled with the pool
max-termination-grace-periodMaximum amount of time in seconds before the API forces the drain and deletion of a deleting node. It overrides pods PodDisruptionBudget and terminationGracePeriodSeconds. Defaults to 15 minutes, up to 1 hour.
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Create a pool named 'bar' with 2 DEV1-XL on a cluster

TerminalCode
scw k8s pool create cluster-id=11111111-1111-1111-1111-111111111111 name=bar node-type=DEV1-XL size=2

Create a pool named 'fish' with 5 GP1-L, autoscaling within 0 and 10 nodes and autohealing enabled

TerminalCode
scw k8s pool create cluster-id=11111111-1111-1111-1111-111111111111 name=fish node-type=GP1-L size=5 min-size=0 max-size=10 autoscaling=true autohealing=true

Create a tagged pool named 'turtle' with 1 GP1-S which is using the already created placement group 22222222-2222-2222-2222-222222222222 for all the nodes in the pool on a cluster

TerminalCode
scw k8s pool create cluster-id=11111111-1111-1111-1111-111111111111 name=turtle node-type=GP1-S size=1 placement-group-id=22222222-2222-2222-2222-222222222222 tags.0=turtle-uses-placement-group

Create a pool with user data loaded from a local file

TerminalCode
scw k8s pool create cluster-id=11111111-1111-1111-1111-111111111111 name=bar node-type=DEV1-XL size=2 user-data.cloud-init=@cloud-init.yml

Delete a Pool in a Cluster

Delete a specific pool from a cluster. Note that all the pool's nodes will also be deleted.

Usage:

TerminalCode
scw k8s pool delete <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the pool to deleteRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Delete a specific pool

TerminalCode
scw k8s pool delete 11111111-1111-1111-1111-111111111111

Get a Pool in a Cluster

Retrieve details about a specific pool in a Kubernetes cluster.

Usage:

TerminalCode
scw k8s pool get <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the requested poolRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Get a given pool

TerminalCode
scw k8s pool get 11111111-1111-1111-1111-111111111111

Retrieve specific user data content for a given pool. Tip: add ?dl=1 at the end of the URL to directly retrieve the base64 decoded content of your user data.

Usage:

TerminalCode
scw k8s pool get-userdata <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idPool the user data are associated toRequired
keyUser data key to retrievedRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Get a pool user data by name

TerminalCode
scw k8s pool get-userdata 11111111-1111-1111-1111-111111111111 key=cloud-init

List Pools in a Cluster

List all the existing pools for a specific Kubernetes cluster.

Usage:

TerminalCode
scw k8s pool list [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
cluster-idID of the cluster whose pools will be listedRequired
order-bySort order of returned poolsOne of: created_at_asc, created_at_desc, updated_at_asc, updated_at_desc, name_asc, name_desc, status_asc, status_desc, version_asc, version_desc
nameName to filter on, only pools containing this substring in their name will be returned
statusStatus to filter on, only pools with this status will be returnedOne of: unknown, ready, deleting, deleted, scaling, warning, locked, upgrading
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil, all

Examples:

List all pools for a cluster

TerminalCode
scw k8s pool list cluster-id=11111111-1111-1111-1111-111111111111

List all scaling pools for a cluster

TerminalCode
scw k8s pool list cluster-id=11111111-1111-1111-1111-111111111111 status=scaling

List all pools for clusters containing 'foo' in their name

TerminalCode
scw k8s pool list cluster-id=11111111-1111-1111-1111-111111111111 name=foo

List all pools for a cluster and order them by ascending creation date

TerminalCode
scw k8s pool list cluster-id=11111111-1111-1111-1111-111111111111 order-by=created_at_asc

This list only the user data key and not the content.

Usage:

TerminalCode
scw k8s pool list-userdata <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idPool the user data are associated toRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

List all user data for a given pool

TerminalCode
scw k8s pool list-userdata 11111111-1111-1111-1111-111111111111

Remove a label from a Pool

Remove a label from all nodes of the pool (only apply to labels which was set through scaleway api).

Usage:

TerminalCode
scw k8s pool remove-label <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the pool.Required
keyKey of the label.Required
regionRegion to target. If none is passed will use default region from the configDefault: fr-par

Examples:

Remove a label of a specific pool

TerminalCode
scw k8s pool remove-label 11111111-1111-1111-1111-111111111111 key=foo

Remove a startup taint from a Pool

New nodes will not have this taint at startup (does not remove taints from kubernetes side).

Usage:

TerminalCode
scw k8s pool remove-startup-taint <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the pool.Required
keyKey of the taint.Required
regionRegion to target. If none is passed will use default region from the configDefault: fr-par

Examples:

Remove a startup taint of a specific pool

TerminalCode
scw k8s pool remove-startup-taint 11111111-1111-1111-1111-111111111111 key=foo

Remove a taint from a Pool

Remove a taint from all all nodes of the pool (only apply to taints which was set through scaleway api).

Usage:

TerminalCode
scw k8s pool remove-taint <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the pool.Required
keyKey of the taint.Required
regionRegion to target. If none is passed will use default region from the configDefault: fr-par

Examples:

Remove a taint to a specific pool

TerminalCode
scw k8s pool remove-taint 11111111-1111-1111-1111-111111111111 key=foo

Apply a label to a Pool

Apply a label to all nodes of the pool which will be periodically reconciled by scaleway.

Usage:

TerminalCode
scw k8s pool set-label <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the pool.Required
keyKey of the label.Required
valueValue of the label.Required
regionRegion to target. If none is passed will use default region from the configDefault: fr-par

Examples:

Apply a label to a specific pool

TerminalCode
scw k8s pool set-label 11111111-1111-1111-1111-111111111111 key=foo value=bar

Apply a full label to a specific pool

TerminalCode
scw k8s pool set-label 11111111-1111-1111-1111-111111111111 key=organization.example/gpu value=true

Apply a startup taint to a Pool

Apply a taint at node creation but does not reconcile after.

Usage:

TerminalCode
scw k8s pool set-startup-taint <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the pool.Required
keyKey of the taint.Required
valueValue of the taint.Required
effectEffect of the taint.Required
One of: NoSchedule, PreferNoSchedule, NoExecute
regionRegion to target. If none is passed will use default region from the configDefault: fr-par

Examples:

Apply a startup taint to a specific pool

TerminalCode
scw k8s pool set-startup-taint 11111111-1111-1111-1111-111111111111 key=foo value=bar effect=NoSchedule

Apply a full startup taint to a specific pool

TerminalCode
scw k8s pool set-startup-taint 11111111-1111-1111-1111-111111111111 key=organization.example/gpu value=true effect=NoSchedule

Apply a taint to a Pool

Apply a taint to all nodes of the pool which will be periodically reconciled by scaleway.

Usage:

TerminalCode
scw k8s pool set-taint <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the pool.Required
keyKey of the taint.Required
valueValue of the taint.Required
effectEffect of the taint.Required
One of: NoSchedule, PreferNoSchedule, NoExecute
regionRegion to target. If none is passed will use default region from the configDefault: fr-par

Examples:

Apply a taint to a specific pool

TerminalCode
scw k8s pool set-taint 11111111-1111-1111-1111-111111111111 key=foo value=bar effect=NoSchedule

Apply a full taint to a specific pool

TerminalCode
scw k8s pool set-taint 11111111-1111-1111-1111-111111111111 key=organization.example/gpu value=true effect=NoSchedule

Update a Pool in a Cluster

Update the attributes of a specific pool, such as its desired size, autoscaling settings, and tags. To upgrade a pool, you will need to use the dedicated endpoint.

Usage:

TerminalCode
scw k8s pool update <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the pool to updateRequired
autoscalingNew value for the pool autoscaling enablement
sizeNew desired pool size
min-sizeNew minimum size for the pool
max-sizeNew maximum size for the pool
autohealingNew value for the pool autohealing enablement
tags.{index}New tags associated with the pool
kubelet-args.{key}New Kubelet arguments to be used by this pool. Note that this feature is experimental
upgrade-policy.max-unavailableNew maximum number of nodes that can be upgrading at the same time
upgrade-policy.max-surgeNew maximum number of nodes to be created during the upgrade
security-group-idSecurity group ID in which all the nodes of the pool will be moved
max-termination-grace-periodNew maximum amount of time in seconds before the API forces the drain and deletion of a deleting node.
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Enable autoscaling on a given pool

TerminalCode
scw k8s pool update 11111111-1111-1111-1111-111111111111 autoscaling=true

Reduce the size and maximum size of a given pool to 4

TerminalCode
scw k8s pool update 11111111-1111-1111-1111-111111111111 size=4 max-size=4

Modify the tags of a given pool

TerminalCode
scw k8s pool update 11111111-1111-1111-1111-111111111111 tags.0=my tags.1=new tags.2=pool

Remove all tags of a given pool

TerminalCode
scw k8s pool update 11111111-1111-1111-1111-111111111111 tags=none

Upgrade a Pool in a Cluster

Upgrade the Kubernetes version of a specific pool. Note that it only works if the targeted version matches the cluster's version. This will drain and replace the nodes in that pool.

Usage:

TerminalCode
scw k8s pool upgrade <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the pool to upgradeRequired
versionNew Kubernetes version for the poolRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Upgrade a specific pool to the Kubernetes version 1.31.2

TerminalCode
scw k8s pool upgrade 11111111-1111-1111-1111-111111111111 version=1.31.2

Wait for a pool to reach a stable state

Wait for a pool to reach a stable state. This is similar to using --wait flag on other action commands, but without requiring a new action on the node.

Usage:

TerminalCode
scw k8s pool wait <pool-id ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
pool-idID of the pool.Required
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
timeoutTimeout of the waitDefault: 10m0s

Examples:

Wait for a pool to reach a stable state

TerminalCode
scw k8s pool wait 11111111-1111-1111-1111-111111111111

Available Kubernetes versions commands

A version is a vanilla Kubernetes version like x.y.z It comprises a major version x, a minor version y, and a patch version z. At the minimum, Kapsule (Scaleway's managed Kubernetes), will support the last patch version for the past three minor releases. Also, each version has a different set of CNIs, eventually container runtimes, feature gates, and admission plugins available. See our Version Support PolicyOpen in new context.

Get a Version

Retrieve a specific Kubernetes version and its details.

Usage:

TerminalCode
scw k8s version get <version-name ...> [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
version-nameRequested version nameRequired
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

Get the Kubernetes version 1.31.2

TerminalCode
scw k8s version get 1.31.2

List all available Versions

List all available versions for the creation of a new Kubernetes cluster.

Usage:

TerminalCode
scw k8s version list [arg=value ...]

Arguments:

NameDescriptionArgument Specifications
regionRegion to target. If none is passed will use default region from the configDefault: fr-par
One of: fr-par, nl-ams, pl-waw, it-mil

Examples:

List all available Kubernetes version in Kapsule

TerminalCode
scw k8s version list