diff --git a/pages/kubernetes/api-cli/creating-managing-kubernetes-lifecycle-cliv2.mdx b/pages/kubernetes/api-cli/creating-managing-kubernetes-lifecycle-cliv2.mdx index 53d6e2f448..09b1f955fc 100644 --- a/pages/kubernetes/api-cli/creating-managing-kubernetes-lifecycle-cliv2.mdx +++ b/pages/kubernetes/api-cli/creating-managing-kubernetes-lifecycle-cliv2.mdx @@ -3,7 +3,7 @@ title: Creating and managing a Kubernetes Kapsule with CLI (v2) description: This page explains how to create and manage a Kubernetes Kapsule with CLI (v2) tags: kubernetes-kapsule cli cli-v2 kapsule dates: - validation: 2025-10-01 + validation: 2026-06-18 posted: 2021-08-05 --- import Requirements from '@macros/iam/requirements.mdx' @@ -183,11 +183,11 @@ Type the following command in your terminal: You will see an output similar to this: ``` -ID 12345678-1234-1234-4321-123456789123 +ID 87654321-1234-1234-4321-123456789123 ClusterID 12345678-1234-1234-4321-123456789123 CreatedAt now UpdatedAt now -Name my-node-pool +Name name-of-your-pool Status scaling Version 1.29.1 NodeType gp1_xs @@ -204,6 +204,365 @@ RootVolumeType l_ssd RootVolumeSize 150 GB PublicIPDisabled false Region fr-par + +Node labels: + + +Node taints: +KEY VALUE EFFECT + +Node startup taints: +KEY VALUE EFFECT +``` + +## Configuring a node label for your pool(s) + +### Adding a node label to your pool(s) + +You can add a [node label](/kubernetes/concepts/#node-labels) to a single pool or multiple pools using the `scw k8s pool set-label` command. + +In the following example, you are going to add a node label to one pool. + +Execute the following command in your terminal. Remember to replace the placeholder values with your actual values. + +```bash +scw k8s pool set-label pool-id key=your-label-key value=your-label-value +``` + +You will see an output similar to this: + +``` +ID 17654321-1234-1234-4321-123456789123 +ClusterID 12345678-1234-1234-4321-123456789123 +CreatedAt 2 minutes ago +UpdatedAt now +Name name-of-your-pool +Status ready +Version 1.35.3 +NodeType gp1_xs +Autoscaling false +Size 2 +MinSize 0 +MaxSize 2 +ContainerRuntime containerd +Autohealing false +Zone fr-par-1 +RootVolumeType l_ssd +RootVolumeSize 150 GB +PublicIPDisabled false +SecurityGroupID 11a22334-ab45-56bc-cc7d-7de8ef8f99gh +Region fr-par + +Upgrade Policy: +MaxUnavailable 1 +MaxSurge 0 + +Node labels: +your-label-key your-label-value + +Node taints: +KEY VALUE EFFECT + +Node startup taints: +KEY VALUE EFFECT +``` + +To add a node label to multiple pools, specify the pool identifiers one after the other: + +```bash +scw k8s pool set-label pool-id-1 pool-id-2 pool-id-3 key=your-label-key value=your-label-value +``` +### Removing a node label from your pool(s) + +You can remove a node label from a single pool or multiple pools using the `scw k8s pool remove-label` command. + +In the following example, you are going to remove a node label from one pool. + +Execute the following command in your terminal. Remember to replace the placeholder values with your actual values. + +```bash +scw k8s pool remove-label pool-id key=your-label-key +``` + +``` +ID 17654321-1234-1234-4321-123456789123 +ClusterID 12345678-1234-1234-4321-123456789123 +CreatedAt 5 minutes ago +UpdatedAt now +Name name-of-your-pool +Status ready +Version 1.35.3 +NodeType gp1_xs +Autoscaling false +Size 2 +MinSize 0 +MaxSize 2 +ContainerRuntime containerd +Autohealing false +Zone fr-par-1 +RootVolumeType l_ssd +RootVolumeSize 150 GB +PublicIPDisabled false +SecurityGroupID 11a22334-ab45-56bc-cc7d-7de8ef8f99gh +Region fr-par + +Upgrade Policy: +MaxUnavailable 1 +MaxSurge 0 + +Node labels: + + +Node taints: +KEY VALUE EFFECT + +Node startup taints: +KEY VALUE EFFECT +``` +To remove a node label from multiple pools, specify the pool identifiers one after the other: + +```bash +scw k8s pool remove-label pool-id-1 pool-id-2 pool-id-3 key=your-label-key +``` + +## Configuring a startup taint for your pool(s) + +### Adding a startup taint to your pool(s) + +You can add a [startup taint](/kubernetes/concepts/#startup-taints) to a single pool or multiple pools using the `scw k8s pool set-startup-taint` command. + +In the following example, you are going to add a startup taint to one pool. + +Execute the following command in your terminal. Remember to replace the placeholder values with your actual values. + +```bash +scw k8s pool set-startup-taint pool-id key=your-startup-taint-key value=your-startup-taint-value effect=NoExecute +``` + +You will see an output similar to this: + +``` +ID 17654321-1234-1234-4321-123456789123 +ClusterID 12345678-1234-1234-4321-123456789123 +CreatedAt 2 minutes ago +UpdatedAt now +Name name-of-your-pool +Status ready +Version 1.35.3 +NodeType gp1_xs +Autoscaling false +Size 2 +MinSize 0 +MaxSize 2 +ContainerRuntime containerd +Autohealing false +Zone fr-par-1 +RootVolumeType l_ssd +RootVolumeSize 150 GB +PublicIPDisabled false +SecurityGroupID 11a22334-ab45-56bc-cc7d-7de8ef8f99gh +Region fr-par + +Upgrade Policy: +MaxUnavailable 1 +MaxSurge 0 + +Node labels: + + +Node taints: +KEY VALUE EFFECT + +Node startup taints: +KEY VALUE EFFECT +your-startup-taint-key your-startup-taint-value NoExecute +``` + +To add a startup taint to multiple pools, specify the pool identifiers one after the other: + +```bash +scw k8s pool set-startup-taint pool-id-1 pool-id-2 pool-id-3 key=your-startup-taint-key value=your-startup-taint-value effect=NoExecute +``` + + + The startup taints you configure for your pool(s) are automatically applied to any new node created within the pool(s). + + Remember to add the appropriate tolerations in your Pod YAML manifests for any Pod that needs to run on a tainted node. + + +### Removing a startup taint from your pool(s) + +You can remove a startup taint from a single pool or multiple pools using the `scw k8s pool remove-startup-taint` command. + +In the following example, you are going to remove a startup taint from one pool. + +Execute the following command in your terminal. Remember to replace the placeholder values with your actual values. + +```bash +scw k8s pool remove-startup-taint pool-id key=your-startup-taint-key +``` + +You will see an output similar to this: + +``` +ID 27654321-1234-1234-4321-123456789123 +ClusterID 12345678-1234-1234-4321-123456789123 +CreatedAt 5 minutes ago +UpdatedAt now +Name name-of-your-pool +Status ready +Version 1.35.3 +NodeType gp1_xs +Autoscaling false +Size 1 +MinSize 0 +MaxSize 1 +ContainerRuntime containerd +Autohealing false +Zone fr-par-1 +RootVolumeType l_ssd +RootVolumeSize 150 GB +PublicIPDisabled false +SecurityGroupID 11a22334-ab45-56bc-cc7d-7de8ef8f99gh +Region fr-par + +Upgrade Policy: +MaxUnavailable 1 +MaxSurge 0 + +Node labels: + + +Node taints: +KEY VALUE EFFECT + +Node startup taints: +KEY VALUE EFFECT +``` +To remove a startup taint from multiple pools, specify the pool identifiers one after the other: + +```bash +scw k8s pool remove-startup-taint pool-id-1 pool-id-2 pool-id-3 key=your-startup-taint-key value=your-startup-taint-value effect=NoExecute +``` + +## Configuring a taint for your pool(s) + +### Adding a taint to your pool(s) + +You can add a [taint](/kubernetes/concepts/#taints) to a single pool or multiple pools using the `scw k8s pool set-taint` command. + +In the following example, you are going to add a taint to one pool. + +Execute the following command in your terminal. Remember to replace the placeholder values with your actual values. + +```bash +scw k8s pool set-taint pool-id key=your-taint-key value=your-taint-value effect=NoExecute +``` + +You will see an output similar to this: + +``` +ID 17654321-1234-1234-4321-123456789123 +ClusterID 12345678-1234-1234-4321-123456789123 +CreatedAt 2 minutes ago +UpdatedAt now +Name name-of-your-pool +Status ready +Version 1.35.3 +NodeType gp1_xs +Autoscaling false +Size 3 +MinSize 0 +MaxSize 2 +ContainerRuntime containerd +Autohealing false +Zone fr-par-1 +RootVolumeType l_ssd +RootVolumeSize 150 GB +PublicIPDisabled false +SecurityGroupID 11a22334-ab45-56bc-cc7d-7de8ef8f99gh +Region fr-par + +Upgrade Policy: +MaxUnavailable 1 +MaxSurge 0 + +Node labels: + + +Node taints: +KEY VALUE EFFECT +your-taint-key your-taint-value NoExecute + +Node startup taints: +KEY VALUE EFFECT +``` + +To add a taint to multiple pools, specify the pool identifiers one after the other: + +```bash +scw k8s pool set-taint pool-id-1 pool-id-2 pool-id-3 key=your-taint-key value=your-taint-value effect=NoExecute +``` + + + The taints you configure for your pool(s) are automatically applied to any new node created within the pool(s). + + Remember to add the appropriate tolerations in your Pod YAML manifests for any Pod that needs to run on a tainted node. + + +### Removing a taint from your pool(s) + +You can remove a taint from a single pool or multiple pools using the `scw k8s pool remove-taint` command. + +In the following example, you are going to remove a startup taint from one pool. + +Execute the following command in your terminal. Remember to replace the placeholder values with your actual values. + +```bash +scw k8s pool remove-taint pool-id key=your-taint-key +``` + +You should get a similar output: + +``` +ID 17654321-1234-1234-4321-123456789123 +ClusterID 12345678-1234-1234-4321-123456789123 +CreatedAt 2 minutes ago +UpdatedAt now +Name name-of-your-pool +Status ready +Version 1.35.3 +NodeType gp1_xs +Autoscaling false +Size 2 +MinSize 0 +MaxSize 2 +ContainerRuntime containerd +Autohealing false +Zone fr-par-1 +RootVolumeType l_ssd +RootVolumeSize 150 GB +PublicIPDisabled false +SecurityGroupID 11a22334-ab45-56bc-cc7d-7de8ef8f99gh +Region fr-par + +Upgrade Policy: +MaxUnavailable 1 +MaxSurge 0 + +Node labels: + + +Node taints: +KEY VALUE EFFECT + +Node startup taints: +KEY VALUE EFFECT +``` +To remove a taint from multiple pools, specify the pool identifiers one after the other: + +```bash +scw k8s pool remove-taint pool-id-1 pool-id-2 pool-id-3 key=your-taint-key ``` ## Deleting a Kubernetes pool @@ -242,6 +601,16 @@ RootVolumeType l_ssd RootVolumeSize 150 GB PublicIPDisabled false Region fr-par + + +Node labels: + + +Node taints: +KEY VALUE EFFECT + +Node startup taints: +KEY VALUE EFFECT ``` Your pool has been deleted. diff --git a/pages/kubernetes/concepts.mdx b/pages/kubernetes/concepts.mdx index 55eff25b55..f07d412007 100644 --- a/pages/kubernetes/concepts.mdx +++ b/pages/kubernetes/concepts.mdx @@ -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 @@ -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 @@ -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 @@ -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 @@ -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. @@ -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. \ No newline at end of file +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. \ No newline at end of file diff --git a/pages/kubernetes/how-to/create-cluster.mdx b/pages/kubernetes/how-to/create-cluster.mdx index d3d0c81d90..fd6b4cffa6 100644 --- a/pages/kubernetes/how-to/create-cluster.mdx +++ b/pages/kubernetes/how-to/create-cluster.mdx @@ -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' @@ -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. @@ -44,7 +44,7 @@ To facilitate cluster administration, Scaleway provides a `.kubeconfig` file, en * 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. @@ -58,26 +58,19 @@ 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. - - Need advice on choosing a node type? [Learn more about Kubernetes nodes.](/kubernetes/concepts/#node) - + * 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. - - - 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) - - * Enable full isolation, if required. - - 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) - -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. - 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 **Delete** icon next to the respective pool. -4. Once all pools are configured, click **Review** to finalize your cluster setup. +3. Once all pools are configured, click **Review**. ## Review configuration @@ -85,4 +78,4 @@ This section outlines the settings for your cluster pools. You can configure as To modify any element, click the **Edit** icon next to the respective configuration component. -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. diff --git a/pages/kubernetes/how-to/create-kosmos-cluster.mdx b/pages/kubernetes/how-to/create-kosmos-cluster.mdx index f4cad40b3a..9cdfbb4a3b 100644 --- a/pages/kubernetes/how-to/create-kosmos-cluster.mdx +++ b/pages/kubernetes/how-to/create-kosmos-cluster.mdx @@ -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' @@ -38,37 +38,75 @@ Kubernetes Kosmos provides an alternative to a classic [Kubernetes Kapsule](/kub * 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. - - 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. + + Note that autoscaling and autohealing are not available for multi-cloud pools. - * For **multi-cloud** pools: - * Specify the external nodes to be added to the pool. - - Note that autoscaling and autohealing are not available for multi-cloud pools. - -2. Click **Add pool** to integrate the pool into the cluster. -3. To add more pools, click **Expand** and repeat the steps above. - - You can add or remove pools as needed before finalizing your cluster configuration. To remove a pool, click **Remove** within the respective pool. - -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. + + You can add or remove pools as needed before finalizing your cluster configuration. To remove a pool, click the **Delete** icon next to the respective pool. + +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). To modify any element, click the **Edit** icon next to the respective configuration component. -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. diff --git a/pages/kubernetes/how-to/edit-cluster.mdx b/pages/kubernetes/how-to/edit-cluster.mdx index 9fba378dd1..bc3830d604 100644 --- a/pages/kubernetes/how-to/edit-cluster.mdx +++ b/pages/kubernetes/how-to/edit-cluster.mdx @@ -9,7 +9,7 @@ dates: import Requirements from '@macros/iam/requirements.mdx' -You can manage and edit the parameters of your cluster from the [Scaleway console](https://console.scaleway.com) or by using the [API](https://www.scaleway.com/en/developers/). Here, we show you how to edit from the console. +You can manage and edit the parameters of your cluster from the [Scaleway console](https://console.scaleway.com) or by using the [API](https://www.scaleway.com/en/developers/). Here, we show you how to edit a cluster from the console. @@ -23,9 +23,9 @@ You can manage and edit the parameters of your cluster from the [Scaleway consol 2. From the drop-down menu, select the geographical region you want to manage. 3. Click next to the cluster you want to edit to display the options menu: The following information and configuration options are available for your cluster: - * **Add a pool**: Add additional computing resources to the cluster - * **Download kubeconfig**: Download the `.kubeconfig` file of the cluster - * **Delete**: Delete the cluster + * **[Add a pool](/kubernetes/quickstart/#pool-configuration)**: Add additional computing resources to the cluster + * **Download [kubeconfig](/kubernetes/concepts/#kubeconfig)**: Download the `.kubeconfig` file of the cluster + * **[Delete](/kubernetes/quickstart/#how-to-delete-a-kubernetes-cluster)**: Delete the cluster Click the cluster name to see the cluster information and have a complete overview of its resources and settings. diff --git a/pages/kubernetes/how-to/edit-kosmos-cluster.mdx b/pages/kubernetes/how-to/edit-kosmos-cluster.mdx index 27a2c4b7fb..4f632d0f47 100644 --- a/pages/kubernetes/how-to/edit-kosmos-cluster.mdx +++ b/pages/kubernetes/how-to/edit-kosmos-cluster.mdx @@ -13,14 +13,16 @@ import image2 from './assets/scaleway-kosmos-add-application.webp' import image3 from './assets/scaleway-kosmos-generate-api-key.webp' -You can add nodes and pools to your Kosmos cluster from the [Scaleway console](https://console.scaleway.com) or by using the [API](https://www.scaleway.com/en/developers/). Here, we show you how to edit from the console. +You can add nodes and pools to your Kosmos cluster from the [Scaleway console](https://console.scaleway.com) or by using the [API](https://www.scaleway.com/en/developers/). Here, we show you how to edit your cluster from the console. - This document concerns the management of a Kosmos cluster. For a Kapsule cluster, refer to the [corresponding documentation for Kapsule](/kubernetes/how-to/edit-cluster/) + This document concerns the management of a Kosmos cluster. For a Kapsule cluster, refer to the corresponding documentation for Kapsule: + - [How to manage a Kubernetes Kapsule cluster](/kubernetes/how-to/edit-cluster/) + - [How to manage Kubernetes Kapsule node pools](/kubernetes/how-to/manage-node-pools/) - Nodes from multi-cloud pools cannot benefit from the autohealing and autoscaling features of Scaleway Kapsule pool. Since Scaleway does not have access to your other providers’ accounts, it is not possible to carry out actions such as automatic deletion, creation, and reboot of external nodes. + Nodes from multi-cloud pools cannot benefit from the autohealing and autoscaling features of a Scaleway Kapsule pool. Since Scaleway does not have access to your other providers’ accounts, it is not possible to carry out actions such as automatic deletion, creation, and reboot of external nodes. @@ -32,23 +34,23 @@ You can add nodes and pools to your Kosmos cluster from the [Scaleway console](h ## How to add a multi-cloud pool to your Kosmos cluster -A multi-cloud pool allows you to attach external Instances and servers to your cluster. Instances added to the same pool do not need to share the same configuration, nor do they have to be managed by the same Cloud provider. +A multi-cloud pool allows you to attach external Instances and servers to your cluster. Instances added to the same pool do not need to share the same configuration, nor do they have to be managed by the same cloud provider. 1. Click **Kubernetes** in the Containers section of the side menu. The Kubernetes creation page displays. 2. From the drop-down menu, select the geographical region you want to manage. 3. Click the cluster you want to add a pool to. -4. Click the **Pools** tab. +4. Click the **Pools & Nodes** tab. 5. Click the **+ Add pool** button. The pool creation wizard displays. 6. Complete the following steps of the wizard: - * Choose a **pool type**. This can be a Scaleway Kubernetes Kapsule pool or a Kubernetes multi-cloud pool. This document concerns the addition of a multi-cloud pool. - * A **name** for the pool and, optionally, a description and tags. -7. Click **Add pool** to finish. + * Choose the **Multi-cloud** pool type. + * Add a **name** for the pool and, optionally, a description, tags, and [node labels](/kubernetes/concepts/#node-labels). +7. Click **Review**, then click **Submit**. ## How to add external nodes to your multi-cloud pool In order to add external nodes to your multi-cloud cluster, you must first [create a multi-cloud pool](#how-to-add-a-multi-cloud-pool-to-your-kosmos-cluster). For security reasons, it is recommended to configure an API key with the `KubernetesExternalNodeRegister` IAM permission set. -1. Click **IAM & API keys** on the top-right drop-down menu of the Scaleway console. The [Identity and Access Management dashboard](https://console.scaleway.com/iam/) displays. +1. Click **IAM & API keys** in the top-right drop-down menu of the Scaleway console. The [Identity and Access Management dashboard](https://console.scaleway.com/iam/) displays. 2. [Create an IAM Policy](/iam/how-to/create-policy/) with the `KubernetesExternalNodeRegister` PermissionSet only. 3. [Create an IAM Application](/iam/how-to/create-application/) linked with the policy created in the previous step. @@ -58,17 +60,18 @@ In order to add external nodes to your multi-cloud cluster, you must first [crea Identity and Access Management (IAM) allows you to share access to the management of your Scaleway resources and Organization settings, in a controlled and secure manner. For more information, refer to our [dedicated IAM documentation](/iam/quickstart/). -5. Click **Kubernetes** in the Compute section of the side menu. The Kubernetes creation page displays. -6. Click the cluster you want to add external nodes to. -7. Click **Nodes** on the tab. -8. Click **+ Add external node**. The instructions for adding an external node display. +5. Click **Kubernetes** in the **Containers** section of the side menu. +6. From the drop-down menu, select the geographical region where your clusters are. The list of your Kubernetes clusters displays. +7. Click the cluster you want to add external nodes to. +8. Click the **Pools & Nodes** tab. +9. Click **+ Add external node**. The instructions for adding an external node display. ## How to configure external nodes to join the cluster 1. Get your server's public IP and SSH to the server: ```bash - ssh @ + ssh -i ~/path/to/ @ ``` 2. Download the `k8s-agent` program. The releases and source code are available on [GitHub](https://github.com/scaleway/k8s-agent). @@ -94,10 +97,10 @@ In order to add external nodes to your multi-cloud cluster, you must first [crea ## How to detach nodes from your multi-cloud pool -1. Click **Kubernetes** in the Compute section of the side menu. The Kubernetes creation page displays. +1. Click **Kubernetes** under the **Containers** section of the [Scaleway console](https://console.scaleway.com/) side menu. 2. From the drop-down menu, select the geographical region you want to manage. 3. Click the cluster in question. -4. Click the **Nodes** tab. +4. Click the **Pools & Nodes** tab. 5. Click next to the node you want to edit, then click **Delete** on the menu. A pop-up asks you to confirm the action. 6. Click **Delete node**. @@ -118,6 +121,6 @@ The new `k8s-agent` upgrades the node in-place without adding a new "virtual" no The Kubernetes version of the existing nodes in your multi-cloud pool can be upgraded in place. Your workload will theoretically keep running during the upgrade, but it is best to drain the node before the upgrade. -1. In the Pools section of your Kosmos cluster, click **Upgrade** next to the node pool. This will not cause any of your existing nodes to upgrade, but will instead ensure that any new nodes added to the pool will start up with the newer version. +1. In the **Pools & Nodes** section of your Kosmos cluster, click **Upgrade** next to the node pool. This will not cause any of your existing nodes to upgrade, but will instead ensure that any new nodes added to the pool will start up with the newer version. 2. Download the latest version of the `k8s-agent` and relaunch it as you would do for a fresh node install. Refer to [How to configure external nodes to join the cluster](#how-to-configure-external-nodes-to-join-the-cluster) for the installation steps. 3. The node will upgrade in place and rejoin the cluster with the new Kubernetes version. diff --git a/pages/kubernetes/how-to/manage-node-pools.mdx b/pages/kubernetes/how-to/manage-node-pools.mdx index 33030ade36..a8a6e894f8 100644 --- a/pages/kubernetes/how-to/manage-node-pools.mdx +++ b/pages/kubernetes/how-to/manage-node-pools.mdx @@ -3,7 +3,7 @@ title: How to manage Kubernetes Kapsule node pools description: Learn how to manage Kubernetes Kapsule node pools from the Scaleway console. tags: kubernetes kapsule kosmos dates: - validation: 2025-06-23 + validation: 2026-06-12 posted: 2025-06-23 --- import Requirements from '@macros/iam/requirements.mdx' @@ -25,15 +25,22 @@ This documentation provides step-by-step instructions on how to manage Kubernete 1. Navigate to **Kubernetes** under the **Containers** section of the [Scaleway console](https://console.scaleway.com/) side menu. The Kubernetes dashboard displays. 2. Click the Kapsule cluster name you want to manage. The cluster information page displays. -3. Click the **Pools** tab to display the pool configuration of the cluster. +3. Click the **Pools & Nodes** tab to display the pool configuration of the cluster. 4. Click **Add pool** to launch the pool creation wizard. 5. Configure the pool: - Choose the **Availability Zone** for the pool. - - Choose the commercial type of Instance for the pool. - - Configure the system volume. - - Configure pool options. - - Enter the pool's details. -6. Click **Add pool**. The pool gets added to your basket. Repeat the steps above to configure additional pools. + - Choose the commercial type of Instance (**node type**) for the pool. + - Configure the **system volume**. + - Configure pool options. Configuration options include: + - **Operations** tab: Configure node count and choose whether to enable [autoscaling](/kubernetes/concepts/#autoscale) and [autoheal](/kubernetes/reference-content/using-kapsule-autoheal-feature/). + - **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 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. +6. To add more pools, click **Add pool** and repeat the steps above. + + You can add or remove pools as needed before finalizing your cluster configuration. To remove a pool, click the **Delete** icon next to the respective pool. + 7. Click **Review** once you have configured the desired pools. A summary of your configuration displays. 8. Verify your configuration and click **Submit** to add the pool(s) to your Kapsule cluster. @@ -41,21 +48,66 @@ This documentation provides step-by-step instructions on how to manage Kubernete Alternatively, you can use the Scaleway CLI to [create node pools](https://cli.scaleway.com/k8s/#create-a-new-pool-in-a-cluster). +## 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. The **Key**, **Value**, and **Effect** fields display. +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. + + + + Managing tolerations in your Pod YAML manifests remains your responsibility. You must add the appropriate tolerations to any Pod that needs to run on a tainted node. + + + +## 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. + + ## How to edit an existing Kubernetes Kapsule node pool 1. Navigate to **Kubernetes** under the **Containers** section of the [Scaleway console](https://console.scaleway.com/) side menu. The Kubernetes dashboard displays. 2. Click the Kapsule cluster name you want to manage. The cluster information page displays. -3. Click the **Pools** tab to display the pool configuration of the cluster. +3. Click the **Pools & Nodes** tab to display the pool configuration of the cluster. 4. Click > **Edit** next to the node pool you want to edit. 5. Configure the pool: + - **Operations** tab: + - Configure [autoscaling](/kubernetes/concepts/#autoscale) + - Enable or disable the [autoheal feature](/kubernetes/reference-content/using-kapsule-autoheal-feature/) + - **Scheduling** tab: + - Update [startup taints and taints](#how-to-configure-startup-taints-or-taints) + - Update [node labels](#how-to-configure-node-labels) - Update pool tags - - Configure autoscaling - - Enable or disable the [autoheal feature](/kubernetes/reference-content/using-kapsule-autoheal-feature/) 6. Click **Update pool** to update the pool configuration. Alternatively, you can use the Scaleway CLI to [update a node pool](https://cli.scaleway.com/k8s/#update-a-pool-in-a-cluster). - + + ## How to migrate existing workloads to a new Kubernetes Kapsule node pool @@ -70,7 +122,7 @@ This documentation provides step-by-step instructions on how to manage Kubernete 2. Run `kubectl get nodes` to check that the new nodes are in a `Ready` state. 3. Cordon the nodes in the old node pool to prevent new Pods from being scheduled there. For each node, run: `kubectl cordon ` - You can use a selector on the pool name label to cordon or drain multiple nodes at the same time if your app allows it (ex. `kubectl cordon -l k8s.scaleway.com/pool-name=mypoolname`) + You can use a selector on the pool name label to cordon or drain multiple nodes at the same time if your app allows it (e.g., `kubectl cordon -l k8s.scaleway.com/pool-name=mypoolname`). 4. Drain the nodes to evict the Pods gracefully. - For each node, run: `kubectl drain --ignore-daemonsets --delete-emptydir-data` @@ -84,7 +136,7 @@ This documentation provides step-by-step instructions on how to manage Kubernete 1. Navigate to **Kubernetes** under the **Containers** section of the [Scaleway console](https://console.scaleway.com/) side menu. The Kubernetes dashboard displays. 2. Click the Kapsule cluster name you want to manage. The cluster information page displays. -3. Click the **Pools** tab to display the pool configuration of the cluster. +3. Click the **Pools & Nodes** tab to display the pool configuration of the cluster. 4. Click > **Delete** next to the node pool you want to delete. 5. Click **Delete pool** in the pop-up to confirm deletion of the pool. diff --git a/pages/kubernetes/menu.ts b/pages/kubernetes/menu.ts index 4c0db1d8fb..7abef6af8d 100644 --- a/pages/kubernetes/menu.ts +++ b/pages/kubernetes/menu.ts @@ -26,6 +26,10 @@ export const kubernetesMenu = { label: 'Manage a Kapsule cluster', slug: 'edit-cluster', }, + { + label: 'Manage Kapsule node pools', + slug: 'manage-node-pools', + }, { label: 'Create a Kosmos cluster', slug: 'create-kosmos-cluster', @@ -42,10 +46,6 @@ export const kubernetesMenu = { label: 'Connect to a cluster with kubectl', slug: 'connect-cluster-kubectl', }, - { - label: 'Manage Kapsule node pools', - slug: 'manage-node-pools', - }, { label: 'Deploy an image from Container Registry', slug: 'deploy-image-from-container-registry', diff --git a/pages/kubernetes/quickstart.mdx b/pages/kubernetes/quickstart.mdx index ad52023605..b06b06db53 100644 --- a/pages/kubernetes/quickstart.mdx +++ b/pages/kubernetes/quickstart.mdx @@ -9,7 +9,7 @@ dates: import Requirements from '@macros/iam/requirements.mdx' -Scaleway Kubernetes [Kapsule](/kubernetes/concepts/#kubernetes-kapsule) and [Kosmos](/kubernetes/concepts/#kubernetes-kosmos) provide a managed environment to create, configure, and run a cluster of preconfigured machines for containerized applications. This allows you to create Kubernetes clusters without the complexity of managing the infrastructure. You can create a Kapsule cluster to your required specifications, edit it after creation, and delete it all when you no longer need it. You might also want to check out our how-to on [deploying an image on your cluster](/kubernetes/how-to/deploy-image-from-container-registry/). +Scaleway Kubernetes [Kapsule](/kubernetes/concepts/#kubernetes-kapsule) and [Kosmos](/kubernetes/concepts/#kubernetes-kosmos) provide a managed environment to create, configure, and run a cluster of preconfigured machines for containerized applications. This allows you to create Kubernetes clusters without the complexity of managing the infrastructure. You can create a cluster to match your required specifications, edit it after creation, and delete it all when you no longer need it. You might also want to check out our how-to on [deploying an image on your cluster](/kubernetes/how-to/deploy-image-from-container-registry/). ## Console overview Discover the Kubernetes interface on the Scaleway console. @@ -20,14 +20,10 @@ Discover the Kubernetes interface on the Scaleway console. - A Scaleway account logged into the [console](https://console.scaleway.com) - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -## How to create a Kubernetes cluster +## How to create a Kubernetes Kapsule cluster ### Cluster configuration - - This guide covers the creation of a **Kubernetes Kapsule** cluster. For Kubernetes Kosmos clusters, refer to the [Kubernetes Kosmos documentation](/kubernetes/how-to/create-kosmos-cluster/). - - 1. Navigate to **Kubernetes** under the **Containers** section of the [Scaleway console](https://console.scaleway.com/) side menu. The Kubernetes dashboard displays. 2. From the drop-down menu, select the geographical region where you want to create your cluster. 3. Click **Create cluster** to launch the cluster creation wizard. @@ -38,7 +34,7 @@ Discover the Kubernetes interface on the Scaleway console. * Select **Kubernetes Kapsule** as the cluster type, which uses exclusively Scaleway Instances. - This guide covers the creation of a **Kubernetes Kapsule** cluster. For Kubernetes Kosmos clusters, refer to the [Kubernetes Kosmos documentation](/kubernetes/how-to/create-kosmos-cluster/). + This section covers the creation of a **Kubernetes Kapsule** cluster. For Kubernetes Kosmos clusters, refer to the [Kubernetes Kosmos quickstart procedure](#how-to-create-a-kubernetes-kosmos-cluster) or the [Kubernetes Kosmos documentation](/kubernetes/how-to/create-kosmos-cluster/). * Confirm the geographical **region** for the cluster. * Select the control plane offer for your cluster. Options include shared or dedicated control planes. @@ -47,7 +43,7 @@ Discover the Kubernetes interface on the Scaleway console. * 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. @@ -66,21 +62,19 @@ This section outlines the settings for your cluster pools. You can configure as Need advice on choosing a node type? [Learn more about Kubernetes nodes.](/kubernetes/concepts/#node) * 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. - - - 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) - - * Enable full isolation, if required. - - 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) - -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**: + * **Operations** tab: Specify node count and choose whether to enable [autoscaling](/kubernetes/concepts/#autoscale) or [autoheal](/kubernetes/concepts/#autoheal). + * **Network** tab: Choose whether to enable [full isolation](/kubernetes/reference-content/secure-cluster-with-private-network/#what-is-the-difference-between-controlled-isolation-and-full-isolation). + * **Scheduling** tab: Configure [startup taints and taints](/kubernetes/how-to/manage-node-pools/#how-to-configure-startup-taints-or-taints), as well as [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). + + You can also choose to retain default settings. + * Enter the pool's details. +2. To add more pools, click **Add pool** and repeat the steps above. - 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 **Delete** icon next to the respective pool. -4. Once all pools are configured, click **Review** to finalize your cluster setup. +3. Once all pools are configured, click **Review** to finalize your cluster setup. ### Review configuration @@ -88,59 +82,70 @@ This section outlines the settings for your cluster pools. You can configure as To modify any element, click the **Edit** icon next to the respective configuration component. -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. You can now download the `kubeconfig` file for your cluster and learn [how to connect to a Kubernetes Kapsule cluster with kubectl](/kubernetes/how-to/connect-cluster-kubectl/). -## How to add a Scaleway pool to a Kubernetes cluster - -1. Click **Kubernetes** in the **Containers** section of the side menu. The Kubernetes dashboard displays. -2. From the drop-down menu, select the geographical region you want to manage. -3. Click next to the cluster you want to edit. Click **Add pool** in the menu. The pool configuration wizard displays. -4. This page concerns the configuration of your cluster. Enter the following information: - - The geographical **region** of the pool. - - The **node type** for the pool. - - If required, configure the **pool options** like autoscaling, autohealing, or link the pool to an existing placement group. - - The **name** for the pool. Optionally, you can assign tags to it. -5. Click **Add pool**. -## How to add a multi-cloud pool to a Kubernetes cluster - -1. Click **Kubernetes** in the **Containers** section of the side menu. The Kubernetes dashboard displays. -2. From the drop-down menu, select the geographical region you want to manage. -3. Click next to the pool you want to edit. Click **Add pool** in the menu. The pool configuration wizard displays. -4. Click **Add pool**. +## How to create a Kubernetes Kosmos cluster -### How to add external nodes to a multi-cloud pool +### Cluster configuration 1. Click **Kubernetes** in the **Containers** section of the [Scaleway console](https://console.scaleway.com) side menu. The Kubernetes dashboard displays. 2. From the drop-down menu, select the geographical region you want to manage. -3. Click **Create cluster**. The first page of the cluster creation wizard displays. This concerns the configuration of your cluster. +3. Click **Create cluster** to launch the cluster creation wizard. 4. Complete the following steps of the wizard: - * Choose a **cluster type**. Select **Kubernetes Kosmos** to create a cluster, that allows you to attach a compute Instance or dedicated server from any Cloud provider to a Scaleway Kubernetes control plane. + * Choose a **cluster type**. Select **Kubernetes Kosmos** to create a cluster that allows you to attach a compute Instance or dedicated server from any Cloud provider to a Scaleway Kubernetes control plane. - This document concerns the creation and management of a **Kubernetes Kosmos** cluster. To create a Kubernetes Kapsule cluster, refer to the [Kubernetes Kapsule documentation](/kubernetes/how-to/create-cluster/). + This section concerns the creation and management of a **Kubernetes Kosmos** cluster. To create a Kubernetes Kapsule cluster, refer to the [Kubernetes Kapsule quickstart procedure](#how-to-create-a-kubernetes-kapsule-cluster) or the [Kubernetes Kapsule documentation](/kubernetes/how-to/create-cluster/). - * The geographical **region** of the cluster. - * The Kubernetes **version** for the cluster. - * A **name** for the cluster and, optionally, a description and tags. -5. Click **Create cluster** to create your cluster without any Scaleway pools. - If you choose this option, your cluster and its control plane are deployed, and you are taken to the cluster's overview tab. Continue to [How to manage your Kubernetes Kosmos cluster](/kubernetes/how-to/edit-kosmos-cluster/) to find out how to add multi-cloud pools to your cluster. - - Alternatively, click **Add and configure a pool** to add a pool of Scaleway nodes to your cluster. In this case, the second page of the cluster creation wizard displays. This concerns the settings for your pool. -6. Enter the following information to configure a Scaleway pool: - * The **Availability Zone** in which all your pool's nodes will be created. - * The **node type** you need. - * The configuration for your **pool options**, including the number of nodes and whether to enable autoscale. You can also choose whether to enable autoheal and whether to link the cluster to a placement group. Alternatively, you can leave these options at default values. -7. Click **Create cluster**. Your cluster is deployed, and you are taken to the cluster’s **Overview** tab. + * Confirm the geographical **region** of the cluster. + * Select the Kubernetes **version** for the cluster. + * Add **name** for the cluster and, optionally, a description and tags. +5. If you want to add pools, click **Configure pools (optional)** to proceed. If you do not wish to add any pools, click **[Review](#kosmos-review-configuration)**. + +### Pool configuration + +In a Kosmos cluster, you can add either: +- **Scaleway** pools composed exclusively of Scaleway Instances, or +- **Multi-cloud** pools built from external Instances and servers + +This section explains how to add a Scaleway pool. + +For instructions on creating a Multi‑cloud pool and attaching external nodes to your Kosmos cluster, refer to our [dedicated documentation](/kubernetes/how-to/edit-kosmos-cluster/). + +To add a Scaleway pool to your Kosmos cluster: + +1. Choose the **Scaleway** pool type. +2. Configure your pool: + * Select the **Availability Zone** of the pool. + * Select a **node type** for the pool. + * Configure the **system volume**. + * If required, configure **pool options**: + * **Operations** tab: Specify node count and choose whether to enable [autoscaling](/kubernetes/concepts/#autoscale) or [autoheal](/kubernetes/concepts/#autoheal). + * **Scheduling** tab: Configure [startup taints and taints](/kubernetes/how-to/create-kosmos-cluster/#how-to-configure-startup-taints-or-taints), as well as [node labels](/kubernetes/how-to/create-kosmos-cluster/#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). + + Alternatively, you can leave these options at default values. + * Specify a **name** for the pool. Optionally, you can assign tags to it. +3. To add more pools, click **Add pool** and repeat the steps above. + + You can add or remove pools as needed before finalizing your cluster configuration. To remove a pool, click the **Delete** icon next to the respective pool. + +4. Once all pools are configured, click **Review** to finalize your cluster setup. + +### Review configuration + +1. Review the configuration details of your Kubernetes cluster and its pools (if any). + + To modify any element, click the **Edit** icon next to the respective configuration component. + +2. Click **Submit** to deploy your cluster. Once deployment is complete, the cluster appears in the clusters list. The Kosmos agent/installer supports Ubuntu 24.04 and may work on Debian based distributions. - It is available for `arm64` or `amd64` server architectures + It is available for `arm64` or `amd64` server architectures. Bear in mind that we **do not provide support on external nodes**. - - For more information about adding external nodes to your Kosmos cluster, refer to our dedicated [How to manage a Kosmos cluster](/kubernetes/how-to/edit-kosmos-cluster/) documentation. - ## How to edit a Kubernetes cluster @@ -149,7 +154,7 @@ This section outlines the settings for your cluster pools. You can configure as 3. Click next to the cluster you want to edit. 4. Choose the option you require: * **Add pool**: Add additional computing resources to the cluster. - * **Get kubeconfig**: Download the `.kubeconfig` file of the cluster. + * **Generate kubeconfig**: Download the `.kubeconfig` file of the cluster. * **Delete**: Delete the cluster.