name: kubernetes-flux description: Kubernetes集群管理和故障排除。查询pods、deployments、services、logs和events。支持上下文切换、扩展和滚动管理。用于Kubernetes调试、监控和操作。 version: 1.0 model: sonnet invoked_by: both user_invocable: true tools: [Read, Write, Bash] best_practices:
- 操作前验证kubectl配置
- 使用命名空间标志以提高清晰度
- 集群操作前检查当前上下文
- 避免未确认的破坏性操作
- 在输出中屏蔽秘密 error_handling: graceful streaming: supported safety_level: high verified: false lastVerifiedAt: 2026-02-19T05:29:09.098Z
Kubernetes Flux 技能
安装
该技能调用 Flux CLI。安装方法:
- macOS/Linux (Homebrew):
brew install fluxcd/tap/flux - macOS/Linux (脚本):
curl -s https://fluxcd.io/install.sh | sudo bash - Windows (winget):
winget install -e --id FluxCD.Flux - Windows (Chocolatey):
choco install flux - 自定义目录:
curl -s https://fluxcd.io/install.sh | bash -s ~/.local/bin
验证:flux --version。然后使用 flux bootstrap 部署控制器(如果需要)。
速查表和最佳实践
引导: flux bootstrap git --url=ssh://git@host/repo.git --path=clusters/my-cluster;根据需要使--branch、--interval、--private-key-file 或 --token-auth。
状态: flux check — 控制器/CRDs;flux get all -A — 所有资源;flux get kustomizations;flux tree kustomization <name> — 托管对象。
技巧: 使用 flux get sources git 和 flux get kustomizations 查看同步状态。按需协调:flux reconcile kustomization <name> --with-source。在安装脚本中使用 FLUX_VERSION 固定版本。使用GitOps时,优先使用Git而非Helm来管理应用清单。
认证和培训
Kubernetes: CKA / CKAD(Linux Foundation)。Flux: GitOps with Flux (LFS269)。技能数据: 引导、协调、状态(flux check、flux get all)、树状视图;GitOps工作流。
钩子和工作流
建议的钩子: 预应用:flux check。推送后(到Flux使用的Git仓库):可选协调触发。始终与 devops 技能一起使用以用于GitOps集群。
工作流: 始终与 devops 技能一起使用。流程:引导或协调;使用 flux get all、flux tree kustomization 调试。参考 gitops-workflow 技能和企业工作流。
概述
该技能通过kubectl提供全面的Kubernetes集群管理,使AI代理能够检查、故障排除和管理Kubernetes资源。
何时使用
- 调试应用程序pods和容器
- 监控部署滚动和状态
- 分析服务网络和端点
- 调查集群事件和错误
- 故障排除性能问题
- 管理应用程序扩展
- 本地开发的端口转发
要求
- 安装并配置kubectl
- 有效的KUBECONFIG文件或默认上下文
- 集群访问凭据
- 适当的RBAC权限
快速参考
# 获取当前命名空间中的pods
kubectl get pods
# 获取特定命名空间中的pods
kubectl get pods -n production
# 使用标签获取pods
kubectl get pods -l app=web -n production
# 描述一个pod
kubectl describe pod my-app-123 -n default
# 获取pod日志
kubectl logs my-app-123 -n default
# 获取带尾部的日志
kubectl logs my-app-123 -n default --tail=100
# 获取自指定时间以来的日志
kubectl logs my-app-123 -n default --since=1h
# 列出最近事件
kubectl get events -n default --sort-by='.lastTimestamp' | tail -20
# 实时监视事件
kubectl get events -n default -w
资源发现
Pods
# 列出所有pods
kubectl get pods -n <namespace>
# 列出pods并宽输出
kubectl get pods -n <namespace> -o wide
# 列出所有命名空间中的pods
kubectl get pods -A
# 按标签过滤
kubectl get pods -l app=nginx -n <namespace>
Deployments
# 列出deployments
kubectl get deployments -n <namespace>
# 获取deployment详情
kubectl describe deployment <name> -n <namespace>
# 检查滚动状态
kubectl rollout status deployment/<name> -n <namespace>
Services
# 列出services
kubectl get svc -n <namespace>
# 描述service
kubectl describe svc <name> -n <namespace>
# 获取端点
kubectl get endpoints <name> -n <namespace>
ConfigMaps 和 Secrets
# 列出ConfigMaps
kubectl get configmaps -n <namespace>
# 描述ConfigMap
kubectl describe configmap <name> -n <namespace>
# 获取ConfigMap数据
kubectl get configmap <name> -n <namespace> -o yaml
# 列出Secrets(仅名称)
kubectl get secrets -n <namespace>
# 描述Secret(值被屏蔽)
kubectl describe secret <name> -n <namespace>
Namespaces
# 列出命名空间
kubectl get namespaces
# 获取命名空间详情
kubectl describe namespace <name>
故障排除
Pod 调试
# 描述pod以查看事件和条件
kubectl describe pod <name> -n <namespace>
# 获取pod日志
kubectl logs <pod-name> -n <namespace>
# 从特定容器获取日志
kubectl logs <pod-name> -c <container-name> -n <namespace>
# 获取先前容器日志(崩溃后)
kubectl logs <pod-name> -n <namespace> --previous
# 进入pod
kubectl exec -it <pod-name> -n <namespace> -- /bin/sh
# 在pod中运行命令
kubectl exec <pod-name> -n <namespace> -- ls -la /app
事件
# 按时间排序列出事件
kubectl get events -n <namespace> --sort-by='.lastTimestamp'
# 过滤警告事件
kubectl get events -n <namespace> --field-selector type=Warning
# 实时监视事件
kubectl get events -n <namespace> -w
管理操作
扩展
# 扩展deployment
kubectl scale deployment <name> --replicas=5 -n <namespace>
# 自动扩展deployment
kubectl autoscale deployment <name> --min=2 --max=10 --cpu-percent=80 -n <namespace>
滚动
# 检查滚动状态
kubectl rollout status deployment/<name> -n <namespace>
# 查看滚动历史
kubectl rollout history deployment/<name> -n <namespace>
# 回滚到先前版本
kubectl rollout undo deployment/<name> -n <namespace>
# 回滚到特定修订版
kubectl rollout undo deployment/<name> --to-revision=2 -n <namespace>
端口转发
# 将本地端口转发到pod
kubectl port-forward <pod-name> 8080:80 -n <namespace>
# 转发到service
kubectl port-forward svc/<service-name> 8080:80 -n <namespace>
上下文管理
# 获取当前上下文
kubectl config current-context
# 列出所有上下文
kubectl config get-contexts
# 切换上下文
kubectl config use-context <context-name>
# 设置默认命名空间
kubectl config set-context --current --namespace=<namespace>
常见工作流
故障排除失败Pod
# 1. 找到问题pod
kubectl get pods -n production
# 2. 描述事件
kubectl describe pod <pod-name> -n production
# 3. 检查事件
kubectl get events -n production --sort-by='.lastTimestamp' | tail -20
# 4. 获取日志
kubectl logs <pod-name> -n production --tail=200
监控部署滚动
# 1. 检查部署状态
kubectl get deployments -n production
# 2. 监视滚动
kubectl rollout status deployment/<name> -n production
# 3. 监视pods
kubectl get pods -l app=<app-name> -n production -w
调试服务连通性
# 1. 检查service
kubectl describe svc <name> -n <namespace>
# 2. 检查端点
kubectl get endpoints <name> -n <namespace>
# 3. 检查后端pods
kubectl get pods -l <service-selector> -n <namespace>
# 4. 端口转发以测试
kubectl port-forward svc/<name> 8080:80 -n <namespace>
安全特性
阻止的操作
以下操作危险,需要确认:
kubectl delete命令- 破坏性exec命令(rm, dd, mkfs)
- 在生产环境中扩展到0副本
屏蔽输出
秘密值始终被屏蔽。仅显示元数据。
错误处理
| 错误 | 原因 | 修复方法 |
|---|---|---|
kubectl not found |
未安装 | 安装kubectl |
Unable to connect |
集群不可达 | 检查网络/VPN |
Forbidden |
RBAC权限不足 | 请求权限 |
NotFound |
资源缺失 | 验证名称/命名空间 |
context deadline exceeded |
超时 | 检查集群健康 |
相关
- kubectl 文档: https://kubernetes.io/docs/reference/kubectl/
- Kubernetes API: https://kubernetes.io/docs/reference/kubernetes-api/
内存协议(必须)
开始前:
cat .claude/context/memory/learnings.md
完成后: 记录任何发现的新模式或异常。
假设中断:您的上下文可能会重置。如果不在内存中,则未发生。