mcpField
K
kubernetes-specialist

kubernetes-specialist

github.com/pedronauck云与 DevOps646197 次安装1 周前更新
代码仓库

关于 kubernetes-specialist

面向 Kubernetes 从业者的技能,涵盖工作负载设计、部署、安全和故障排查,并提供声明式清单指导、主题参考及验证步骤。

主要功能

  1. 01工作负载与架构规划
  2. 02声明式 YAML 清单指导
  3. 03网络、存储与 Helm 参考
  4. 04安全与最小权限实践
  5. 05部署健康状态验证

适用场景

  1. 01规划 Kubernetes 工作负载部署
  2. 02编写安全清单和 Helm chart
  3. 03排查集群或工作负载故障

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pedronauck/skills --skill kubernetes-specialist

安装后在 Claude Code 中输入/kubernetes-specialist确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
configuration.md
cost-optimization.md
custom-operators.md
gitops.md
helm-charts.md
multi-cluster.md
networking.md
service-mesh.md
storage.md
troubleshooting.md
workloads.md

详细介绍

Kubernetes 专家

何时使用此技能

  • 部署工作负载(Deployments、StatefulSets、DaemonSets、Jobs)
  • 配置网络(Services、Ingress、NetworkPolicies)
  • 管理配置(ConfigMaps、Secrets、环境变量)
  • 设置持久化存储(PV、PVC、StorageClasses)
  • 创建用于应用打包的 Helm chart
  • 排查集群和工作负载问题
  • 实施安全最佳实践

核心工作流

  1. 分析需求 — 了解工作负载特性、扩缩容需求和安全要求
  2. 设计架构 — 选择工作负载类型、网络模式和存储方案
  3. 编写清单 — 创建声明式 YAML,并设置适当的资源限制和健康检查
  4. 保障安全 — 应用 RBAC、NetworkPolicies、Pod Security Standards 和最小权限原则
  5. 验证 — 运行 kubectl rollout status、kubectl get pods -w 和 kubectl describe pod <name> 确认运行状况;如有需要,使用 kubectl rollout undo 回滚

参考指南

根据上下文加载详细指南:

主题参考资料加载时机
工作负载references/workloads.mdDeployments、StatefulSets、DaemonSets、Jobs、CronJobs
网络references/networking.mdServices、Ingress、NetworkPolicies、DNS
配置references/configuration.mdConfigMaps、Secrets、环境变量
存储references/storage.mdPV、PVC、StorageClasses、CSI 驱动程序
Helm chartreferences/helm-charts.mdChart 结构、values、模板、钩子、测试、仓库
故障排查references/troubleshooting.mdkubectl debug、日志、事件、常见问题
自定义 Operatorreferences/custom-operators.mdCRD、Operator SDK、controller-runtime、协调
服务网格references/service-mesh.mdIstio、Linkerd、流量管理、mTLS、金丝雀发布
GitOpsreferences/gitops.mdArgoCD、Flux、渐进式交付、sealed secrets
成本优化references/cost-optimization.mdVPA、HPA 调优、竞价实例、配额、资源规格优化
多集群references/multi-cluster.mdCluster API、联邦、跨集群网络、灾难恢复

约束

必须执行
  • 使用声明式 YAML 清单(避免使用命令式 kubectl 命令)
  • 为所有容器设置资源 requests 和 limits
  • 配置存活探针和就绪探针
  • 使用 secrets 存储敏感数据(绝不硬编码凭据)
  • 应用最小权限 RBAC 权限
  • 使用 NetworkPolicies 实现网络分段
  • 使用命名空间实现逻辑隔离
  • 统一标记资源,便于管理
  • 在注解中记录配置决策
禁止执行
  • 不设置资源限制就部署到生产环境
  • 将 secrets 存储在 ConfigMaps 中或作为明文环境变量
  • 对应用 Pod 使用默认 ServiceAccount
  • 允许不受限制的网络访问(默认允许所有流量)
  • 在没有正当理由的情况下以 root 身份运行容器
  • 跳过健康检查(存活探针和就绪探针)
  • 在生产镜像中使用 latest 标签
  • 暴露不必要的端口或服务

常见 YAML 模式

配置资源限制、探针和安全上下文的 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: my-namespace
  labels:
    app: my-app
    version: "1.2.3"
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
        version: "1.2.3"
    spec:
      serviceAccountName: my-app-sa # never use default SA
      securityContext:
        runAsNonRoot: true
        runAsUser: 1000
        fsGroup: 2000
      containers:
        - name: my-app
          image: my-registry/my-app:1.2.3 # never use latest
          ports:
            - containerPort: 8080
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "500m"
              memory: "512Mi"
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8080
            initialDelaySeconds: 15
            periodSeconds: 20
          readinessProbe:
            httpGet:
              path: /ready
              port: 8080
            initialDelaySeconds: 5
            periodSeconds: 10
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities:
              drop: ["ALL"]
          envFrom:
            - secretRef:
                name: my-app-secret # pull credentials from Secret, not ConfigMap
最小权限 RBAC
apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-app-sa
  namespace: my-namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: my-app-role
  namespace: my-namespace
rules:
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["get", "list"] # grant only what is needed
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: my-app-rolebinding
  namespace: my-namespace
subjects:
  - kind: ServiceAccount
    name: my-app-sa
    namespace: my-namespace
roleRef:
  kind: Role
  name: my-app-role
  apiGroup: rbac.authorization.k8s.io
NetworkPolicy(默认拒绝 + 明确允许)
# Deny all ingress and egress by default
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
  namespace: my-namespace
spec:
  podSelector: {}
  policyTypes: ["Ingress", "Egress"]
---
# Allow only specific traffic
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-my-app
  namespace: my-namespace
spec:
  podSelector:
    matchLabels:
      app: my-app
  policyTypes: ["Ingress"]
  ingress:
    - from:
        - podSelector:
            matchLabels:
              app: frontend
      ports:
        - protocol: TCP
          port: 8080

验证命令

部署后,验证运行状况和安全态势:

# Watch rollout complete
kubectl rollout status deployment/my-app -n my-namespace

# Stream pod events to catch crash loops or image pull errors
kubectl get pods -n my-namespace -w

# Inspect a specific pod for failures
kubectl describe pod <pod-name> -n my-namespace

# Check container logs
kubectl logs <pod-name> -n my-namespace --previous   # use --previous for crashed containers

# Verify resource usage vs. limits
kubectl top pods -n my-namespace

# Audit RBAC permissions for a service account
kubectl auth can-i --list --as=system:serviceaccount:my-namespace:my-app-sa

# Roll back a failed deployment
kubectl rollout undo deployment/my-app -n my-namespace

输出模板

实现 Kubernetes 资源时,请提供:

  1. 结构正确的完整 YAML 清单
  2. 必要时提供 RBAC 配置(ServiceAccount、Role、RoleBinding)
  3. 用于网络隔离的 NetworkPolicy
  4. 简要说明设计决策和安全注意事项

评论

支持 Markdown