Skip to main content
The k8s command provides comprehensive Kubernetes cluster management and natural language querying capabilities for EKS, GKE, and kubeadm clusters.

Usage

clanker k8s [subcommand] [flags]

Subcommands

Create commands

# Create an EKS cluster
clanker k8s create eks my-cluster --nodes 2 --node-type t3.small

# Show plan only (don't create)
clanker k8s create eks my-cluster --plan

Management commands

# List EKS clusters
clanker k8s list eks

# List GKE clusters
clanker k8s list gke --gcp-project my-project

# List kubeadm clusters
clanker k8s list kubeadm

Deployment commands

# Deploy an application
clanker k8s deploy nginx --name my-nginx --port 80

# Deploy with replicas
clanker k8s deploy redis --replicas 3 --namespace cache

# Show deployment plan
clanker k8s deploy postgres --plan

Resource commands

# Get all resources from a cluster
clanker k8s resources --cluster my-cluster

# Output as YAML
clanker k8s resources --cluster my-cluster --output yaml

# Get resources from all clusters
clanker k8s resources

Logs commands

# Get pod logs
clanker k8s logs my-pod

# Get logs from specific container
clanker k8s logs my-pod -c my-container

# Follow logs
clanker k8s logs my-pod -f

# Get last 100 lines
clanker k8s logs my-pod --tail 100

# Include timestamps
clanker k8s logs my-pod --timestamps

Stats commands

# Get node metrics
clanker k8s stats nodes

# Get pod metrics
clanker k8s stats pods -n kube-system

# Get metrics for all namespaces
clanker k8s stats pods -A

# Get pod metrics sorted by memory
clanker k8s stats pods --sort-by memory

# Get specific pod metrics
clanker k8s stats pod my-pod

# Get cluster-wide metrics
clanker k8s stats cluster

Ask command

# Ask natural language questions
clanker k8s ask "how many pods are running"

clanker k8s ask --cluster test-cluster \
  "show me all deployments"

clanker k8s ask --gcp \
  --gcp-project my-project \
  --cluster my-gke-cluster \
  "show me all pods"

clanker k8s ask "which pods are using the most memory"

clanker k8s ask "why is my pod crashing"

Create EKS flags

--nodes
integer
default:"1"
Number of worker nodes
--node-type
string
default:"t3.small"
EC2 instance type for nodes
--version
string
default:"1.29"
Kubernetes version
--plan
boolean
default:"false"
Show plan without applying
--apply
boolean
default:"false"
Apply the plan (default prompts for confirmation)

Create GKE flags

--gcp-project
string
required
GCP project ID
--gcp-region
string
default:"us-central1"
GCP region for the cluster
--nodes
integer
default:"1"
Number of worker nodes
--node-type
string
default:"e2-standard-2"
GCE machine type for nodes
--version
string
Kubernetes version (default: GKE default)
--preemptible
boolean
default:"false"
Use preemptible VMs for nodes
--plan
boolean
default:"false"
Show plan without applying
--apply
boolean
default:"false"
Apply the plan

Create kubeadm flags

--workers
integer
default:"1"
Number of worker nodes
--node-type
string
default:"t3.small"
EC2 instance type for nodes
--key-pair
string
AWS key pair name for SSH access (auto-creates if not exists)
--ssh-key
string
Path to SSH private key (default: ~/.ssh/<key-pair>)
--version
string
default:"1.29"
Kubernetes version
--plan
boolean
default:"false"
Show plan without applying
--apply
boolean
default:"false"
Apply the plan

Deploy flags

--name
string
Deployment name (default: image name)
--port
integer
default:"80"
Container port to expose
--replicas
integer
default:"1"
Number of replicas
--namespace
string
default:"default"
Kubernetes namespace
--plan
boolean
default:"false"
Show plan without applying
--apply
boolean
default:"false"
Apply the plan

Resources flags

--cluster
string
Cluster name (optional, uses current context if not specified)
--output
string
default:"json"
Output format (json or yaml)

Logs flags

--container
string
Container name
--follow
boolean
default:"false"
Follow log output
--previous
boolean
default:"false"
Get logs from previous terminated container
--tail
integer
default:"100"
Number of lines from end of logs
--since
string
Show logs since duration (e.g., 1h, 30m)
--timestamps
boolean
default:"false"
Include timestamps in output
--all-containers
boolean
default:"false"
Get logs from all containers in pod
--namespace
string
default:"default"
Namespace

Stats flags

--sort-by
string
Sort by cpu or memory
--output
string
default:"table"
Output format (table, json, or yaml)
--namespace
string
default:"default"
Namespace for pod metrics
--all-namespaces
boolean
default:"false"
Get metrics from all namespaces
--containers
boolean
default:"false"
Show container-level metrics for pod

Ask flags

--cluster
string
Kubernetes cluster name (EKS or GKE cluster name)
--profile
string
AWS profile for EKS clusters
--kubeconfig
string
Path to kubeconfig file (default: ~/.kube/config)
--context
string
kubectl context to use (overrides --cluster)
--namespace
string
Default namespace for queries (default: all namespaces)
--ai-profile
string
AI profile to use for LLM queries
--debug
boolean
default:"false"
Enable debug output
--gcp
boolean
default:"false"
Use GKE cluster instead of EKS
--gcp-project
string
GCP project ID for GKE clusters
--gcp-region
string
GCP region for GKE clusters

Examples

Create and manage EKS cluster

# Create cluster
clanker k8s create eks prod-cluster \
  --nodes 3 \
  --node-type t3.medium \
  --version 1.29

# Deploy application
clanker k8s deploy nginx --name web-server --port 80

# Get cluster resources
clanker k8s resources --cluster prod-cluster

# Query with natural language
clanker k8s ask --cluster prod-cluster "show me all deployments"

# Delete cluster
clanker k8s delete eks prod-cluster

Monitor cluster health

# Get node metrics
clanker k8s stats nodes --sort-by memory

# Get pod metrics across all namespaces
clanker k8s stats pods -A --sort-by cpu

# Get cluster-wide metrics
clanker k8s stats cluster -o json

# Check specific pod
clanker k8s stats pod my-app --containers

# Get logs with errors
clanker k8s logs my-app --tail 500 | grep ERROR

See also

Build docs developers (and LLMs) love