Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 6 additions & 2 deletions pages/kubernetes/concepts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,15 @@ The Autoheal feature ensures that all nodes within a pool remain in a healthy op

## Auto-upgrade

Auto-upgrade allows you to schedule a maintenance window for your cluster to be upgraded to a more recent version of Kubernetes. The upgrade process will occur within two hours from the time defined by you.
Auto-upgrade allows you to schedule a maintenance window for your cluster to be upgraded to a more recent version of Kubernetes. The upgrade process will occur within 2 hours from the time defined by you.

## Cloud-init

Cloud-init is an industry-standard tool used to apply custom, predefined configurations to an instance upon startup. In a Kubernetes context, you can define initial setup tasks (such as creating users, upgrading system packages, configuring trusted CA certificates, etc.) that automatically execute when a node is first provisioned. On Scaleway Kapsule pools, cloud-init retrieves this custom configuration directly from the user-data of the pool.

## Cluster

A cluster is a set of machines, called nodes, running containerized applications managed by [Kubernetes](#kubernetes). A cluster has several worker nodes and at least one control plane. Refer to the [control plane](#control-plane) concept for more information regarding the cluster's limitations. Scaleway allows you to create two configurations of clusters: [Kapsule](#kubernetes-kapsule), for clusters comprising Scaleway Instances, and [Kosmos](#kubernetes-kosmos), for multi-cloud clusters. Clusters can be tailored to availability requirements depending on the cluster availability types: zonal (single-zone or multi-AZ) and regional.
A cluster is a set of machines, called nodes, running containerized applications managed by [Kubernetes](#kubernetes). A cluster has several worker nodes and at least one control plane. See the [control plane](#control-plane) concept for more information regarding the cluster's limitations. Scaleway allows you to create 2 configurations of clusters: [Kapsule](#kubernetes-kapsule), for clusters comprising Scaleway Instances, and [Kosmos](#kubernetes-kosmos), for multi-cloud clusters. Clusters can be tailored to availability requirements depending on the cluster availability types: zonal (single-zone or multi-AZ) and regional.

## Cluster types

Expand Down
95 changes: 92 additions & 3 deletions pages/kubernetes/how-to/create-cluster.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -63,15 +63,104 @@ This section outlines the settings for your cluster pools. You can configure as
* 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.
* **Scheduling & Placement** tab: Configure [startup taints or taints](#how-to-configure-startup-taints-or-taints), if required. You can also link the pool to a [placement group](/instances/concepts/#placement-groups).
* Configure an optional [cloud-init](#how-to-configure-a-cloud-init-script) script to customize your nodes.
* Enter the name of the pool and optional tags.
* If required, add one or more [node labels](#how-to-configure-node-labels).
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 the <Icon name="delete" /> **Delete** icon next to the respective pool.
</Message>
3. 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 are configuring, go to the **Scheduling & Placement** 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 identify 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.


<Message type="note">
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.
</Message>

### How to configure a cloud-init script

[Cloud-init](/kubernetes/concepts/#cloud-init) enables you to set custom configuration that will be applied at boot time to the Instances acting as the nodes in your pool.

<Message type="important">
Use cloud-init with caution, overriding some default configurations can break nodes. Scaleway does not offer support for troubleshooting custom cloud-init scripts.
</Message>

1. On the page of the pool that you are configuring, go to the **Cloud-init** section.
2. Click the **Enable cloud-init** button. The **Enable cloud-init** dialog box opens.
3. Enter your YAML-formatted cloud-init script, and click **Enable cloud-init**.

The following example shows a script that adds a custom Certificate Authority (CA):

```bash
#cloud-config
#
# This is an example file to configure an instance's trusted CA certificates
# system-wide for SSL/TLS trust establishment when the instance boots for the
# first time.
#
# Make sure that this file is valid yaml before starting instances.
# It should be passed as user-data when starting the instance.

ca_certs:
# If present and set to True, the 'remove_defaults' parameter will either
# disable all the trusted CA certifications normally shipped with
# Alpine, Debian or Ubuntu. On RedHat, this action will delete those
# certificates.
# This is mainly for very security-sensitive use cases - most users will not
# need this functionality.
remove_defaults: true

# If present, the 'trusted' parameter should contain a certificate (or list
# of certificates) to add to the system as trusted CA certificates.
# Pay close attention to the YAML multiline list syntax. The example shown
# here is for a list of multiline certificates.
trusted:
- |
-----BEGIN CERTIFICATE-----
YOUR-ORGS-TRUSTED-CA-CERT-HERE
-----END CERTIFICATE-----
- |
-----BEGIN CERTIFICATE-----
YOUR-ORGS-TRUSTED-CA-CERT-HERE
-----END CERTIFICATE-----
```

See [cloud-config examples](https://docs.cloud-init.io/en/latest/reference/examples.html) in the cloud-init documentation for further practical examples.

### 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 are configuring, go to the **Node labels** section.
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.
Expand Down
69 changes: 59 additions & 10 deletions pages/kubernetes/how-to/create-kosmos-cluster.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,10 @@ This section outlines the settings for your cluster pools. You can configure as
* 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.
* **Scheduling & Placement** tab: Configure [startup taints and/or taints](#how-to-configure-startup-taints-or-taints), if required. You can also link the pool to a [placement group](/instances/concepts/#placement-groups).
* Configure an optional [cloud-init](#how-to-configure-a-cloud-init-script) script to customize your nodes.
* Enter the name of the pool and optional tags.
* If required, add one or more [node labels](#how-to-configure-node-labels).
* For **Multi-cloud** pools:
* Specify the external nodes to be added to the pool.
<Message type="important">
Expand All @@ -70,9 +71,9 @@ This section outlines the settings for your cluster pools. You can configure as

### 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.
The [startup taints](/kubernetes/concepts/#startup-taints) and [taints](/kubernetes/concepts/#taints) you configure for your Scaleway 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.
1. On the page of the pool that you are configuring, click the **Scheduling & Placement** 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.
Expand All @@ -81,19 +82,68 @@ The [startup taints](/kubernetes/concepts/#startup-taints) and [taints](/kuberne
- `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.
4. Click the **Add startup taint** or **Add taint** button to add further startup taints or taints, respectively.

### How to configure a cloud-init script

[Cloud-init](/kubernetes/concepts/#cloud-init) enables you to set custom configuration that will be applied at boot time to the Instances acting as the nodes in your Scaleway pool.

<Message type="important">
Use cloud-init with caution, overriding some default configurations can break nodes. Scaleway does not offer support for troubleshooting custom cloud-init scripts.
</Message>

1. On the page of the pool that you are configuring, go to the **Cloud-init** section.
2. Click the **Enable cloud-init** button. The **Enable cloud-init** dialog box opens.
3. Enter your YAML-formatted cloud-init script, and click **Enable cloud-init**.

The following example shows a script that adds a custom Certificate Authority (CA):

```bash
#cloud-config
#
# This is an example file to configure an instance's trusted CA certificates
# system-wide for SSL/TLS trust establishment when the instance boots for the
# first time.
#
# Make sure that this file is valid yaml before starting instances.
# It should be passed as user-data when starting the instance.

ca_certs:
# If present and set to True, the 'remove_defaults' parameter will either
# disable all the trusted CA certifications normally shipped with
# Alpine, Debian or Ubuntu. On RedHat, this action will delete those
# certificates.
# This is mainly for very security-sensitive use cases - most users will not
# need this functionality.
remove_defaults: true

# If present, the 'trusted' parameter should contain a certificate (or list
# of certificates) to add to the system as trusted CA certificates.
# Pay close attention to the YAML multiline list syntax. The example shown
# here is for a list of multiline certificates.
trusted:
- |
-----BEGIN CERTIFICATE-----
YOUR-ORGS-TRUSTED-CA-CERT-HERE
-----END CERTIFICATE-----
- |
-----BEGIN CERTIFICATE-----
YOUR-ORGS-TRUSTED-CA-CERT-HERE
-----END CERTIFICATE-----
```

See [cloud-config examples](https://docs.cloud-init.io/en/latest/reference/examples.html) in the cloud-init documentation for further practical examples.

### How to configure node labels

By attaching node labels to a pool, you can:
By attaching node labels to a Scaleway 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**.
1. On the page of the pool that you are configuring, go to the **Node labels** section.
2. Specify a **Key** and a **Value**.
3. Click the **+ Add node label** button to add further node labels.
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:

Expand All @@ -102,7 +152,6 @@ To implement the scheduling constraints related to the node labels you have just
- `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 (if any).
Expand Down
4 changes: 2 additions & 2 deletions pages/kubernetes/how-to/edit-kosmos-cluster.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ A multi-cloud pool allows you to attach external Instances and servers to your c
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 & Nodes** tab.
5. Click the **+ Add pool** button. The pool creation wizard displays.
5. Click the **Add pool** button. The pool creation wizard displays.
6. Complete the following steps of the wizard:
* Choose the **Multi-cloud** pool type.
* Add a **name** for the pool and, optionally, a description, tags, and [node labels](/kubernetes/concepts/#node-labels).
Expand All @@ -64,7 +64,7 @@ In order to add external nodes to your multi-cloud cluster, you must first [crea
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.
9. Click **Add external node**. The instructions for adding an external node display.

## How to configure external nodes to join the cluster

Expand Down
Loading
Loading