Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
6b52c4e
feat(k8s): add taints, startup taints, node labels MTA-7162
vanda-scw Jun 11, 2026
2faff01
feat(k8s): fix editorial details MTA-7162
vanda-scw Jun 11, 2026
92f87be
feat(k8s): improvements MTA-7162
vanda-scw Jun 12, 2026
7936761
feat(k8s): add taints, startup taints, node labels MTA-7162
vanda-scw Jun 12, 2026
f37ae44
feat(k8s): add taints, startup taints, node labels MTA-7162
vanda-scw Jun 15, 2026
637a9c3
feat(k8s): add taints, startup taints, node labels MTA-7162
vanda-scw Jun 15, 2026
d1c08a3
feat(k8s): improved ssh command MTA-7162
vanda-scw Jun 16, 2026
5b4a06c
feat(k8s): refinements MTA-7162
vanda-scw Jun 16, 2026
7a0ae4e
feat(k8s): refinements MTA-7162
vanda-scw Jun 16, 2026
7ab3111
feat(k8s): fix tab info MTA-7162
vanda-scw Jun 16, 2026
15a150a
feat(k8s): editorial change MTA-7162
vanda-scw Jun 16, 2026
a9788d6
feat(k8s): editorial change MTA-7162
vanda-scw Jun 16, 2026
47a5c9b
feat(k8s): editorial changes MTA-7162
vanda-scw Jun 17, 2026
29afb56
feat(k8s): add CLI info MTA-7162
vanda-scw Jun 18, 2026
231db2b
feat(k8s): improve terminology MTA-7162
vanda-scw Jun 18, 2026
8672199
feat(k8s): editorial changes MTA-7162
vanda-scw Jun 18, 2026
7848ddc
feat(k8s): updated validation date MTA-7162
vanda-scw Jun 18, 2026
53fe356
feat(k8s): editorial after tech review MTA-7162
vanda-scw Jun 18, 2026
3791457
Editorial change (review comment)
vanda-scw Jun 19, 2026
beda858
Editorial change (review comment)
vanda-scw Jun 19, 2026
c325d84
feat(k8s): refinements MTA-7162
vanda-scw Jun 19, 2026
29efd8c
Merge branch 'MTA-7162' of https://github.com/scaleway/docs-content i…
vanda-scw Jun 19, 2026
144463f
feat(k8s): updated tab changes + added delete icon MTA-7162
vanda-scw Jun 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

40 changes: 34 additions & 6 deletions pages/kubernetes/concepts.mdx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: Kubernetes - Concepts
description: This page explains all the concepts related to Kubernetes Kapsule
tags: kubernetes autoheal autoscale auto-upgrade container-runtime cni control-plane kubeconfi kubectl pods replicaset
tags: kubernetes autoheal autoscale auto-upgrade container-runtime cni control-plane kubeconfig kubectl pods replicaset
dates:
validation: 2025-09-03
validation: 2026-06-11
---

## Autoheal
Expand Down Expand Up @@ -49,7 +49,7 @@ The container runtime is the software that is responsible for running containers
The control plane manages the worker nodes and the Pods in the cluster. In production environments, the control plane usually runs across multiple computers, and a cluster usually runs multiple nodes, providing fault-tolerance and high availability. Scaleway manages the control plane and associated Load Balancers. Consider the following when creating a control plane:

- A cluster belongs to one region.
- As the cluster's control plane and Load Balancer are managed by Scaleway, it is not possible to access them directly or configure them individually.
- As the cluster's control plane and Load Balancer are managed by Scaleway, it is not possible to access the node directly or configure the node individually.
- A cluster requires a minimum of one pool of worker machines to deploy Kubernetes resources. Note that Pods must run on a worker node.

## Dedicated Control Plane
Expand All @@ -58,7 +58,7 @@ All control plane components run on infrastructure dedicated to your Organizatio

## Easy Deploy

