Skip to content
Back to skills

K8s Kind

ASecurity

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

  • 57 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 31, 2026
devopspythongobashnodedockerkubernetestestingdebuggingapici/cd

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned May 31, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill k8s-kind --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of K8s Kind?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for K8s Kind
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-k8s-kind/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-k8s-kind)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: k8s-kind
description: Manage kind (Kubernetes IN Docker) local clusters. Use when creating, testing, or developing with local Kubernetes clusters in Docker containers.
license: Apache-2.0
metadata:
  author: rohitg00
  version: "1.0.0"
  tools: 32
  category: development
---

# 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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.