kubernetes-skills/claude/k8s-kubevirt/SKILL.md
Virtual machine management with KubeVirt on Kubernetes. Use when creating, managing, or troubleshooting VMs running on Kubernetes clusters.
npx skillsauth add rohitg00/kubectl-mcp-server k8s-kubevirtInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage virtual machines on Kubernetes using kubectl-mcp-server's KubeVirt tools (13 tools).
Use this skill when:
| Priority | Rule | Impact | Tools |
|----------|------|--------|-------|
| 1 | Detect KubeVirt installation first | CRITICAL | kubevirt_detect_tool |
| 2 | Check VM status before operations | HIGH | kubevirt_vm_get_tool |
| 3 | List VMIs for running VMs | HIGH | kubevirt_vmis_list_tool |
| 4 | Use instance types for consistency | MEDIUM | kubevirt_instancetypes_list_tool |
| Task | Tool | Example |
|------|------|---------|
| Detect KubeVirt | kubevirt_detect_tool | kubevirt_detect_tool() |
| List VMs | kubevirt_vms_list_tool | kubevirt_vms_list_tool(namespace) |
| Start VM | kubevirt_vm_start_tool | kubevirt_vm_start_tool(name, namespace) |
| Live migrate VM | kubevirt_vm_migrate_tool | kubevirt_vm_migrate_tool(name, namespace) |
kubevirt_detect_tool()
# List VirtualMachines
kubevirt_vms_list_tool(namespace="default")
# List VirtualMachineInstances (running VMs)
kubevirt_vmis_list_tool(namespace="default")
# Get VM definition
kubevirt_vm_get_tool(name="my-vm", namespace="default")
# Shows:
# - Spec (CPU, memory, disks)
# - Running status
# - Conditions
kubevirt_vm_start_tool(name="my-vm", namespace="default")
kubevirt_vm_stop_tool(name="my-vm", namespace="default")
kubevirt_vm_restart_tool(name="my-vm", namespace="default")
# Pause (freeze CPU)
kubevirt_vm_pause_tool(name="my-vm", namespace="default")
# Unpause
kubevirt_vm_unpause_tool(name="my-vm", namespace="default")
# Migrate VM to another node
kubevirt_vm_migrate_tool(name="my-vm", namespace="default")
# Check migration status
kubevirt_vmis_list_tool(namespace="default")
# Look for: migrationState
# List available instance types
kubevirt_instancetypes_list_tool()
# Instance types define:
# - CPU count
# - Memory size
# - GPU allocation
# List data volumes (persistent VM disks)
kubevirt_datavolumes_list_tool(namespace="default")
# List data sources (golden images)
kubevirt_datasources_list_tool(namespace="default")
kubectl_apply(manifest="""
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: my-vm
namespace: default
spec:
running: true
template:
metadata:
labels:
kubevirt.io/vm: my-vm
spec:
domain:
cpu:
cores: 2
memory:
guest: 4Gi
devices:
disks:
- name: rootdisk
disk:
bus: virtio
- name: cloudinitdisk
disk:
bus: virtio
volumes:
- name: rootdisk
containerDisk:
image: quay.io/kubevirt/fedora-cloud-container-disk-demo
- name: cloudinitdisk
cloudInitNoCloud:
userData: |
#cloud-config
password: fedora
chpasswd: { expire: False }
""")
kubectl_apply(manifest="""
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: vm-with-pvc
namespace: default
spec:
running: true
dataVolumeTemplates:
- metadata:
name: vm-with-pvc-disk
spec:
source:
http:
url: https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
storage:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
template:
spec:
domain:
cpu:
cores: 2
memory:
guest: 4Gi
devices:
disks:
- name: rootdisk
disk:
bus: virtio
volumes:
- name: rootdisk
dataVolume:
name: vm-with-pvc-disk
""")
1. kubevirt_vm_get_tool(name, namespace) # Check status/conditions
2. kubevirt_vmis_list_tool(namespace) # Check VMI exists
3. get_events(namespace) # Check events
4. get_pods(namespace, label_selector="kubevirt.io/vm=<name>") # Check virt-launcher
1. kubevirt_vmis_list_tool(namespace) # Check migrationState
2. get_events(namespace) # Check events
3. # Common issues:
# - No suitable target node
# - Insufficient resources
# - Shared storage required
development
Manage vCluster (virtual Kubernetes clusters) instances using vind. Use when creating, managing, or operating lightweight virtual clusters for development, testing, or multi-tenancy.
development
Debug Kubernetes pods, nodes, and workloads. Use when pods are failing, containers crash, nodes are unhealthy, or users mention debugging, troubleshooting, or diagnosing Kubernetes issues.
devops
Kubernetes storage management for PVCs, storage classes, and persistent volumes. Use when provisioning storage, managing volumes, or troubleshooting storage issues.
testing
Manage Istio service mesh for traffic management, security, and observability. Use for traffic shifting, canary releases, mTLS, and service mesh troubleshooting.