# Deployment 配置定义文件内容 `spec` 是 Kubernetes YAML 文件中最重要的字段之一，它定义了资源的期望状态（desired state）。 对于 Deployment 来说，`spec` 包含了以下关键配置： ```yaml apiVersion: apps/v1 # 更新到当前推荐的 API 版本 kind: Deployment metadata: name: frontend spec: # 定义了资源的期望状态 replicas: 1 # Pod 副本数量 selector: # 选择器，用于识别哪些 Pod 是属于这个 Deployment 的 matchLabels: # 简化选择器配置 tier: frontend template: # Pod 模板，定义 Pod 的配置 metadata: labels: # Pod 的标签 app: app-demo tier: frontend spec: # Pod 的详细规格 containers: # 容器配置 - name: tomcat-demo # 容器名称 image: tomcat # 使用的镜像 imagePullPolicy: IfNotPresent # 镜像拉取策略 ports: # 容器端口配置 - containerPort: 8080 # 容器暴露的端口 ``` ## 主要字段解释： - `replicas` - 指定需要运行的 Pod 副本数量 - 如果不指定，默认为 1 - `selector` - 定义 Deployment 如何查找要管理的 Pod - 必须匹配 template 中的 labels - 通过 `matchLabels` 或 `matchExpressions` 进行匹配 - `template` - Pod 的模板配置 - 包含两个主要部分： - `metadata`：Pod 的元数据（如标签） - `spec`：Pod 的具体配置 - `template.spec.containers` - 定义容器的具体配置： - `name`：容器名称 - `image`：容器镜像 - `ports`：暴露的端口 - `imagePullPolicy`：镜像拉取策略 - 其他可选配置： - `resources`：资源限制 - `env`：环境变量 - `volumeMounts`：卷挂载 - `command`：启动命令 - `args`：命令参数 # 常用的其他可选配置 ```yaml spec: strategy: # 更新策略 type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 minReadySeconds: 5 # Pod 就绪后的最小等待时间 revisionHistoryLimit: 10 # 保留的历史版本数 ``` # References - claude 3.5 sonnet