关于 kubernetes-deployment-patterns
此技能为 Kubernetes 生产部署提供实践指导,适用于设计和运营云原生应用的开发与运维团队。内容涵盖部署策略、工作负载类型、配置、资源管理、自动扩缩容和健康检查。
主要功能
- 01选择滚动更新、蓝绿或金丝雀策略
- 02按任务选择工作负载类型
- 03使用 ConfigMaps 和 Secrets 管理配置
- 04设置资源请求、限制与自动扩缩容
- 05配置健康检查探针
适用场景
- 01规划应用升级并降低发布中断风险
- 02为服务、数据库或批处理任务选择工作负载
- 03管理敏感配置及容器资源
- 04为生产应用配置探针和自动扩缩容
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ nickcrew/ claude-cortex --skill kubernetes-deployment-patterns安装后在 Claude Code 中输入/kubernetes-deployment-patterns确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/configuration-management.mddeployment-strategies.mdproduction-best-practices.mdresource-management.mdworkload-types.md详细介绍
Kubernetes 部署模式
为生产级 Kubernetes 部署提供专家指导,涵盖部署策略、工作负载类型、配置管理、资源优化,以及云原生应用的自动扩缩容模式。
何时使用此技能
- 实施部署策略(滚动更新、蓝绿部署、金丝雀发布)
- 选择合适的工作负载类型(Deployment、StatefulSet、DaemonSet、Job)
- 设计零停机部署的发布策略
- 使用 ConfigMaps 和 Secrets 实施配置管理
- 设置资源管理和自动扩缩容(HPA、VPA)
- 配置运行状况检查和探针策略
- 在 Kubernetes 上设计高可用应用
- 实施批处理和定时任务
核心概念
部署策略
滚动更新: 逐步将旧 Pod 替换为新 Pod(零停机,默认策略) 重新创建: 创建新 Pod 前先终止所有旧 Pod(短暂停机) 蓝绿部署: 运行两个环境,即时切换流量(资源用量翻倍) 金丝雀发布: 在监控的同时逐步将流量转移到新版本(降低风险)
工作负载类型
Deployment: 无状态应用(Web 服务器、API、微服务) StatefulSet: 有状态应用(数据库、消息队列) DaemonSet: 节点级服务(日志收集器、监控 Agent) Job: 一次性任务(批处理、迁移) CronJob: 定时任务(备份、定期报告)
资源管理
Requests: 调度时保证的资源 Limits: 由 kubelet 强制执行的资源上限 HPA: 水平 Pod 自动扩缩容器(根据指标扩缩副本) VPA: 垂直 Pod 自动扩缩容器(调整资源 requests/limits)
快速参考
| 任务 | 加载参考资料 |
|---|---|
| 部署策略(滚动、蓝绿、金丝雀) | skills/kubernetes-deployment-patterns/references/deployment-strategies.md |
| 工作负载类型(Deployment、StatefulSet、DaemonSet、Job) | skills/kubernetes-deployment-patterns/references/workload-types.md |
| 配置管理(ConfigMaps、Secrets) | skills/kubernetes-deployment-patterns/references/configuration-management.md |
| 资源管理和自动扩缩容(HPA、VPA) | skills/kubernetes-deployment-patterns/references/resource-management.md |
| 生产环境最佳实践和安全 | skills/kubernetes-deployment-patterns/references/production-best-practices.md |
工作流
1. 选择部署策略
# Rolling update for standard deployments
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
# Recreate for incompatible versions
strategy:
type: Recreate
2. 选择工作负载类型
- 无状态? → 使用 Deployment
- 有状态且需要持久标识? → 使用 StatefulSet
- 每个节点运行一个 Pod? → 使用 DaemonSet
- 运行至完成? → 使用 Job
- 按计划运行? → 使用 CronJob
3. 配置资源
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "1000m"
4. 添加配置
# ConfigMap for non-sensitive config
envFrom:
- configMapRef:
name: app-config
# Secret for sensitive data
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
5. 实施运行状况检查
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
6. 启用自动扩缩容
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec:
scaleTargetRef:
kind: Deployment
name: app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
常见错误
- 使用
latest标签: 始终使用特定版本标签,以确保可复现性 - 未设置资源限制: 可能导致资源匮乏和集群不稳定
- 缺少运行状况检查: 没有探针时,Kubernetes 无法管理 Pod 的运行状况
- 生产环境仅使用一个副本: 不具备高可用性或弹性
- 将机密信息放在 ConfigMaps 中: 敏感数据应使用 Secrets,而非 ConfigMaps
- 未设置更新策略: 会导致部署行为不可预测
- 以 root 身份运行: 存在安全漏洞,违反最小权限原则
- 未进行监控: 无法发现或排查生产环境中的问题
Resources
- Official Docs: https://kubernetes.io/docs/concepts/workloads/
- Deployment Strategies: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
- StatefulSets: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
- Autoscaling: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
- Configuration: https://kubernetes.io/docs/concepts/configuration/
- Best Practices: https://kubernetes.io/docs/concepts/configuration/overview/
评论
支持 Markdown