k8s yaml文件案例

下面是一个完整的 Kubernetes Deployment 配置文件,包含了常见的配置项,最后会附带详细解释。

yaml 复制代码
apiVersion: apps/v1  # API版本号,表示部署的资源类型是 Deployment,版本为 apps/v1
kind: Deployment  # 资源类型为 Deployment,用于定义应用的副本和更新策略
metadata:
  name: my-nginx  # 部署的名称,用于标识该资源对象
  namespace: default  # Kubernetes命名空间,默认是 default,意味着该部署将存在于默认命名空间中
  labels:
    app: my-nginx  # 标签,用于标识该部署,可以用于选择器(selector)等操作
spec:
  replicas: 3  # 定义部署的副本数量,也就是期望运行的 Pod 数量
  selector:
    matchLabels:
      app: my-nginx  # 选择器,用于匹配 Pod 的标签,确保 Deployment 管理这些 Pods
  template:
    metadata:
      labels:
        app: my-nginx  # 为 Pods 设置标签,Deployment 会根据这个标签来管理 Pods
    spec:
      containers:
        - name: my-nginx  # 容器的名字,用于标识该容器
          image: nginx:latest  # 容器镜像,可以是 Docker Hub 或私有镜像仓库中的镜像
          ports:
            - containerPort: 80  # 容器内的端口,Pod 会暴露这个端口供外界访问
          resources:
            limits:
              memory: "512Mi"  # 容器的内存限制
              cpu: "500m"  # 容器的 CPU 限制
            requests:
              memory: "256Mi"  # 容器请求的内存资源量,Kubernetes 会保证至少分配这么多内存
              cpu: "250m"  # 容器请求的 CPU 资源量,Kubernetes 会保证至少分配这么多 CPU
          env:
            - name: ENV_VAR_NAME  # 环境变量,容器内的环境变量
              value: "some_value"
          volumeMounts:
            - name: my-volume  # 容器挂载的卷
              mountPath: /usr/share/nginx/html  # 卷挂载到容器的路径
      volumes:
        - name: my-volume  # 卷的名称
          configMap:
            name: my-config  # 使用 ConfigMap 作为卷的来源
            items:
              - key: config-file  # 配置文件的 key
                path: config-file  # 文件路径
  strategy:
    type: RollingUpdate  # 更新策略,表示滚动更新
    rollingUpdate:
      maxSurge: 1  # 最多可以多出 1 个 Pod
      maxUnavailable: 1  # 最多可以不可用 1 个 Pod
  minReadySeconds: 10  # Pod 启动后,至少需要10秒才能被认为是就绪的
  revisionHistoryLimit: 5  # 保留之前的更新版本的数量,最多保存5个历史版本
  progressDeadlineSeconds: 600  # 超过这个时间没有进展,则认为部署失败

各字段解释:

  1. apiVersion: apps/v1

    表示资源使用的 Kubernetes API 版本。apps/v1 是 Deployment 的稳定版本。

  2. kind: Deployment

    定义资源类型为 Deployment。Deployment 是用来管理无状态应用的,确保所期望的 Pod 副本数可以持续运行。

  3. metadata

    资源的元数据:

    • name:定义该 Deployment 的名称,标识 Kubernetes 中的这个资源。
    • namespace:指定 Deployment 所在的 Kubernetes 命名空间,默认为 default
    • labels:为 Deployment 添加标签,用于选择、过滤等操作。
  4. spec

    Deployment 的规格:

    • replicas:定义期望的 Pod 副本数量。这里设置为 3,表示期望有 3 个 Pod 运行。

    • selector:通过标签选择 Pod 来管理它们。Deployment 会确保选择的 Pod 数量和类型与 replicas 中定义的副本数一致。

    • template:Pod 模板,定义将要运行在 Deployment 中的 Pod 的详细配置。

      • metadata:为 Pod 设置标签。

      • spec:Pod 的详细配置,包括容器的定义。

        • containers:定义容器配置项,包含容器名称、镜像、端口、资源等。
        • volumes:卷配置,定义 Pod 中的存储。
  5. resources

    定义容器资源的限制和请求:

    • limits:容器的资源限制,超过这个限制容器会被强制终止。
    • requests:容器请求的资源量,Kubernetes 会尝试为容器分配这些资源。
  6. env

    为容器设置环境变量,容器内的进程可以通过这些环境变量获取相关信息。

  7. volumeMounts 和 volumes

    • volumeMounts:定义容器挂载的卷的位置和名称。
    • volumes:在 Pod 级别定义卷的来源,可以是多种类型,如 ConfigMap、Secret、PersistentVolume 等。
  8. strategy

    设置滚动更新策略:

    • type: RollingUpdate:表示使用滚动更新的方式来逐个更新 Pod。
    • rollingUpdate:设置具体的滚动更新策略,maxSurge 表示最多可以创建的额外 Pod 数量,maxUnavailable 表示最多可以不可用的 Pod 数量。
  9. minReadySeconds

    设置 Pod 启动并健康后,至少需要保持多少秒才算成功,就绪的 Pod 需要持续稳定一段时间。

  10. revisionHistoryLimit

    保留的历史版本数量,控制 Deployment 更新历史的数量。这里设置为 5,表示最多保存 5 次版本记录。

  11. progressDeadlineSeconds

    如果 Deployment 在指定时间内没有进展(例如没有足够的 Pod 可用),Kubernetes 将认为该部署失败。

小结:

  • 这个 YAML 文件非常全面地展示了 Kubernetes Deployment 的配置项,可以满足大部分应用的需求。
  • 在实际应用中,你可以根据具体需求修改这些字段,如镜像名称、资源配置、卷配置等。
相关推荐
尘世中一位迷途小书童2 小时前
版本管理实战:Changeset 工作流完全指南(含中英文对照)
前端·面试·架构
尘世中一位迷途小书童2 小时前
VitePress 文档站点:打造专业级组件文档(含交互式示例)
前端·架构·前端框架
m0_651593913 小时前
Netty网络架构与Reactor模式深度解析
网络·架构
xrkhy6 小时前
微服务之SpringCloud Alibaba(注册中心Nacos)
spring cloud·微服务·架构
虫小宝7 小时前
Java分布式架构下的电商返利APP技术选型与架构设计实践
java·分布式·架构
唐僧洗头爱飘柔95277 小时前
【SpringCloud(6)】Gateway路由网关;zuul路由;gateway实现原理和架构概念;gateway工作流程;静态转发配置
spring·spring cloud·架构·gateway·请求转发·服务降级·服务雪崩
白衣鸽子8 小时前
RPO 与 RTO:分布式系统容灾的双子星
后端·架构
一个处女座的暖男程序猿9 小时前
若依微服务 nacos的配置文件
微服务·云原生·架构
AI新兵9 小时前
AI大事记12:Transformer 架构——重塑 NLP 的革命性技术(下)
人工智能·架构·transformer
尘世中一位迷途小书童9 小时前
代码质量保障:ESLint + Prettier + Stylelint 三剑客完美配置
前端·架构