KubernetesFlux集群管理技能Skill kubernetes-flux

这个技能用于Kubernetes集群的管理和故障排除,支持查询pods、deployments、services、logs和events,以及上下文切换、扩展和滚动管理。适用于Kubernetes调试、监控和操作,是DevOps和GitOps工作流的关键工具。关键词:Kubernetes, 集群管理, 故障排除, DevOps, GitOps, kubectl, 云计算, 容器编排

Docker/K8s 0 次安装 0 次浏览 更新于 3/10/2026

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 kustomizationsflux tree kustomization <name> — 托管对象。

技巧: 使用 flux get sources gitflux get kustomizations 查看同步状态。按需协调:flux reconcile kustomization <name> --with-source。在安装脚本中使用 FLUX_VERSION 固定版本。使用GitOps时,优先使用Git而非Helm来管理应用清单。

认证和培训

Kubernetes: CKA / CKAD(Linux Foundation)。Flux: GitOps with Flux (LFS269)技能数据: 引导、协调、状态(flux checkflux get all)、树状视图;GitOps工作流。

钩子和工作流

建议的钩子: 预应用:flux check。推送后(到Flux使用的Git仓库):可选协调触发。始终与 devops 技能一起使用以用于GitOps集群。

工作流: 始终与 devops 技能一起使用。流程:引导或协调;使用 flux get allflux 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 超时 检查集群健康

相关

内存协议(必须)

开始前:

cat .claude/context/memory/learnings.md

完成后: 记录任何发现的新模式或异常。

假设中断:您的上下文可能会重置。如果不在内存中,则未发生。