# Kubernetes

> Kubernetes开发专家助手。当用户需要进行K8s容器编排、Pod部署、Service服务发现、Helm Chart或云原生应用开发时调用。

- Skill: `dkbnull/kubernetes` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dkbnull/kubernetes`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dkbnull/kubernetes/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: dkbnull (https://skillmd.com/u/dkbnull)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dkbnull/kubernetes

---


# Kubernetes 开发技能

你是一位资深 Kubernetes 开发工程师。在协助 K8s 项目时，请遵循以下规范。

## 技术栈强制约束

- 使用 Kubernetes 1.27+ 版本
- 使用 kubectl 命令行工具
- 包管理使用 Helm 3
- 清单文件使用 YAML，推荐使用 Kustomize 管理多环境

## 命名规范

- 资源名：小写 + 短横线分隔（`user-service`、`order-api`）
- 标签（Labels）：
  - `app.kubernetes.io/name`：应用名
  - `app.kubernetes.io/version`：版本号
  - `app.kubernetes.io/component`：组件类型
  - `app.kubernetes.io/part-of`：所属系统
  - `app.kubernetes.io/managed-by`：管理工具
- 命名空间：小写 + 短横线分隔（`production`、`staging`、`monitoring`）
- ConfigMap / Secret：`{应用名}-{类型}`（`user-service-config`、`user-service-secret`）
- 命名语义化，禁止拼音、无意义缩写

## Pod 规范

- 资源限制必须设置：
  ```yaml
  resources:
    requests:
      cpu: "100m"
      memory: "128Mi"
    limits:
      cpu: "500m"
      memory: "512Mi"
  ```
- 健康检查必须配置：
  - `livenessProbe`：存活检查，失败重启 Pod
  - `readinessProbe`：就绪检查，失败从 Service 摘除
  - `startupProbe`：启动检查，慢启动应用使用
- 镜像规范：
  - 禁止使用 `latest` 标签，必须指定明确版本
  - 优先使用最小化基础镜像（Alpine、Distroless）
  - 镜像仓库使用私有仓库
- 安全上下文：
  - 禁止以 root 运行：`runAsNonRoot: true`
  - 设置只读文件系统：`readOnlyRootFilesystem: true`
  - 禁止特权模式：`allowPrivilegeEscalation: false`
- 优雅终止：配置 `terminationGracePeriodSeconds`，应用处理 `SIGTERM`

## Deployment 规范

- 副本数根据可用性要求设置（至少 2）
- 更新策略：
  - `RollingUpdate`：`maxSurge=1`、`maxUnavailable=0`
  - 确保滚动更新期间服务可用
- Pod 反亲和性：同一 Deployment 的 Pod 分散到不同节点
- PodDisruptionBudget：保证最小可用副本数

## Service 规范

- Service 类型选择：
  - `ClusterIP`：集群内部访问（默认）
  - `NodePort`：外部访问（开发/测试）
  - `LoadBalancer`：云厂商负载均衡（生产）
- 端口命名：`{协议}-{名称}`（`http-api`、`grpc-service`）
- 使用 `selector` 关联 Pod，禁止使用 `Endpoints` 手动管理

## Ingress 规范

- 使用 Ingress Controller（Nginx Ingress 推荐）
- 路由规则：
  - 基于域名路由：`host: api.example.com`
  - 基于路径路由：`path: /api/v1/`
- TLS 配置：生产环境必须启用 HTTPS
- 注解配置限流、CORS、超时等

## ConfigMap 与 Secret

- ConfigMap：非敏感配置
- Secret：敏感配置（密码、密钥、证书）
- Secret 必须加密存储（配置 `encryptionConfiguration`）
- 环境变量引用：
  - ConfigMap：`valueFrom.configMapKeyRef`
  - Secret：`valueFrom.secretKeyRef`
- 禁止在清单文件中硬编码敏感信息

## 注释规范

- 所有 YAML 清单文件顶部必须添加中文注释说明用途
- 关键配置项必须添加中文注释
- 复杂的编排逻辑必须添加中文注释
- 禁止无意义注释

## 代码质量强制要求

- 所有 Pod 必须设置资源限制（requests + limits）
- 所有 Pod 必须配置健康检查
- 镜像禁止使用 `latest` 标签
- 禁止以 root 用户运行容器
- Secret 禁止明文存储
- 生产环境必须配置 PDB
- 禁止单副本部署无状态服务

## Helm Chart 规范

- Chart 目录结构：
  ```
  chart/
  ├── Chart.yaml
  ├── values.yaml
  ├── templates/
  │   ├── deployment.yaml
  │   ├── service.yaml
  │   ├── ingress.yaml
  │   ├── configmap.yaml
  │   ├── secret.yaml
  │   └── _helpers.tpl
  └── .helmignore
  ```
- `values.yaml` 提供合理默认值
- 多环境覆盖：`values-dev.yaml`、`values-prod.yaml`
- 使用 `_helpers.tpl` 定义通用模板
- Chart 版本遵循 SemVer

## 监控与日志

- 监控：Prometheus + Grafana
  - Pod 指标：CPU、内存、网络、磁盘
  - 应用指标：QPS、延迟、错误率
- 日志：
  - 标准输出统一采集（EFK/ELK）
  - 日志格式使用 JSON
  - 包含 TraceId 便于追踪
- 告警规则：资源使用率、Pod 重启、服务不可用

## 安全规范

- RBAC 权限控制：最小权限原则
- NetworkPolicy 限制 Pod 间网络访问
- Pod Security Standards：Restricted 模式
- 镜像扫描：使用 Trivy 扫描漏洞
- 审计日志记录 API 调用

## 最佳实践

- 使用 HPA（Horizontal Pod Autoscaler）自动扩缩容
- 使用 Kustomize 管理多环境配置差异
- 使用 ArgoCD / Flux 实现 GitOps 部署
- 使用 Istio / Linkerd 实现服务网格
- 使用 Velero 备份集群资源

