How to create a Kubernetes Kosmos cluster
Kubernetes Kosmos provides an alternative to a classic Kubernetes Kapsule. With Kubernetes Kosmos, you can create a Kubernetes cluster comprising both managed Scaleway Instances (with autohealing and autoscaling) and external instances and servers from any other cloud provider. Scaleway ensures the high availability of your services globally, across different zones, regions, and providers. In addition to the Kubernetes Kapsule pricing, you are charged for the Kubernetes Kosmos control plane and an additional fee for managed external nodes.
Before you start
To complete the actions presented below, you must have:
- A Scaleway account logged into the console (External link)
- Owner status or IAM permissions allowing you to perform actions in the intended Organization
Cluster configuration
- Navigate to Kubernetes under the Containers section of the Scaleway console (External link) side menu. The Kubernetes dashboard displays.
- From the drop-down menu, select the geographical region you want to manage.
- Click Create cluster to launch the cluster creation wizard.
- On the cluster configuration page, provide the following details:
- Check the Organization and Project for the new cluster.
- Select Kubernetes Kosmos as the cluster type.
- Verify the geographical region for the cluster.
- Select the control plane offer for your cluster. Options include shared or dedicated control planes.
- Specify the Kubernetes version for your cluster.
- Provide a name for the cluster. Optionally, you can add a description and tags for better organization.
- If you want to add pools, click Configure pools (optional) to proceed. If you do not wish to add any pools, click Review.
Pool configuration
This section outlines the settings for your cluster pools. You can configure as many pools for your cluster as you require.
- Choose the pool type. Available types are Scaleway or Multi-cloud.
- 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 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 and autoheal.
- Scheduling & Placement tab: Configure startup taints and/or taints, if required. You can also link the pool to a placement group.
- Advanced options tab: Configure an optional cloud-init script to customize your nodes.
- Enter the name of the pool and optional tags.
- If required, add one or more node labels.
- For Multi-cloud pools:
- Specify the external nodes to be added to the pool.
- Enter the pool's name and optional tags.
- Add node labels, if required.
- For Scaleway pools:
- To add more pools, click Add pool and repeat the steps above.
- Once all pools are configured, click Review.
How to configure startup taints or taints
The startup taints and taints you configure for your Scaleway pool are automatically applied to any new node created within the pool.
- On the page of the pool that you are configuring, click the Scheduling & Placement tab.
- Select the Startup taints or the Taints checkbox, depending on what you wish to configure.
- Specify a key-value pair and an effect:
- Key: Acts as the identifier of the taint.
- (Optional) 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.
- 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 enables you to set custom configuration that will be applied at boot time to the Instances acting as the nodes in your Scaleway pool.
-
On the page of the pool that you are configuring, go to the Advanced options tab > Cloud-init section.
-
Click the Enable cloud-init button. The Enable cloud-init dialog box opens.
-
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):
#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 (External link) in the cloud-init documentation for further practical examples.
How to configure node labels
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).
- On the page of the pool that you are configuring, go to the Node labels section.
- Specify a Key and a Value.
- 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
- Review the configuration details of your Kubernetes cluster and its pools (if any).
- Click Submit to deploy your cluster. Once deployment is complete, the cluster appears in the clusters list.