k8s-kind

Manage kind (Kubernetes IN Docker) local clusters. Use when creating, testing, or developing with local Kubernetes clusters in Docker containers.

16 stars

Best use case

k8s-kind is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Manage kind (Kubernetes IN Docker) local clusters. Use when creating, testing, or developing with local Kubernetes clusters in Docker containers.

Teams using k8s-kind should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/k8s-kind/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/development/k8s-kind/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/k8s-kind/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How k8s-kind Compares

Feature / Agentk8s-kindStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Manage kind (Kubernetes IN Docker) local clusters. Use when creating, testing, or developing with local Kubernetes clusters in Docker containers.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# kind (Kubernetes IN Docker) Management

Manage local Kubernetes clusters using kubectl-mcp-server's kind tools (32 tools).

kind enables running local Kubernetes clusters using Docker container "nodes". It's ideal for local development, CI/CD testing, and testing across Kubernetes versions.

## When to Apply

Use this skill when:
- User mentions: "kind", "local cluster", "Kubernetes in Docker", "dev cluster"
- Operations: creating local clusters, loading images, CI/CD testing
- Keywords: "local development", "test cluster", "load image", "multi-node"

## Priority Rules

| Priority | Rule | Impact | Tools |
|----------|------|--------|-------|
| 1 | Detect kind CLI first | CRITICAL | `kind_detect_tool` |
| 2 | Generate config for complex setups | HIGH | `kind_config_generate_tool` |
| 3 | Load images after cluster creation | HIGH | `kind_load_image_tool` |
| 4 | Export logs for debugging | MEDIUM | `kind_export_logs_tool` |

## Quick Reference

| Task | Tool | Example |
|------|------|---------|
| Detect kind | `kind_detect_tool` | `kind_detect_tool()` |
| Create cluster | `kind_create_cluster_tool` | `kind_create_cluster_tool(name)` |
| Load image | `kind_load_image_tool` | `kind_load_image_tool(images, name)` |
| Get kubeconfig | `kind_get_kubeconfig_tool` | `kind_get_kubeconfig_tool(name)` |

## Prerequisites

- **kind CLI**: Required for all kind tools
  ```bash
  # macOS
  brew install kind
  # or download binary
  curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-$(uname)-amd64
  chmod +x ./kind && sudo mv ./kind /usr/local/bin/kind
  ```
- **Docker**: Required (kind runs clusters in Docker containers)

## Check Installation

```python
kind_detect_tool()

kind_version_tool()

kind_provider_info_tool()
```

## List Clusters

```python
kind_list_clusters_tool()
```

## Get Cluster Information

```python
kind_cluster_info_tool(name="my-cluster")

kind_cluster_status_tool(name="my-cluster")

kind_get_nodes_tool(name="my-cluster")

kind_node_labels_tool(name="my-cluster")
```

## Configuration Management

### Generate Config

```python
kind_config_generate_tool()

kind_config_generate_tool(workers=2, control_planes=1)

kind_config_generate_tool(workers=2, ingress=True, registry=True)

kind_config_generate_tool(control_planes=3, workers=3)
```

### Validate Config

```python
kind_config_validate_tool(config_path="/path/to/kind.yaml")
```

### Show Running Config

```python
kind_config_show_tool(name="my-cluster")
```

### Available Images

```python
kind_available_images_tool()
```

## Get Kubeconfig

```python
kind_get_kubeconfig_tool(name="my-cluster")

kind_get_kubeconfig_tool(name="my-cluster", internal=True)
```

## Export Logs

```python
kind_export_logs_tool(name="my-cluster")

kind_export_logs_tool(name="my-cluster", output_dir="/tmp/kind-logs")
```

## Cluster Lifecycle

### Create Cluster

```python
kind_create_cluster_tool()

kind_create_cluster_tool(name="dev-cluster")

kind_create_cluster_tool(
    name="v129-cluster",
    image="kindest/node:v1.29.0"
)

kind_create_cluster_tool(
    name="multi-node",
    config="kind-config.yaml"
)
```

### Multi-Node Config Example

Create a file `kind-config.yaml`:

```yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 30000
    hostPort: 30000
    protocol: TCP
- role: worker
- role: worker
```

### Delete Cluster

```python
kind_delete_cluster_tool(name="dev-cluster")

kind_delete_all_clusters_tool()
```

## Local Registry Integration

### Create Registry

```python
kind_registry_create_tool()

kind_registry_create_tool(name="my-registry", port=5001)
```

### Connect Cluster to Registry

```python
kind_registry_connect_tool(cluster_name="my-cluster")
```

### Check Registry Status

```python
kind_registry_status_tool()
```

### Registry Workflow

```python
kind_registry_create_tool()

config = kind_config_generate_tool(registry=True)

kind_create_cluster_tool(name="dev", config="/tmp/kind.yaml")

kind_registry_connect_tool(cluster_name="dev")
```

## Image Loading (Key Feature!)

