✨ feat(docs): 添加项目文档和配置
- 新增 .claude/settings.local.json 配置文件,添加工作流命令权限 - 创建详细的产品需求文档(PRD),定义项目愿景、功能需求和技术规范 - 包含优雅下线和抢占式实例自动轮转等核心功能设计
This commit is contained in:
10
.claude/settings.local.json
Normal file
10
.claude/settings.local.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"SlashCommand(/bmad:bmm:workflows:product-brief)",
|
||||
"SlashCommand(/bmad:bmm:workflows:workflow-status)"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
}
|
||||
}
|
||||
298
docs/PRD.md
Normal file
298
docs/PRD.md
Normal file
@@ -0,0 +1,298 @@
|
||||
# vk-eci - Product Requirements Document
|
||||
|
||||
**Author:** d8der
|
||||
**Date:** 2025-11-06
|
||||
**Version:** 1.0
|
||||
|
||||
---
|
||||
|
||||
## Executive Summary
|
||||
|
||||
阿里云ECI Virtual Kubelet提供商致力于为Kubernetes用户提供无缝、可靠且成本优化的无服务器容器体验。通过将Kubernetes Pod调度到阿里云弹性容器实例(ECI),用户可以在享受无服务器计算便利性的同时,保持与现有Kubernetes工作流的完全兼容。
|
||||
|
||||
项目的核心愿景是让容器编排变得简单、高效且经济实惠,让用户专注于应用开发而非基础设施管理。
|
||||
|
||||
### What Makes This Special
|
||||
|
||||
**零运维成本优化** - 用户无需管理底层基础设施,即可享受无服务器容器的便利性和成本优势,特别是通过抢占式实例最高可节省90%的计算成本。
|
||||
|
||||
**无缝Kubernetes集成** - 与现有Kubernetes工作流完全兼容,用户可以通过标准的Kubernetes YAML文件部署应用,无需学习新的API或工具。
|
||||
|
||||
**企业级可靠性** - 支持优雅下线和抢占式实例回收触发的自动轮转机制,确保业务连续性,让用户在生产环境中安心使用低成本实例。
|
||||
|
||||
---
|
||||
|
||||
## Project Classification
|
||||
|
||||
**Technical Type:** CLI工具 / 基础设施适配器
|
||||
**Domain:** 云原生 / Kubernetes / 容器编排
|
||||
**Complexity:** 中等复杂度 - 需要深度集成Kubernetes和阿里云ECI API
|
||||
|
||||
这是一个开源的基础设施项目,作为Kubernetes和阿里云弹性容器实例(ECI)之间的桥梁。项目采用Virtual Kubelet Provider架构模式,需要处理复杂的生命周期管理、网络配置和资源调度逻辑。
|
||||
|
||||
[domain_context_summary]
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria
|
||||
|
||||
### 核心成功指标
|
||||
|
||||
**成本优化**
|
||||
- 通过抢占式实例和按需计费,降低计算成本30-70%
|
||||
- 资源利用率从传统的30-50%提升至80%以上
|
||||
|
||||
**运维效率**
|
||||
- 减少节点管理时间50%以上
|
||||
- 实现秒级扩展,满足突发流量需求
|
||||
|
||||
**可靠性保证**
|
||||
- 支持优雅下线,在3分钟预警窗口内确保业务连续性
|
||||
- 实现抢占式实例回收触发的Pod自动轮转,为无状态应用提供零停机体验
|
||||
- Pod启动时间控制在30秒以内,确保在预警窗口内完成轮转
|
||||
- 提供降级策略应对资源竞争和网络切换延迟
|
||||
|
||||
**用户体验**
|
||||
- 与现有Kubernetes工作流无缝集成
|
||||
- 提供清晰的错误信息和日志
|
||||
- 支持企业级网络和安全配置
|
||||
|
||||
[business_metrics]
|
||||
|
||||
---
|
||||
|
||||
## Product Scope
|
||||
|
||||
### MVP - Minimum Viable Product
|
||||
|
||||
**基础功能**
|
||||
- 支持标准Kubernetes Pod调度到ECI
|
||||
- 基本的容器生命周期管理(创建、删除、查询)
|
||||
- CPU和内存资源配置
|
||||
- 镜像管理和私有镜像仓库支持
|
||||
- 基础存储卷支持(EmptyDir, NFS, ConfigMap, Secret)
|
||||
|
||||
**网络配置**
|
||||
- 容器端口映射
|
||||
- 基础网络连通性
|
||||
|
||||
### Growth Features (Post-MVP)
|
||||
|
||||
**优雅下线支持**
|
||||
- 支持 `k8s.aliyun.com/eci-spot-release-strategy: api-evict` Annotation
|
||||
- 处理 `SpotToBeReleased` 事件
|
||||
- 调用 Eviction API 进行优雅驱逐
|
||||
- 遵从 PDB 和 terminationGracePeriodSeconds 配置
|
||||
|
||||
**抢占式实例回收触发的自动轮转**
|
||||
- 实现基于 `SpotToBeReleased` 事件的 Pod 自动轮转
|
||||
- 支持抢占式实例回收时的零停机业务连续性
|
||||
- 集成健康检查和就绪检查确保新Pod就绪
|
||||
- 提供配置选项控制轮转策略
|
||||
|
||||
**企业级功能**
|
||||
- 安全组和网络策略支持
|
||||
- 监控和告警集成
|
||||
- 多集群管理
|
||||
- 备份和恢复机制
|
||||
|
||||
### Vision (Future)
|
||||
|
||||
**高级功能**
|
||||
- 抢占式实例智能调度算法
|
||||
- 成本优化建议和自动化
|
||||
- 多云部署支持
|
||||
- 社区插件和扩展框架
|
||||
|
||||
**生态系统集成**
|
||||
- 与阿里云其他服务深度集成
|
||||
- 支持更多云厂商
|
||||
- 成为行业标准 Virtual Kubelet Provider
|
||||
|
||||
---
|
||||
|
||||
[domain_considerations]
|
||||
|
||||
---
|
||||
|
||||
[innovation_patterns]
|
||||
|
||||
---
|
||||
|
||||
[project_type_requirements]
|
||||
|
||||
---
|
||||
|
||||
[ux_principles]
|
||||
|
||||
---
|
||||
|
||||
## Functional Requirements
|
||||
|
||||
### 核心调度功能
|
||||
|
||||
**Pod 生命周期管理**
|
||||
- **FR-001**: 支持创建、查询、删除 ECI Pod
|
||||
- **FR-002**: 支持 Pod 状态监控和事件上报
|
||||
- **FR-003**: 支持 Pod 资源限制配置(CPU、内存)
|
||||
- **FR-004**: 支持镜像拉取和私有仓库认证
|
||||
|
||||
**网络和存储**
|
||||
- **FR-005**: 支持容器端口映射和网络连通性
|
||||
- **FR-006**: 支持基础存储卷类型(EmptyDir, NFS, ConfigMap, Secret)
|
||||
- **FR-007**: 支持 EIP 注解配置
|
||||
|
||||
### 优雅下线功能
|
||||
|
||||
**抢占式实例事件处理**
|
||||
- **FR-008**: 支持 `SpotToBeReleased` 事件监听和处理
|
||||
- **FR-009**: 支持 `ContainerInstanceExpired` Pod Condition 检测
|
||||
- **FR-010**: 支持 `k8s.aliyun.com/eci-spot-release-strategy: api-evict` Annotation
|
||||
|
||||
**Eviction API 集成**
|
||||
- **FR-011**: 实现 Eviction API 调用机制
|
||||
- **FR-012**: 遵从 PodDisruptionBudget (PDB) 配置
|
||||
- **FR-013**: 支持 terminationGracePeriodSeconds 配置
|
||||
- **FR-014**: 提供优雅下线超时处理机制
|
||||
|
||||
### 抢占式实例回收触发的自动轮转
|
||||
|
||||
**事件驱动的轮转机制**
|
||||
- **FR-015**: 支持基于 `SpotToBeReleased` 事件的 Pod 自动轮转
|
||||
- **FR-016**: 实现抢占式实例回收时的零停机业务连续性
|
||||
- **FR-017**: 支持新Pod创建和就绪检查的协调机制
|
||||
|
||||
**轮转策略配置**
|
||||
- **FR-018**: 提供配置选项控制轮转策略
|
||||
- **FR-019**: 支持分批轮转和并发控制
|
||||
- **FR-020**: 提供轮转状态监控和报告
|
||||
|
||||
### 企业级功能
|
||||
|
||||
**安全和网络**
|
||||
- **FR-021**: 支持安全组配置
|
||||
- **FR-022**: 支持 VPC 网络策略
|
||||
- **FR-023**: 支持多可用区部署
|
||||
|
||||
**监控和运维**
|
||||
- **FR-024**: 集成 OpenCensus 监控
|
||||
- **FR-025**: 支持详细的日志记录
|
||||
- **FR-026**: 提供健康检查和就绪检查
|
||||
|
||||
---
|
||||
|
||||
## Non-Functional Requirements
|
||||
|
||||
### 性能需求
|
||||
|
||||
**响应时间**
|
||||
- Pod 创建时间:≤ 30 秒
|
||||
- Pod 删除时间:≤ 10 秒
|
||||
- API 响应时间:≤ 2 秒
|
||||
|
||||
**资源效率**
|
||||
- 内存使用:≤ 512 MB
|
||||
- CPU 使用:≤ 0.5 核心
|
||||
- 网络带宽:支持千兆网络
|
||||
|
||||
### 可靠性需求
|
||||
|
||||
**可用性**
|
||||
- 系统可用性:≥ 99.9%
|
||||
- Pod 创建成功率:≥ 99%
|
||||
- 优雅下线成功率:≥ 95%
|
||||
|
||||
**容错性**
|
||||
- 支持 API 调用重试机制
|
||||
- 提供优雅降级策略
|
||||
- 支持故障自动恢复
|
||||
|
||||
### 安全性需求
|
||||
|
||||
**认证和授权**
|
||||
- 支持阿里云 Access Key 认证
|
||||
- 支持 Kubernetes Service Account
|
||||
- 提供细粒度的权限控制
|
||||
|
||||
**数据保护**
|
||||
- 加密存储敏感配置信息
|
||||
- 支持网络传输加密
|
||||
- 提供审计日志记录
|
||||
|
||||
### 可扩展性需求
|
||||
|
||||
**水平扩展**
|
||||
- 支持多实例部署
|
||||
- 支持负载均衡
|
||||
- 支持自动扩缩容
|
||||
|
||||
**功能扩展**
|
||||
- 模块化架构设计
|
||||
- 支持插件机制
|
||||
- 提供扩展 API
|
||||
|
||||
### 集成需求
|
||||
|
||||
**Kubernetes 集成**
|
||||
- 完全兼容 Kubernetes API
|
||||
- 支持标准 Kubernetes 工具链
|
||||
- 提供 Helm Chart 部署
|
||||
|
||||
**云服务集成**
|
||||
- 深度集成阿里云 ECI API
|
||||
- 支持阿里云其他服务(VPC、SLB等)
|
||||
- 提供多云部署支持
|
||||
|
||||
---
|
||||
|
||||
## Technical Feasibility Analysis
|
||||
|
||||
### 抢占式实例业务连续性可行性
|
||||
|
||||
**可实现场景**
|
||||
- **无状态Web服务**:通过提前创建新Pod实现零停机轮转
|
||||
- **API服务**:利用负载均衡器健康检查实现无缝切换
|
||||
- **数据处理流水线**:配合消息队列实现任务重试
|
||||
|
||||
**技术限制**
|
||||
- **时间窗口**:仅有3分钟预警时间,需要高效的Pod创建和就绪机制
|
||||
- **资源竞争**:新Pod创建可能遇到资源不足,需要降级策略
|
||||
- **网络切换**:IP地址变更可能导致短暂连接中断
|
||||
|
||||
**推荐使用模式**
|
||||
- 配合 PodDisruptionBudget (PDB) 确保最小可用实例数
|
||||
- 使用 Readiness Probe 确保新Pod完全就绪
|
||||
- 配置合理的 terminationGracePeriodSeconds
|
||||
- 建议用于容错性强的无状态应用
|
||||
|
||||
---
|
||||
|
||||
## Implementation Planning
|
||||
|
||||
### Epic Breakdown Required
|
||||
|
||||
Requirements must be decomposed into epics and bite-sized stories (200k context limit).
|
||||
|
||||
**Next Step:** Run `workflow epics-stories` to create the implementation breakdown.
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- Product Brief: docs/product-brief-vk-eci-2025-11-06.md
|
||||
- Domain Brief: [domain_brief_path]
|
||||
- Research: [research_documents]
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Epic & Story Breakdown** - Run: `workflow epics-stories`
|
||||
2. **UX Design** (if UI) - Run: `workflow ux-design`
|
||||
3. **Architecture** - Run: `workflow create-architecture`
|
||||
|
||||
---
|
||||
|
||||
_This PRD captures the essence of vk-eci - 通过优雅下线和抢占式实例回收触发的自动轮转机制,为Kubernetes用户提供可靠、低成本的无服务器容器体验_
|
||||
|
||||
_Created through collaborative discovery between d8der and AI facilitator._
|
||||
Reference in New Issue
Block a user