Skip to content

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, kubectl in 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.

ItemEUR/monthNOK/monthSEK/monthDKK/month
Cluster – Development (14-day free trial)19199199139
Cluster – Production (HA)99999999699
Node 2 vCPU / 4 GB29249249179
Node 4 vCPU / 8 GB49399399289
Node 4 vCPU / 16 GB59549549389
Additional public IPv45494935
Load balancer19199199139
Persistent disk, per GB0.252.502.501.75
Backup storage, per GB0.101.001.000.70

View all plans in dashboard


How it works

  1. Choose a region, a cluster tier and your first node pool
  2. WAYSCloud creates the private network, gateway and control plane (about 10 minutes)
  3. Nodes join; the dashboard shows each step as it completes
  4. Download the kubeconfig and run kubectl get nodes
  5. 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

  1. Open my.wayscloud.servicesInfrastructureKubernetes
  2. Click New cluster, pick Norway (Oslo), Development, and one pool of 2 × 2 vCPU / 4 GB
  3. When the status turns running, open Access and download the kubeconfig

Connect

bash
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 minute

CLI

bash
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 4

Example 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:

bash
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"]
  }'
json
{
  "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


Open in dashboard