The ability to load local Docker images directly into kind clusters is one of its most powerful features for local development.

### Load Docker Images

```python
kind_load_image_tool(images="myapp:latest", name="my-cluster")

kind_load_image_tool(
    images="myapp:latest,mydb:latest,myweb:v1",
    name="my-cluster"
)
```

### Load from Archive

```python
kind_load_image_archive_tool(
    archive="/path/to/images.tar",
    name="my-cluster"
)
```

### List Images on Cluster

```python
kind_images_list_tool(cluster="my-cluster")

kind_images_list_tool(cluster="my-cluster", node="my-cluster-worker")
```

## Node Management

### Inspect Node

```python
kind_node_inspect_tool(node="kind-control-plane")
```

### Get Node Logs

```python
kind_node_logs_tool(node="kind-control-plane")

kind_node_logs_tool(node="kind-control-plane", tail=200)
```

### Execute Command on Node

```python
kind_node_exec_tool(
    node="kind-control-plane",
    command="crictl images"
)

kind_node_exec_tool(
    node="kind-control-plane",
    command="journalctl -u kubelet --no-pager -n 50"
)
```

### Restart Node

```python
kind_node_restart_tool(node="kind-worker")
```

## Networking

### Inspect Network

```python
kind_network_inspect_tool()
```

### List Port Mappings

```python
kind_port_mappings_tool(cluster="my-cluster")
```

### Setup Ingress

```python
kind_ingress_setup_tool(cluster="my-cluster")

kind_ingress_setup_tool(cluster="my-cluster", ingress_type="contour")
```

## Advanced: Build Node Image

Build custom node images from Kubernetes source:

```python
kind_build_node_image_tool()

kind_build_node_image_tool(
    image="my-custom-node:v1.30.0",
    kube_root="/path/to/kubernetes"
)
```

## Update Kubeconfig

```python
kind_set_kubeconfig_tool(name="my-cluster")
```

## Development Workflow

### Quick Local Development

```python
kind_create_cluster_tool(name="dev")

kind_load_image_tool(images="myapp:dev", name="dev")

kubectl_apply(manifest="""
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:dev
        imagePullPolicy: Never
""")
```

### Development with Local Registry

```python
kind_registry_create_tool()

config = kind_config_generate_tool(workers=1, ingress=True, registry=True)

kind_create_cluster_tool(name="dev", config="/tmp/kind-config.yaml")

kind_registry_connect_tool(cluster_name="dev")

kind_ingress_setup_tool(cluster="dev")
```

### CI/CD Testing

```python
kind_create_cluster_tool(
    name="ci-test",
    image="kindest/node:v1.29.0",
    wait="3m"
)

kind_load_image_tool(images="test-image:ci", name="ci-test")

kind_delete_cluster_tool(name="ci-test")
```

### Version Testing

```python
kind_create_cluster_tool(name="v128", image="kindest/node:v1.28.0")
kind_create_cluster_tool(name="v129", image="kindest/node:v1.29.0")
kind_create_cluster_tool(name="v130", image="kindest/node:v1.30.0")

kind_list_clusters_tool()
```

## Troubleshooting

### Cluster Creation Issues

```python
kind_create_cluster_tool(name="debug", retain=True)

kind_export_logs_tool(name="debug")

kind_get_nodes_tool(name="debug")
```

### Cluster Health Check

```python
kind_cluster_status_tool(name="my-cluster")
```

### Node Issues

```python
kind_node_inspect_tool(node="kind-control-plane")

kind_node_logs_tool(node="kind-control-plane")

kind_node_exec_tool(
    node="kind-control-plane",
    command="crictl ps"
)

kind_node_restart_tool(node="kind-worker")
```

### Network Issues

```python
kind_network_inspect_tool()

kind_port_mappings_tool()
```

### Cleanup

```python
kind_delete_cluster_tool(name="broken-cluster")

kind_delete_all_clusters_tool()
```

## CLI Installation

Install kind CLI:

```bash
# macOS (Apple Silicon)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-darwin-arm64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

# macOS (Intel)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-darwin-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

# Linux
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

# Verify
kind version
```

## Tool Reference

### Read-Only Tools (20)
| Tool | Description |
|------|-------------|
| `kind_detect_tool` | Detect CLI installation |
| `kind_version_tool` | Get CLI version |
| `kind_list_clusters_tool` | List all clusters |
| `kind_get_nodes_tool` | List nodes in cluster |
| `kind_get_kubeconfig_tool` | Get kubeconfig |
| `kind_export_logs_tool` | Export cluster logs |
| `kind_cluster_info_tool` | Get cluster info |
| `kind_node_labels_tool` | Get node labels |
| `kind_config_validate_tool` | Validate config file |
| `kind_config_generate_tool` | Generate config YAML |
| `kind_config_show_tool` | Show running config |
| `kind_available_images_tool` | List K8s versions |
| `kind_registry_status_tool` | Check registry status |
| `kind_node_logs_tool` | Get node logs |
| `kind_node_inspect_tool` | Inspect node details |
| `kind_network_inspect_tool` | Inspect Docker network |
| `kind_port_mappings_tool` | List port mappings |
| `kind_cluster_status_tool` | Get cluster health |
| `kind_images_list_tool` | List images on nodes |
| `kind_provider_info_tool` | Get provider info |

