Skip to content
Back to skills

Kubernetes Operations

BSecurity

Kubernetes operations — deployment, management, troubleshooting, kubectl mastery. Use when the user mentions K8s, kubectl, pods, deployments, services, ingress, or cluster stability.

  • 58 stars
  • 0 votes
  • 0 copies
  • 13 views
  • Added February 8, 2026
devopsgobashnodekubernetesterraformdebuggingapisecurity

Works with

  • cli
  • api

Security analysis

B75/100
  • criticalAccesses sensitive system or user directories

Pro scans all 2 files and shows the line behind each finding

Scanned September 25, 2026

npx -y skills add laurigates/claude-plugins --skill kubernetes-operations --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Kubernetes Operations?

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

Security grade badge for Kubernetes Operations
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/laurigates-kubernetes-operations/badge)](https://www.skillsdirectory.com/skills/laurigates-kubernetes-operations)

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
---
created: 2025-12-16
modified: 2026-09-24
reviewed: 2026-04-25
name: kubernetes-operations
description: "Kubernetes operations — deployment, management, troubleshooting, kubectl mastery. Use when the user mentions K8s, kubectl, pods, deployments, services, ingress, or cluster stability."
user-invocable: false
allowed-tools: Glob, Grep, Read, Bash(kubectl *), Bash(helm *), Bash(kustomize *), Edit, Write, TodoWrite, WebFetch
---

# Kubernetes Operations

Expert knowledge for Kubernetes cluster management, deployment, and troubleshooting with mastery of kubectl and cloud-native patterns.

## When to Use This Skill

| Use this skill when... | Use <sibling> instead when... |
|---|---|
| Working with kubectl against pods, deployments, services, ingress, ConfigMaps, or Secrets | Use kubectl-debugging when you specifically need `kubectl debug` ephemeral containers or node sessions |
| Applying or inspecting raw Kubernetes manifests and kustomize overlays | Use helm-release-management when the workload is delivered as a Helm chart |
| Diagnosing cluster-level networking, storage, or workload health | Use argocd-login when the issue is authenticating to ArgoCD before any cluster operation |

## Core Expertise

**Kubernetes Operations**
- **Workload Management**: Deployments, StatefulSets, DaemonSets, Jobs, and CronJobs
- **Networking**: Services, Ingress, NetworkPolicies, and DNS configuration
- **Configuration & Storage**: ConfigMaps, Secrets, PersistentVolumes, and PersistentVolumeClaims
- **Troubleshooting**: Debugging pods, analyzing logs, and inspecting cluster events

## Cluster Operations Process

1. **Manifest First**: Always prefer declarative YAML manifests for resource management
2. **Validate & Dry-Run**: Use `kubectl apply --dry-run=client` to validate changes
3. **Inspect & Verify**: After applying changes, verify with `kubectl get`, `kubectl describe`, `kubectl logs`
4. **Monitor Health**: Continuously check status of nodes, pods, and services
5. **Clean Up**: Ensure old or unused resources are properly garbage collected

## Essential Commands

```bash
# Resource management
kubectl apply -f manifest.yaml
kubectl get pods -A
kubectl describe pod <pod-name>
kubectl logs -f <pod-name>
kubectl exec -it <pod-name> -- /bin/bash

# Debugging
kubectl get events --sort-by='.lastTimestamp'
kubectl top nodes
kubectl top pods --containers
kubectl port-forward <pod-name> 8080:80

# Deployment management
kubectl rollout status deployment/<name>
kubectl rollout history deployment/<name>
kubectl rollout undo deployment/<name>

# Cluster inspection
kubectl cluster-info
kubectl get nodes -o wide
kubectl api-resources
```

## Key Debugging Patterns

**Pod Debugging**
```bash
# Pod inspection
kubectl describe pod <pod-name>
kubectl get pod <pod-name> -o yaml
kubectl logs <pod-name> --previous

# Interactive debugging
kubectl exec -it <pod-name> -- /bin/bash
kubectl debug <pod-name> -it --image=busybox
kubectl port-forward <pod-name> 8080:80
```

**Networking Troubleshooting**
```bash
# Service debugging
kubectl get svc -o wide
kubectl get endpoints
kubectl describe svc <service>

# Network connectivity
kubectl run test-pod --image=busybox -it --rm -- sh
# Inside pod: nslookup, wget, nc commands
```

**Common Issues**
```bash
# CrashLoopBackOff debugging
kubectl logs <pod> --previous
kubectl describe pod <pod>
kubectl get events --field-selector involvedObject.name=<pod>

# Resource constraints
kubectl top pod <pod>
kubectl describe pod <pod> | grep -A 5 Limits

# State management
kubectl state list
kubectl state show <resource>
```

## Best Practices

**Context Safety (CRITICAL)**
- **Always specify `--context`** explicitly in every kubectl command
- Never rely on the current context - it may have been changed by another process
- Use `kubectl --context=<context-name> get pods` format for all operations
- This prevents accidental operations on the wrong cluster (e.g., running production commands against staging)

```bash
# CORRECT: Explicit context
kubectl --context=gke_myproject_us-central1_prod get pods
kubectl --context=staging-cluster apply -f deployment.yaml

# WRONG: Relying on current context
kubectl get pods  # Which cluster is this targeting?
```

**GKE: kubectl 403 as the wrong Google account**

`gke-gcloud-auth-plugin` caches its token in
`~/.kube/gke_gcloud_auth_plugin_cache`, and that cache survives a
`gcloud auth login` account switch. kubectl keeps authenticating as the old
account (often a personal one) and gets 403s. Clear the cache, then refresh the
credentials:

```bash
rm -f ~/.kube/gke_gcloud_auth_plugin_cache
gcloud container clusters get-credentials <cluster> --region <region> --project <project>
```

`gcloud auth application-default login` sets Application Default Credentials for
SDKs and Terraform. It does not change the account kubectl uses.

**Resource Definitions**
- Use declarative YAML manifests
- Implement proper labels and selectors
- Define resource requests and limits
- Configure health checks (liveness/readiness probes)

**Security**
- Use NetworkPolicies to restrict traffic
- Implement RBAC for access control
- Store sensitive data in Secrets
- Run containers as non-root users

**Monitoring**
- Configure proper logging and metrics
- Set up alerts for critical conditions
- Use health checks and readiness probes
- Monitor resource usage and quotas

## Agentic Optimizations

| Context | Command |
|---------|---------|
| Pod status (structured) | `kubectl get pods -n <ns> -o json \| jq '.items[] \| {name:.metadata.name, status:.status.phase}'` |
| Quick overview | `kubectl get pods -n <ns> -o wide` |
| Events (compact) | `kubectl get events -n <ns> --sort-by='.lastTimestamp' -o json` |
| Resource details | `kubectl get <resource> -o json` |
| Logs (bounded) | `kubectl logs <pod> -n <ns> --tail=50` |

For detailed debugging commands, troubleshooting patterns, Helm workflows, and advanced K8s operations, see REFERENCE.md.

Files in this skill

  • REFERENCE.md22.5 KB
  • SKILL.md4.7 KB

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…