SuperAPI AI 工具集

container-orchestration

部署与运维

查看项目

更新于 10-13 16:39

技能介绍

技能概览

本技能提供容器编排相关的配置模式与示例,覆盖 Docker、Kubernetes 以及 AWS ECS/Fargate。资料说明其事实核验时间为 2026-07。触发关键词包括:Dockerfile、docker-compose、kubernetes、k8s、helm、pod、deployment、service、ingress、container 等。

Dockerfile 最佳实践

资料给出多阶段构建示例:以 python:3.11-slim AS builder 作为构建阶段,先设置工作目录、先复制依赖文件以便更好利用缓存、安装依赖,再复制应用代码;生产阶段基于 python:3.11-slim,创建非 root 用户 appuser 并切换,从 builder 阶段复制产物,设置环境变量 PYTHONUNBUFFERED=1,添加 HEALTHCHECK,并通过 EXPOSE 与 CMD 启动 uvicorn 服务。

Dockerfile 规则分为 DO 与 DON'T 两类。建议做法包括:使用具体基础镜像版本、使用多阶段构建、以非 root 用户运行、按变更频率排列命令、使用 .dockerignore、添加健康检查。应避免的做法包括:使用 :latest 标签、以 root 运行、复制不必要的文件、在镜像中存储密钥、在生产环境安装开发依赖。

Docker Compose

资料提供一个 docker-compose.yml 示例(版本 3.9),定义 app 与 db 两个服务。app 服务通过 build 指定上下文与 Dockerfile,映射 8000:8000 端口,设置 DATABASE_URL 环境变量,使用 depends_on 并带 condition: service_healthy,并定义 healthcheck(curl 检查 /health,interval 30s、timeout 10s、retries 3)。db 服务使用 postgres:15-alpine 镜像,挂载 postgres_data 卷到 /var/lib/postgresql/data,设置 POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB 环境变量,并定义 pg_isready 健康检查。文件末尾声明 postgres_data 卷。

Kubernetes 基础

Deployment 示例(apiVersion apps/v1)定义名为 app 的 Deployment,标签 app: myapp,副本数 3,选择器匹配 app: myapp;Pod 模板中包含容器 app,镜像 myapp:1.0.0,暴露 containerPort 8000,设置资源 requests(memory 128Mi、cpu 100m)与 limits(memory 256Mi、cpu 500m),配置 livenessProbe(httpGet /health 端口 8000,initialDelaySeconds 10、periodSeconds 30)与 readinessProbe(httpGet /ready 端口 8000,initialDelaySeconds 5、periodSeconds 10),并通过 secretKeyRef 从 app-secrets 的 database-url 注入 DATABASE_URL 环境变量。

Service 示例(apiVersion v1)定义名为 app-service 的 Service,选择器 app: myapp,端口映射 port 80 到 targetPort 8000,类型为 ClusterIP。

Ingress 示例(apiVersion networking.k8s.io/v1)定义名为 app-ingress 的 Ingress,带 nginx.ingress.kubernetes.io/rewrite-target: / 注解,ingressClassName 为 nginx,规则中主机 app.example.com,路径 /(Prefix),后端指向 app-service 的 80 端口。

kubectl 速查

资料列出常用命令:kubectl get pods 列出 Pod;kubectl logs <pod> 查看日志;kubectl exec -it <pod> -- sh 进入 Pod;kubectl apply -f manifest.yaml 应用配置;kubectl rollout restart deployment/app 重启 Deployment;kubectl rollout status deployment/app 检查发布状态;kubectl describe pod <pod> 调试 Pod;kubectl port-forward svc/app 8080:80 本地端口转发。

补充资源

参考文档包括:./references/dockerfile-patterns.md(进阶 Dockerfile 技巧)、./references/k8s-manifests.md(完整 Kubernetes 清单示例)、./references/helm-patterns.md(Helm chart 结构与 values)、./references/ecs-fargate.md(AWS Fargate 上的 Amazon ECS,含任务定义、服务、awsvpc 网络、IAM 角色、密钥、扩缩容、ALB/NLB、ECS 与 Kubernetes 对比)。脚本包括 ./scripts/build-push.sh(构建并推送 Docker 镜像)。资源包括 ./assets/Dockerfile.template(生产 Dockerfile 模板)与 ./assets/docker-compose.template.yml(Compose 起始模板)。

适用场景与限制

该技能适用于编写或审查 Dockerfile、Compose 文件、Kubernetes 清单及了解 kubectl 常用操作,以及准备 AWS ECS/Fargate 相关内容。资料未提供安装命令、收费或价格信息,也未说明具体运行时依赖或版本兼容范围,这些内容暂未提供。