The Easy Deploy feature allows you to pull images directly from Scaleway Container Registry, instantly deploying containerized applications in your Kubernetes Kapsule cluster. With only the basic options to set, you can use Kubernetes Kapsule without needing to manage your `.yaml ` manifests. Check out our documentation on [creating containerized applications with the Easy Deploy feature](/kubernetes/how-to/enable-easy-deploy/) for more information.
The Easy Deploy feature allows you to pull images directly from the Scaleway Container Registry, instantly deploying containerized applications in your Kubernetes Kapsule cluster. With only the basic options to set, you can use Kubernetes Kapsule without needing to manage your `.yaml ` manifests. Check out our documentation on [creating containerized applications with the Easy Deploy feature](/kubernetes/how-to/enable-easy-deploy/) for more information.

## Image pull secret

Expand Down Expand Up @@ -117,9 +117,18 @@ Namespaces are used in Kubernetes to divide the same cluster resources between m

Kubernetes runs your workload by placing containers into Pods to run on nodes. A node may be a virtual or physical machine, depending on the cluster. Each node is managed by the control plane and contains the services necessary to run Pods.

## Node labels

Node labels are key‑value pairs you can attach to a node to enable you to implement Pod scheduling constraints. By referencing your node labels in a Pod specification, you can:

- **Require** the Pod to run only on nodes that match the label(s), or
- **Prefer** the Pod to run on nodes that match the label(s).

The constraints are evaluated against every node in the node pool during scheduling.

## Pods

A Pod is the smallest and simplest unit in the Kubernetes object model. Containers are not directly assigned to hosts in Kubernetes. Instead, one or multiple containers that are working closely together are bundled in a Pod together, sharing a unique network address, storage resources and information on how to govern the containers.
A Pod is the smallest and simplest unit in the Kubernetes object model. Containers are not directly assigned to hosts in Kubernetes. Instead, one or multiple containers that are working closely together are bundled in a Pod together, sharing a unique network address, storage resources, and information on how to govern the containers.

## Pool

Expand All @@ -143,6 +152,14 @@ A service is an abstraction that defines a logical group of Pods that perform th
By default, services are only available using internally routable IP addresses, but can be exposed publicly.
This can be done using the `NodePort` configuration, which opens a static port on each node's external networking interface. Alternatively, it is also possible to use the `load-balancer` service, which creates an external Load Balancer at a cloud provider using Kubernetes `load-balancer` integration.

## Startup taints

A startup taint is a temporary taint that is applied while a node is initializing. The taint remains in place until you or a controller remove it. For example, Cilium adds a default startup taint, and when initialization has completed, Cilium's controller automatically removes that taint, allowing workloads to be scheduled.

You can use startup taints to prevent any workload from being placed on a node before node setup is complete.

