k8s-kind
Manage kind (Kubernetes IN Docker) local clusters. Use when creating, testing, or developing with local Kubernetes clusters in Docker containers.
Works with
---
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
---
# 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 operationsMore Testing skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
setup-pre-commit
mattpocock/skills
Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing.
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.

