ClawSkills logoClawSkills

kubectl

通过 kubectl 命令执行和管理 Kubernetes 集群。查询资源、部署应用、调试容器、管理配置以及监控集群

介绍

# kubectl Skill

使用 `kubectl` 命令行工具执行 Kubernetes 集群管理操作。

## 概述

该技能使代理能够: - **查询资源** — 列出并获取有关 Pod、部署、服务、节点等的详细信息 - **部署与更新** — 创建、应用、修补和更新 Kubernetes 资源 - **调试与故障排除** — 查看日志、在容器中执行命令、检查事件 - **管理配置** — 更新 kubeconfig、切换上下文、管理命名空间 - **监控健康状态** — 检查资源使用情况、发布状态、事件和 Pod 状况 - **执行操作** — 扩展部署、驱逐节点、管理污点和标签

## 先决条件

1. 已安装 **kubectl 二进制文件** 并可在 PATH 中访问 (v1.20+) 2. 已配置 **kubeconfig** 文件,包含集群凭证 (默认:`~/.kube/config`) 3. 与 Kubernetes 集群的 **活动连接**

## 快速设置

### 安装 kubectl

**macOS:** ```bash brew install kubernetes-cli ```

**Linux:** ```bash apt-get install -y kubectl # Ubuntu/Debian yum install -y kubectl # RHEL/CentOS ```

**验证:** ```bash kubectl version --client kubectl cluster-info # Test connection ```

## 常用命令

### 查询资源 ```bash kubectl get pods # List all pods in current namespace kubectl get pods -A # All namespaces kubectl get pods -o wide # More columns kubectl get nodes # List nodes kubectl describe pod POD_NAME # Detailed info with events ```

### 查看日志 ```bash kubectl logs POD_NAME # Get logs kubectl logs -f POD_NAME # Follow logs (tail -f) kubectl logs POD_NAME -c CONTAINER # Specific container kubectl logs POD_NAME --previous # Previous container logs ```

### 执行命令 ```bash kubectl exec -it POD_NAME -- /bin/bash # Interactive shell kubectl exec POD_NAME -- COMMAND # Run single command ```

### 部署应用 ```bash kubectl apply -f deployment.yaml # Apply config kubectl create -f deployment.yaml # Create resource kubectl apply -f deployment.yaml --dry-run=client # Test ```

### 更新应用 ```bash kubectl set image deployment/APP IMAGE=IMAGE:TAG # Update image kubectl scale deployment/APP --replicas=3 # Scale pods kubectl rollout status deployment/APP # Check status kubectl rollout undo deployment/APP # Rollback ```

### 管理配置 ```bash kubectl config view # Show kubeconfig kubectl config get-contexts # List contexts kubectl config use-context CONTEXT # Switch context ```

## 常见模式

### 调试 Pod ```bash # 1. Identify the issue kubectl describe pod POD_NAME

# 2. Check logs kubectl logs POD_NAME kubectl logs POD_NAME --previous

# 3. Execute debug commands kubectl exec -it POD_NAME -- /bin/bash

# 4. Check events kubectl get events --sort-by='.lastTimestamp' ```

### 部署新版本 ```bash # 1. Update image kubectl set image deployment/MY_APP my-app=my-app:v2

# 2. Monitor rollout kubectl rollout status deployment/MY_APP -w

# 3. Verify kubectl get pods -l app=my-app

# 4. Rollback if needed kubectl rollout undo deployment/MY_APP ```

### 准备节点维护 ```bash # 1. Drain node (evicts all pods) kubectl drain NODE_NAME --ignore-daemonsets

# 2. Do maintenance # ...

# 3. Bring back online kubectl uncordon NODE_NAME ```

## 输出格式

`--output` (`-o`) 标志支持多种格式:

- `table` — 默认表格格式 - `wide` — 包含附加列的扩展表格 - `json` — JSON 格式 (与 `jq` 配合使用时非常有用) - `yaml` — YAML 格式 - `jsonpath` — JSONPath 表达式 - `custom-columns` — 定义自定义输出列 - `name` — 仅资源名称

**示例:** ```bash kubectl get pods -o json | jq '.items[0].metadata.name' kubectl get pods -o jsonpath='{.items[*].metadata.name}' kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase ```

## 全局标志 (适用于所有命令)

```bash -n, --namespace=<ns> # Operate in specific namespace -A, --all-namespaces # Operate across all namespaces --context=<context> # Use specific kubeconfig context -o, --output=<format> # Output format (json, yaml, table, etc.) --dry-run=<mode> # Dry-run mode (none, client, server) -l, --selector=<labels> # Filter by labels --field-selector=<selector> # Filter by fields -v, --v=<int> # Verbosity level (0-9) ```

## 试运行模式

- `--dry-run=client` — 快速客户端验证 (安全测试命令) - `--dry-run=server` — 服务端验证 (更准确) - `--dry-run=none` — 实际执行 (默认)

**始终先使用 `--dry-run=client` 进行测试:** ```bash kubectl apply -f manifest.yaml --dry-run=client ```

## 高级主题

有关详细的参考资料、逐命令文档、故障排除指南和高级工作流,请参阅: - [references/REFERENCE.md](references/REFERENCE.md) — 完整的 kubectl 命令参考 - [scripts/](scripts/) — 用于常见任务的辅助脚本

## 实用技巧

1. **使用标签选择器进行批量操作:** ```bash kubectl delete pods -l app=myapp kubectl get pods -l env=prod,tier=backend ```

2. **实时监控资源:** ```bash kubectl get pods -w # Watch for changes ```

3. **使用 `-A` 标志针对所有命名空间:** ```bash kubectl get pods -A # See pods everywhere ```

4. **保存输出以供后续比较:** ```bash kubectl get deployment my-app -o yaml > deployment-backup.yaml ```

5. **删除前请检查:** ```bash kubectl delete pod POD_NAME --dry-run=client ```

## 获取帮助

```bash kubectl help # General help kubectl COMMAND --help # Command help kubectl explain pods # Resource documentation kubectl explain pods.spec # Field documentation ```

## 环境变量

- `KUBECONFIG` — kubeconfig 文件的路径 (可包含多个路径,用 `:` 分隔) - `KUBECTL_CONTEXT` — 覆盖默认上下文

## 资源

- [官方 kubectl 文档](https://kubernetes.io/docs/reference/kubectl/) - [kubectl 备忘单](https://kubernetes.io/docs/reference/kubectl/cheatsheet/) - [Kubernetes API 参考](https://kubernetes.io/docs/reference/generated/kubernetes-api/) - [代理技能规范](https://agentskills.io/)

---

**版本:** 1.0.0 **许可证:** MIT **兼容性:** kubectl v1.20+, Kubernetes v1.20+

更多产品