Create a Kubernetes cluster
At the end of this guide, the project acme-staging has its own Kubernetes cluster, acme-staging-1: virtual
machines on your servers, built from one resource you planned and applied. It arrives with Frazer GitOps, eBPF
networking, the certificate manager, the secret sync and the monitoring agents installed, kubectl reaches it with your
Frazer identity, and its GitOps view is open in your browser.
You need:
- A project for the cluster. To create one, run
frazer projects create acme-staging --organization acme. - Capacity: servers in a pool with the
substrate-hostrole, in your host project (acme-infra) and shared with this project. Asmallcluster needs one server; aproductioncluster needs three. Servers joined with the install command keep their own OS and cannot host VMs, so join these through a provider account or the Frazer boot image (Servers and pools). - Permission to create clusters in the project (
kubernetes.clusters.create). kubectlon your laptop.
Create the cluster
Section titled “Create the cluster”-
Install the CLI and sign in.
Terminal window curl -fsSL https://get.frazer.ai | shfrazer login -
Check the project’s capacity. List the pools the project can place VMs on, its own and the ones shared with it:
Terminal window frazer servers server-pools list --project acme-staging --include-sharedYou should see a pool shared from
acme-infra, with the capacity guaranteed toacme-stagingand its limit. If the list is empty, someone withservers.serverPools.shareon the host project shares a pool with it:Terminal window frazer servers server-pools share vint-hill-default --project acme-infra --location us-virginia1 \--share-type specific-projects \--consumer 'acme-staging=guaranteed:vcpus=16,memory-gib=64;limit:vcpus=32,memory-gib=128' --dry-runGuaranteed capacity is held for the project and never lent; the limit is how far it may burst into capacity nobody holds. The
--consumervalue is quoted so the shell does not read its;. The plan shows the capacity math, the project it adds and any resources affected; run the command again without--dry-runto apply it. -
Plan the cluster. The
smallclass has one control-plane VM and workers, and suits staging and small projects:Terminal window frazer kubernetes clusters create acme-staging-1 --project acme-staging \--location us-virginia1 --class small --dry-runOutput Pool vint-hill-default · shared from acme-infraQuota 10 vCPU, 38 GiB of your share · surge VM heldServers the control-plane VM on AtlasObjects + cluster objects · + Application frazer-platformNetwork a subnet of your project's VPC · pod and service rangesAddresses none yet · from the site's range when you add a gatewayThe plan shows the quota the cluster takes from your share (one spare VM per pool is held for upgrades and repairs), the servers that host the VMs, the network ranges, the monthly cost, and the rendered objects as a diff. Nothing exists yet. In a production project, a second person approves the plan before it applies.
-
Apply it. Run the same command without
--dry-run:Terminal window frazer kubernetes clusters create acme-staging-1 --project acme-staging \--location us-virginia1 --class smallThe command returns an operation. In the console, open Compute › Kubernetes clusters and select
acme-staging-1to follow its ten phases: Requested, Accepted, Creating machines, Control plane starting, Control plane ready, Nodes joining, Seeding, Platform syncing, Environments syncing and Ready. If a phase times out, the page shows the message of the object that failed. -
Connect
kubectl.Terminal window frazer kubernetes clusters get-credentials acme-staging-1 --project acme-stagingkubectl get nodesThe kubeconfig holds no secret. For each call,
kubectlasksfrazerfor a 10-minute token for this one cluster, and the traffic goes through Frazer Link, so there is no VPN to install. Your Frazer role maps to Kubernetes RBAC groups. You should see the control-plane node and the workers, allReady. -
Open GitOps. On the cluster’s page, click Open GitOps. It opens behind Frazer sign-in. The Application
frazer-platformis the platform set Frazer installed; the cluster’s own Frazer GitOps keeps it synced, even when Frazer is unreachable. Open dashboards, on the same page, shows the cluster’s dashboards.
What you have
Section titled “What you have”- A cluster of VMs. Each node is a virtual machine running Ubuntu and Kubernetes on your servers. Your containers never run on the bare host.
- The platform set. The Kubernetes distribution brings the control plane, its datastore, eBPF networking and cluster DNS; a one-time seed installs Frazer GitOps and the secret sync; then the cluster’s Frazer GitOps installs the rest in waves: Frazer Policy, the certificate manager, the cluster’s gateway, local NVMe volumes and the metrics and log agents.
- Changes as plans. Scaling a node pool, upgrading Kubernetes or switching on an add-on is the same plan, then apply. Rolling back is applying an earlier revision. Deleting is soft, with a restore window.
- No apps yet. Workloads come from Git: connect an environment repository and the cluster’s Frazer GitOps deploys what is in it.