KinD Cluster POC Setup#
⚠️ NOT PRODUCTION READY — This setup uses KinD (Kubernetes in Docker) on a single host and is intended for proof-of-concept, lab, and evaluation purposes only. It does not provide high availability, failover, or rolling maintenance capabilities. For production deployments, use the RKE2 multi-node cluster.
This guide walks through deploying Ametnes Platform services using a KinD cluster on an Ubuntu host (local workstation, cloud VM, or on-premises server). It is designed for DevOps engineers, system architects, and technical teams evaluating the platform in a lightweight, disposable environment.
Prerequisites#
- OS: Ubuntu 20.04 LTS or later
- Root or sudo access on the host
- A static IP address reachable from the Ametnes control plane
- Open ports for HTTPS (443) and Kubernetes API (6443)
KinD minimum requirements#
| CPU | RAM | Storage |
|---|---|---|
| 2 vCPUs | 4 GB | 10 GB |
Total system resources depend on the services you deploy. Each service publishes its own resource requirements — plan your host capacity accordingly.
Step 1: Sign Up#
Create a free Ametnes Platform account at https://cloud.ametnes.com. No credit card required.
Step 2: Provision the Host#
Provision an Ubuntu 20.04 LTS (or later) VM or use an existing Linux host meeting the specifications above. Ensure firewall rules allow HTTPS (443) and Kubernetes API (6443) traffic.
Step 3: Create the KinD Cluster and Install the Ametnes Cloud Agent#
3.1 Get your Location UUID#
- Log in to your Ametnes Platform account at https://cloud.ametnes.com
- Navigate to Service Locations in the left menu
- Generate a UUID with
uuidgenon your command line, or copy your default location's UUID
3.2 Run the setup script#
Run the setup script as a single command, replacing <your.vm.ip.address> and <location-uuid> with your values:
curl -fsSL https://ametnes-assets.lon1.digitaloceanspaces.com/packages/setup-kind.sh | sudo bash -s -- <your.vm.ip.address> ametnes-kind --location <location-uuid>
To install a specific agent version, pass --version <tag> (e.g. --version 3.1.0). Otherwise the latest version is installed.
This script installs Docker, kubectl, KinD, Helm, configures system limits, creates a 1+3 node cluster, writes the kubeconfig to ~/.kube/config, and installs the Ametnes Cloud Agent connected to your location.
Verify the cluster is ready:
Expected output: one control-plane and three worker nodes, all Ready.
3.3 Register the location in the Ametnes console#
- In your Ametnes Cloud console, navigate to Service Locations
- Click New Location
- Enter:
- User Supplied Id: Your UUID from step 3.1
- Name: e.g.,
KinD-Lab - Code: e.g.,
KIND - Click Create
After a short while, the location will appear online in your console.
3.4 Verify the agent#
Expected output: ametnes-cloud-agent pod Running.
Step 4: Deploy a Service#
- Navigate to the Services dashboard using the left menu
- Click New Service
- Filter for a service (e.g., PostgreSQL, Open WebUI) and select Create
- Fill in the form:
- Name: e.g.,
Postgres-KinD-POC - Description: Optional description
- Version: Select a version from the list
- Location: Select
KinD-Lab(or your location name) - Configure any service-specific settings
- Click Create
Step 5: Test Connectivity#
- Navigate to the Services dashboard
- Wait for the service status to change to ready
- Click the Admin button to view service details
- Copy the endpoint, username, and password
- Open the service URL in your browser and log in
Clean Up#
When done testing, delete services from the platform console to free up resources. Then tear down the cluster:
Troubleshooting#
| Symptom | Cause | Fix |
|---|---|---|
kubectl connection refused |
Not in docker group or limits not applied | Log out and back in, or run newgrp docker |
Agent pod stuck in Init:0/1 |
DNS resolution failure for short service names | Verify CoreDNS is running: kubectl -n kube-system get pods -l k8s-app=kube-dns |
too many open files in pod logs |
fsnotify watcher limit too low | Run sudo sysctl --system to apply 90-kind.conf limits |
Service stays in provisioning |
Agent disconnected or location offline | Check agent pod status: kubectl -n ametnes-system get pods |