Kubernetes
Managed Kubernetes clusters on the WAYSCloud European cloud platform: a managed control plane, private worker nodes and full cluster-admin access on a dedicated cluster. You bring your workloads; we run the cluster.
Best for: container workloads that outgrow a single app, teams that already deploy with kubectl/Helm/GitOps, and anyone who wants Kubernetes without operating it.
Open in dashboard · API reference · CLI · Python SDK
What you get
- Control plane: Development (single) or Production (highly available), operated and patched by WAYSCloud
- Node pools: 1–16 nodes per pool (minimum 1), several pools per cluster, labels and taints to separate workloads
- Networking: a dedicated private network per cluster, worker nodes without public addresses, outbound traffic through a NAT gateway, integrated load balancing from a standard
Serviceof typeLoadBalancer - Storage: persistent volumes through the built-in CSI integration — Standard SSD by default, with encrypted Performance (MaxIOPS) volumes available
- Backups: scheduled and on-demand cluster and volume backups to WAYSCloud object storage in Norway, 14 days (Development) or 30 days (Production), with restore from the dashboard
- Access: admin kubeconfig from the dashboard, per-cluster API allow-list, and
cloud k8smanagement via the CLI, Python SDK and Cloud Shell - Billing: monthly cluster fee plus hourly-metered nodes; persistent disks, backup storage, extra IPs and load balancers metered per use
Capacity
| Development | Production (HA) | |
|---|---|---|
| Worker nodes | up to 30 | up to 120 |
| vCPU | — | up to 480 |
| Memory | — | up to 1.92 TB |
| Local worker-node disk | — | up to 6 TB with the current largest node profile |
Use several node pools in one cluster to separate workloads by size, labels and taints. Pools scale between 1 and 16 nodes and are never scaled to zero. Every cluster is dedicated — nodes are never shared between customers.
Networking and access
Every cluster gets its own private network. Worker nodes have no public IP addresses: outbound traffic leaves through a dedicated NAT gateway, and inbound traffic arrives through load balancers you create with a normal Kubernetes Service of type LoadBalancer.
The Kubernetes API is published on a WAYSCloud domain ({id}.k8s.{region}.wayscloud.services:7443) and restricted by a per-cluster CIDR allow-list:
- An empty allow-list means only WAYSCloud infrastructure can reach the Kubernetes API.
- To use
kubectlfrom outside WAYSCloud, add the CIDR you connect from. Allow-list changes take effect within a few minutes. - The allow-list applies to the Kubernetes API only — it does not restrict your workloads, exposed services or load balancers.
Backup and recovery
Backups run through Velero to WAYSCloud object storage in Norway:
- Scheduled backups on a cluster-level schedule, and on-demand backups whenever you need one
- Retention: 14 days (Development) or 30 days (Production)
- Restore from the dashboard, including namespace-scoped restores
Scheduled backup and restore are covered by end-to-end verification. No backup is taken automatically before an upgrade — create one first if you need a restore point.
Kubernetes version lifecycle and upgrades
WAYSCloud keeps the Kubernetes version catalogue deliberately small and predictable.
- Default: Kubernetes 1.35
- Transition: Kubernetes 1.34 until 15 October 2026
- New minor versions are qualified end-to-end before being offered
- Minor upgrades are sequential, one version at a time
- Upgrades are customer-initiated and use the qualified rolling worker strategy by default
- The backup decision is explicit for every upgrade — Backup and upgrade or Upgrade without new backup
- Maintenance windows and scheduled upgrades are available per cluster
The control plane and worker nodes have separate upgrade lifecycles: the API and portal report each pool's kubelet version. Worker pools converge automatically with the rolling strategy, or as an explicit per-pool action with the manual strategy.
Read the Kubernetes version and upgrade policy →
Automation
Manage clusters from the dashboard or programmatically:
- Dashboard — create, scale, back up and upgrade at my.wayscloud.services
- REST API — Kubernetes API reference, authenticated with a personal access token carrying the
kubernetes:readorkubernetes:writescope - CLI —
cloud k8scommands (CLI documentation) - Python SDK —
client.kubernetes(Python SDK documentation) - Cloud Shell —
cloud k8smanagement commands in the browser (Cloud Shell)
Lifecycle operations available through these surfaces include creating and deleting clusters, node pools and scaling, kubeconfig, API access control, public IPs and reverse DNS, backup policies, on-demand backup and restore, upgrades and audit history.
Pricing
All prices exclude VAT. Node prices are shown per month and metered by the hour; IPs and load balancers are metered per day; persistent disks and backup storage are billed per GB-month.
| Item | EUR/month | NOK/month | SEK/month | DKK/month |
|---|---|---|---|---|
| Cluster – Development (14-day free trial) | 19 | 199 | 199 | 149 |
| Cluster – Production (HA), including Standard NAT | 139 | 1 499 | 1 499 | 1 099 |
| Node 2 vCPU / 4 GB | 29 | 299 | 299 | 219 |
| Node 4 vCPU / 8 GB | 49 | 499 | 499 | 359 |
| Node 4 vCPU / 16 GB | 69 | 699 | 699 | 499 |
| Additional public IPv4 | 5.99 | 59 | 59 | 49 |
| Load balancer | 29 | 249 | 249 | 179 |
| Standard SSD persistent disk, per GB | 0.19 | 1.99 | 1.99 | 1.49 |
| Performance (MaxIOPS) persistent disk, per GB | 0.39 | 3.99 | 3.99 | 2.99 |
| Backup storage, per GB | 0.10 | 1.00 | 1.00 | 0.79 |
HA load balancers are not yet orderable. View all plans in dashboard
Provisioning
Typical provisioning takes 10–20 minutes, measured on both Development and Production HA. The dashboard shows each step — network, gateway, control plane, nodes and access — as it completes.
Regions
Kubernetes is available in:
- Norway (Oslo)
- Sweden (Stockholm)
- Denmark (Copenhagen)
Additional European regions will follow.
Fastest way to get started
Dashboard
- Open my.wayscloud.services → Infrastructure → Kubernetes
- Click New cluster, pick Norway (Oslo), Development, and one pool of 2 × 2 vCPU / 4 GB
- When the status turns running, open Access and download the kubeconfig
Connect
export KUBECONFIG=~/Downloads/kubeconfig-7f3a2c.yaml
kubectl get nodes
kubectl create deployment hello --image=nginxdemos/hello --replicas=2
kubectl expose deployment hello --type=LoadBalancer --port=80
kubectl get svc hello -w # the external address appears within a minuteCLI
cloud k8s create shop --pool k8s-node-2c4g:2 --wait
cloud k8s kubeconfig <cluster-id> -o ~/.kube/shop.yaml
cloud k8s scale <cluster-id> default 4Good to know
- Cluster-admin: you control RBAC, namespaces, ingress controllers and everything above the node layer.
- Reverse DNS can be set on load-balancer and additional addresses once the name resolves to the address. The outbound gateway address keeps its default name.
- Trial: Development clusters are free for the first 14 days; nodes are billed from the first hour.
- Upgrades are customer-initiated, sequential and use the rolling worker strategy by default; the pre-upgrade check reports blockers and advisory warnings before anything starts. See the version lifecycle and upgrades.
Related services
- App Platform — containers without a cluster
- Databases — managed PostgreSQL and MariaDB for your workloads
- Object Storage — S3-compatible buckets
- Cloud Shell — run
cloud k8scommands in the browser
Related documentation
- Kubernetes API reference — every endpoint with request and response fields
- Kubernetes version and upgrade policy — supported versions, qualification and upgrade path
- CLI · Python SDK — scripts and automation
- API Keys — personal access tokens and scopes
- Billing — how hourly node and per-use billing works
- Security — network isolation and encryption