For more background, see the definition of [taints](#taints).

## System volume

The system volume is a read-only volume that stores essential files for the Kubernetes system, such as runtime binaries, configuration files, and certificates. It is managed by the node and kept separate from application data.
Expand All @@ -152,4 +169,15 @@ Depending on the type of node selected, we provide one or two types of volume.
- **Local Storage:** your system is stored locally on the hypervisor of your node.
- **Block Storage:** your system is remotely stored on a centralized and resilient cluster.

As a general guideline, your system volume disk should have a capacity of at least 20 GB to ensure enough space to store the necessary system files and configurations.
As a general guideline, your system volume disk should have a capacity of at least 20 GB to ensure enough space to store the necessary system files and configurations.

## Taints

A taint is a node-level restriction that prevents a set of Pods from being scheduled, unless the Pods explicitly tolerate the node.

A taint's impact is determined by its `effect` value:
- `NoSchedule` blocks Pods from being scheduled
- `PreferNoSchedule` tries to avoid scheduling Pods but may still do so if no other node fits
- `NoExecute` evicts any already‑running non‑tolerating Pods and prevents new ones from being scheduled

Taints enable you to enforce sophisticated placement constraints — such as isolating sensitive workloads or nodes with expensive or specialized hardware — making them essential for meeting the advanced scheduling needs of large‑scale environments.
37 changes: 15 additions & 22 deletions pages/kubernetes/how-to/create-cluster.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: How to create a Kubernetes Kapsule cluster
description: Learn how to create and manage a Scaleway Kubernetes Kapsule cluster, an advanced managed environment for containerized applications.
tags: kubernetes kapsule-cluster kapsule
dates:
validation: 2025-08-05
validation: 2026-06-11
posted: 2021-05-31
---
import Requirements from '@macros/iam/requirements.mdx'
Expand All @@ -12,8 +12,8 @@ import Requirements from '@macros/iam/requirements.mdx'
Scaleway Kubernetes Kapsule provides a managed environment for creating, configuring, and operating a cluster of preconfigured nodes for containerized applications. This service allows you to deploy [Kubernetes](https://kubernetes.io) clusters without the complexity of managing the underlying infrastructure.

Key benefits include:
* Dynamic scaling of Pods based on workload demands.
* Simplified cluster management via [kubectl](https://kubernetes.io/docs/reference/kubectl/overview/), the Kubernetes command-line tool.
* Dynamic scaling of Pods based on workload demands
* Simplified cluster management via [kubectl](https://kubernetes.io/docs/reference/kubectl/overview/), the Kubernetes command-line tool

To facilitate cluster administration, Scaleway provides a `.kubeconfig` file, enabling you to manage your cluster locally using `kubectl`. This tool is essential for executing commands against Kubernetes clusters.

Expand Down Expand Up @@ -44,7 +44,7 @@ To facilitate cluster administration, Scaleway provides a `.kubeconfig` file, en
</Message>
* Specify the **Kubernetes version** for your cluster.
5. Enter the **cluster's details**. Provide a name for the cluster. Optionally, you can add a description and tags for better organization.
6. Configure the **Private Network** for the cluster to ensure secure and isolated network communication. Each cluster is auto-configured with a /22 IP subnet. Click **Select Private Network** to:
6. Configure the **Private Network** for the cluster to ensure secure and isolated network communication. Each cluster is auto-configured with a /22 IP subnet. Click **Select a Private Network** to:
* Attach an existing Private Network (VPC) within the same Availability Zone from the drop-down menu.
* Attach a new Private Network to the cluster.
<Message type="important">
Expand All @@ -58,31 +58,24 @@ This section outlines the settings for your cluster pools. You can configure as

1. Configure the following for each pool:
* Choose an **Availability Zone** for the pool's nodes.
* Select the **node type** for the pool.
<Message type="tip">
Need advice on choosing a node type? [Learn more about Kubernetes nodes.](/kubernetes/concepts/#node)
</Message>
* Select the **[node type](/kubernetes/concepts/#node)** for the pool.
* Configure the **system volume**. This volume contains the operating system of the nodes in your pool.
* Configure **pool options**, including node count and whether to enable autoscaling. Options also include enabling autoheal and linking to a placement group, or you can retain default settings.
<Message type="tip">
- Unsure about the autoheal feature? [Learn more about autoheal.](/kubernetes/concepts/#autoheal)
- Need more information about placement groups? [Learn more about placement groups.](/instances/concepts/#placement-groups)
</Message>
* Enable full isolation, if required.
<Message type="tip">
Need more information on full isolation? [Learn more about full isolation.](/kubernetes/reference-content/secure-cluster-with-private-network/#what-is-the-difference-between-controlled-isolation-and-full-isolation)
</Message>
2. Click **Add pool** to integrate the pool into the cluster.
3. To add more pools, click **Expand** and repeat the steps above.
* Configure **pool options** or retain default settings. Configuration options include:
* **Operations** tab: Configure node count and choose whether to enable [autoscaling](/kubernetes/concepts/#autoscale) and [autoheal](/kubernetes/concepts/#autoheal).
* **Network** tab: Enable [full isolation](/kubernetes/reference-content/secure-cluster-with-private-network/#what-is-the-difference-between-controlled-isolation-and-full-isolation), if required.
* **Scheduling** tab: Configure [startup taints or taints](/kubernetes/how-to/manage-node-pools/#how-to-configure-startup-taints-or-taints), and add [node labels](/kubernetes/how-to/manage-node-pools/#how-to-configure-node-labels), if required.
* **Placement** tab: Link to a [security group](/kubernetes/reference-content/security-group-management/) or a [placement group](/instances/concepts/#placement-groups).
* Enter the pool's name and optional tags.
2. To add more pools, click **Add pool** and repeat the steps above.
<Message type="tip">
You can add or remove pools as needed before finalizing your cluster configuration. To remove a pool, click **Remove** within the respective pool.
You can add or remove pools as needed before finalizing your cluster configuration. To remove a pool, click the <Icon name="delete" /> **Delete** icon next to the respective pool.
</Message>
4. Once all pools are configured, click **Review** to finalize your cluster setup.
3. Once all pools are configured, click **Review**.

## Review configuration

1. Review the configuration details of your Kubernetes cluster and its pools.
<Message type="tip">
To modify any element, click the <Icon name="edit" /> **Edit** icon next to the respective configuration component.
</Message>
2. Click **Create cluster** to deploy your cluster. Once deployment is complete, the cluster appears in the clusters list.
2. Click **Submit** to deploy your cluster. Once deployment is complete, the cluster appears in the clusters list.
82 changes: 60 additions & 22 deletions pages/kubernetes/how-to/create-kosmos-cluster.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: How to create a Kubernetes Kosmos cluster
description: Learn how to create a Kubernetes Kosmos cluster with managed Scaleway Instances and external nodes from any cloud provider.
tags: kubernetes kosmos kosmos-cluster cluster
dates:
validation: 2025-10-20
validation: 2026-06-12
posted: 2021-05-31
---
import Requirements from '@macros/iam/requirements.mdx'
Expand Down Expand Up @@ -38,37 +38,75 @@ Kubernetes Kosmos provides an alternative to a classic [Kubernetes Kapsule](/kub
</Message>
* Specify the Kubernetes **version** for your cluster.
5. Provide a **name** for the cluster. Optionally, you can add a description and tags for better organization.
6. Click **Configure pools** to proceed.
6. If you want to add pools, click **Configure pools (optional)** to proceed. If you do not wish to add any pools, click **[Review](#review-configuration)**.

## Pool configuration

This section outlines the settings for your cluster pools. You can configure as many pools for your cluster as you require.

1. Choose the pool type. Available types are **Scaleway** or **multi-cloud**.
1. Choose the pool type. Available types are **Scaleway** or **Multi-cloud**.
2. Specify the following for each pool:
* For **Scaleway** pools:
* Choose the **Availability Zone** for the pool's nodes.
* Select the **node type** for the pool.
* Configure **pool options**, including node count and whether to enable autoscaling. Options also include enabling autoheal and linking to a placement group, or you can retain default settings.
<Message type="tip">
Unsure about the autoheal feature? [Learn more about autoheal.](/kubernetes/concepts/#autoheal)
* For **Scaleway** pools:
* Choose the **Availability Zone** for the pool's nodes.
* Select the **node type** for the pool.
* Configure the **system volume**. This volume contains the operating system of the nodes in your pool.
* Configure **pool options** or retain default settings. Configuration options include:
* **Operations** tab: Configure node count and choose whether to enable [autoscaling](/kubernetes/concepts/#autoscale) and [autoheal](/kubernetes/concepts/#autoheal).
* **Scheduling** tab: Configure [startup taints and/or taints](#how-to-configure-startup-taints-or-taints), and add [node labels](#how-to-configure-node-labels), if required.
* **Placement** tab: Link to a [security group](/kubernetes/reference-content/security-group-management/) or a [placement group](/instances/concepts/#placement-groups).
* Enter the pool's name and optional tags.
* For **Multi-cloud** pools:
* Specify the external nodes to be added to the pool.
<Message type="important">
Note that autoscaling and autohealing are not available for multi-cloud pools.
</Message>
* For **multi-cloud** pools:
* Specify the external nodes to be added to the pool.
<Message type="important">
Note that autoscaling and autohealing are not available for multi-cloud pools.
</Message>
2. Click **Add pool** to integrate the pool into the cluster.
3. To add more pools, click **Expand** and repeat the steps above.
<Message type="tip">
You can add or remove pools as needed before finalizing your cluster configuration. To remove a pool, click **Remove** within the respective pool.
</Message>
4. Once all pools are configured, click **Review** to finalize your cluster setup.
* Enter the pool's name and optional tags.
* Add [node labels](#how-to-configure-node-labels), if required.
3. To add more pools, click **Add pool** and repeat the steps above.
<Message type="tip">
You can add or remove pools as needed before finalizing your cluster configuration. To remove a pool, click the <Icon name="delete" /> **Delete** icon next to the respective pool.
</Message>
4. Once all pools are configured, click **Review**.

### How to configure startup taints or taints

The [startup taints](/kubernetes/concepts/#startup-taints) and [taints](/kubernetes/concepts/#taints) you configure for your pool are automatically applied to any new node created within the pool.

1. On the page of the pool that you wish to configure, click the **Scheduling** tab.
2. Select the **Startup taints** or the **Taints** checkbox, depending on what you wish to configure.
3. Specify a key-value pair and an effect:
- **Key**: Acts as the identifier of the taint.
- **Value**: An optional string that further qualifies the taint. It allows you to distinguish between multiple taints that share the same key but represent different situations.
- **Effect**: Specifies what happens to Pods that do not tolerate the taint:
- `NoSchedule`: Pods that do not have a matching toleration are prevented from being scheduled on the node. Pods already running are left untouched.
- `PreferNoSchedule`: The scheduler tries to avoid placing non‑tolerating Pods on the node, but it may still do so if no other suitable node exists.
- `NoExecute`: Pods without a matching toleration are evicted from the node immediately, and new Pods that lack the toleration are blocked from being scheduled.
4. Click the **+ Add startup taint** or **+ Add taint** button to add further startup taints or taints, respectively.


### How to configure node labels

By attaching node labels to a pool, you can:

- **Require** Pods to run only on nodes that match the label(s), or
- **Prefer** Pods to run on nodes that match the label(s).

1. On the page of the pool that you wish to configure, go to section **Scheduling** tab > **Node labels**.
2. Specify a **Key** and a **Value**.
3. Click the **+ Add node label** button to add further node labels.

To implement the scheduling constraints related to the node labels you have just attached to your pool, remember to specify one or more corresponding node selection mechanisms in your Pod specification:

- `nodeSelector`: The scheduler places the Pod only on nodes that contain all specified labels.
- `nodeAffinity`: It lets you define how strict label‑based rules are:
- `requiredDuringSchedulingIgnoredDuringExecution`: The Pod cannot be scheduled unless the node satisfies the rule.
- `preferredDuringSchedulingIgnoredDuringExecution`: The scheduler tries to place the Pod on a matching node, but will fall back to any node if none match.


## Review configuration

1. Review the configuration details of your Kubernetes cluster and its pools.
1. Review the configuration details of your Kubernetes cluster and its pools (if any).
<Message type="tip">
To modify any element, click the <Icon name="edit" /> **Edit** icon next to the respective configuration component.
</Message>
2. Click **Create cluster** to deploy your cluster. Once deployment is complete, the cluster appears in the clusters list.
2. Click **Submit** to deploy your cluster. Once deployment is complete, the cluster appears in the clusters list.
Loading
Loading