Kubernetes
Managed Kubernetes clusters with a WAYSCloud-operated control plane, private worker nodes, daily backups and a public API endpoint on our domain. 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 this is
A CNCF-conformant Kubernetes cluster (1.33–1.34) where WAYSCloud operates the control plane, node lifecycle, upgrades, backups and networking. Worker nodes have no public addresses; outbound traffic leaves through a NAT gateway and inbound traffic arrives through load balancers you create with a normal Service of type LoadBalancer.
Every cluster gets its own private network, its own API endpoint {id}.k8s.{region}.wayscloud.services:7443, and its own backup bucket. You are cluster-admin: RBAC, namespaces, ingress controllers and everything above the node layer are yours.
This is not a shared multi-tenant cluster. Nodes are never shared between customers.
When to use it
Use this when
- You run several services that need scheduling, scaling and rollouts
- You deploy with Helm, Kustomize, ArgoCD or Flux
- You need persistent volumes, load balancers and horizontal autoscaling
- You want a cluster in Norway, Sweden or Denmark with EU data residency
Consider something else when
- You have one or two containers → App Platform is simpler
- You need a managed database → Databases (bind it to your cluster workloads)
- You want full OS control → VPS
What you get
- Control plane: Development (single) or Production (highly available), managed and upgraded by us
- Node pools: 1–16 nodes per pool, several pools per cluster, labels and taints, scale up and down any time
- Networking: private worker nodes, NAT gateway for outbound traffic, load balancers on demand, extra public IPv4 addresses with your own reverse DNS
- Storage: persistent volumes (MaxIOPS SSD, encrypted at rest) through the built-in CSI driver
- Access: admin kubeconfig from the dashboard, API allow-list per cluster,
kubectlin the browser via Cloud Shell - Backups: daily cluster and volume backups to WAYSCloud object storage in Norway, 14 days (Development) or 30 days (Production), restore from the dashboard
- Upgrades: one click, with an automatic backup first
- Billing: monthly cluster fee plus hourly-rated nodes; extra IPs, load balancers and storage per use
Pricing
All prices exclude VAT. Node prices are shown per month and billed per hour.
| Item | EUR/month | NOK/month | SEK/month | DKK/month |
|---|---|---|---|---|
| Cluster – Development (14-day free trial) | 19 | 199 | 199 | 139 |
| Cluster – Production (HA) | 99 | 999 | 999 | 699 |
| Node 2 vCPU / 4 GB | 29 | 249 | 249 | 179 |
| Node 4 vCPU / 8 GB | 49 | 399 | 399 | 289 |
| Node 4 vCPU / 16 GB | 59 | 549 | 549 | 389 |
| Additional public IPv4 | 5 | 49 | 49 | 35 |
| Load balancer | 19 | 199 | 199 | 139 |
| Persistent disk, per GB | 0.25 | 2.50 | 2.50 | 1.75 |
| Backup storage, per GB | 0.10 | 1.00 | 1.00 | 0.70 |
How it works
- Choose a region, a cluster tier and your first node pool
- WAYSCloud creates the private network, gateway and control plane (about 10 minutes)
- Nodes join; the dashboard shows each step as it completes
- Download the kubeconfig and run
kubectl get nodes - Backups start the first night; scale, upgrade and add pools from the dashboard
What you see in the dashboard
- Overview: status, version, region, API endpoint, node summary
- Nodes: node pools with plan, count and status; scale, add or remove pools
- Access: kubeconfig download (shown once per download), API allow-list
- Network: public addresses with reverse DNS, load balancers, order extra IPs
- Backups: schedule and retention, backup list, restore
- Upgrade: available versions
- History: every change with who made it
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 4Example request and response
Full reference: Kubernetes API. Clusters can also be managed through the API with a personal access token that has the kubernetes:write scope:
curl -X POST https://api.wayscloud.services/v1/kubernetes/clusters \
-H "Authorization: Bearer wayscloud_pat_..." \
-H "Content-Type: application/json" \
-d '{
"name": "shop",
"region": "no",
"plan_code": "k8s-cluster-dev",
"version": "1.34",
"node_pools": [{"name": "default", "plan_code": "k8s-node-2c4g", "count": 2}],
"api_ip_filter": ["203.0.113.0/24"]
}'{
"id": "3f2b6c1e-…",
"name": "shop",
"technical_name": "7f3a2c",
"region": "no",
"region_city": "Oslo",
"plan_code": "k8s-cluster-dev",
"version": "1.34",
"status": "provisioning",
"provisioning_step": "network",
"api_endpoint": "https://7f3a2c.k8s.no.wayscloud.services:7443",
"node_pools": [{"name": "default", "plan_code": "k8s-node-2c4g", "count": 2, "status": "pending"}],
"public_ips": [],
"trial_ends_at": "2026-09-30T10:12:00Z"
}Poll GET /v1/kubernetes/clusters/{id} until status is running, then GET /v1/kubernetes/clusters/{id}/kubeconfig returns the kubeconfig as YAML.
Good to know
- API access is restricted to the addresses you list; an empty list means any address may connect (authentication is still required). Cloud Shell in the dashboard is always allowed.
- 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.
- Backups are stored in WAYSCloud object storage in Norway with write-once protection for the retention period. Restores return your namespaces and volumes to the same cluster.
- Trial: Development clusters are free for the first 14 days; nodes are billed from the first hour.
Common use cases
- Web applications with rolling deployments and horizontal autoscaling
- Internal platforms — one cluster per team or environment, with namespaces per app
- Batch and data jobs that need scheduling and persistent volumes
- GitOps — point ArgoCD or Flux at the cluster and let it converge
Related services
- App Platform — containers without a cluster
- Databases — managed PostgreSQL and MariaDB for your workloads
- Object Storage — S3-compatible buckets
- Cloud Shell —
kubectlin the browser
Related documentation
- Kubernetes API reference — every endpoint with request and response fields
- API Keys — personal access tokens and scopes
- Billing — how hourly node billing works
- Security — network isolation and encryption