### Write Tools (12)
| Tool | Description |
|------|-------------|
| `kind_create_cluster_tool` | Create cluster |
| `kind_delete_cluster_tool` | Delete cluster |
| `kind_delete_all_clusters_tool` | Delete all clusters |
| `kind_load_image_tool` | Load Docker images |
| `kind_load_image_archive_tool` | Load from archive |
| `kind_build_node_image_tool` | Build node image |
| `kind_set_kubeconfig_tool` | Set kubeconfig context |
| `kind_registry_create_tool` | Create local registry |
| `kind_registry_connect_tool` | Connect to registry |
| `kind_node_exec_tool` | Execute on node |
| `kind_node_restart_tool` | Restart node |
| `kind_ingress_setup_tool` | Setup ingress |

## kind vs vind (vCluster)

| Feature | kind | vind (vCluster) |
|---------|------|-----------------|
| Purpose | Local dev/CI clusters | Virtual clusters in existing K8s |
| Isolation | Full clusters in Docker | Virtual namespaces with isolation |
| Resource Usage | Higher (full cluster) | Lower (shares host cluster) |
| Best For | Local testing, CI/CD | Multi-tenancy, dev environments |
| Requires | Docker | Existing K8s cluster |

## Related Skills

- [k8s-vind](../k8s-vind/SKILL.md) - vCluster management
- [k8s-multicluster](../k8s-multicluster/SKILL.md) - Multi-cluster management
- [k8s-helm](../k8s-helm/SKILL.md) - Helm chart operations
- [k8s-operations](../k8s-operations/SKILL.md) - kubectl operations

Related Skills

kind

16
from diegosouzapw/awesome-omni-skill

Manage Kind (Kubernetes in Docker) clusters for local Kagenti development and testing.

Kind Local Kubernetes

16
from diegosouzapw/awesome-omni-skill

This skill should be used when the user asks to "setup Kind", "local Kubernetes", "Kind cluster", "multi-node cluster", "Kubernetes development", "k8s local environment", or works with local Kubernetes clusters using Kind.

bgo

10
from diegosouzapw/awesome-omni-skill

Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.

Coding & Development

runpod

16
from diegosouzapw/awesome-omni-skill

Cloud GPU processing via RunPod serverless. Use when setting up RunPod endpoints, deploying Docker images, managing GPU resources, troubleshooting endpoint issues, or understanding costs. Covers all 5 toolkit images (qwen-edit, realesrgan, propainter, sadtalker, qwen3-tts).

runbook

16
from diegosouzapw/awesome-omni-skill

Generate operational runbooks for services, procedures, or incident response with step-by-step procedures, troubleshooting guides, and escalation paths

Run CI/CD Pipeline Locally

16
from diegosouzapw/awesome-omni-skill

Run the Wavecraft CI checks locally. Prefer the native `cargo xtask` commands for speed; use Docker + `act` only when validating GitHub Actions workflows or Linux-specific behavior.

router-operations

16
from diegosouzapw/awesome-omni-skill

Master orchestration for routing QA, testing, DevOps, observability, and git workflow questions through 15 operational skills

returns-reverse-logistics

16
from diegosouzapw/awesome-omni-skill

Codified expertise for returns authorisation, receipt and inspection, disposition decisions, refund processing, fraud detection, and warranty claims management.

resume-craft

16
from diegosouzapw/awesome-omni-skill

Craft tailored, honest, one-page resumes from job descriptions. Use when the user wants to create, tailor, or improve a resume for a specific job posting. Handles job description analysis, skill gap identification, resume writing, keyword optimization, and PDF generation. Triggers on resume, CV, job application, tailor my resume, craft resume, apply for this job.

resource-scout

16
from diegosouzapw/awesome-omni-skill

Search and discover Claude Code skills and MCP servers from marketplaces, GitHub repositories, and registries. Use when (1) user asks to find skills for a specific task, (2) looking for MCP servers to connect external tools, (3) user mentions "find skill", "search MCP", "discover tools", or "what skills exist for X", (4) before creating a custom skill to check if one already exists.

rails-deployment

16
from diegosouzapw/awesome-omni-skill

Deploy Rails applications to production using Kamal, Docker, and modern deployment strategies. Covers zero-downtime deployments, environment management, database migrations, SSL/TLS, and production configurations.

r2-transfer-service-playbook

16
from diegosouzapw/awesome-omni-skill

Manage changes to the R2 transfer pipeline (Python service, Cloudflare Workers, PHP logger) with mandatory validations, allowlists, and regression checks.