常见类型的yaml文件如何编写?--kind: Deployment

基本说明

Deployment 资源是 Kubernetes 重要的组成部分之一,通过指定 Deployment 中的 Pod 模板和副本数量,Kubernetes 可以自动地创建并管理一组具有相同配置的 Pod,这样即使某些 Pod 发生故障或需要升级,也可以轻松地进行控制和管理。

因此,当我们使用 kind: Deployment 时,YAML 文件中应该包括 spec 字段来定义 Deployment 中的 Pod 模板和副本数量,并可以通过 metadata 字段来为 Deployment 资源指定名称,标签和注释等元数据。

基本样例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment       # Deployment 的名称
spec:
  replicas: 3               # 希望创建的 Pod 副本数量
  selector:
    matchLabels:
      app: my-app           # 用于选择要控制的 Pod 的标签
  template:
    metadata:
      labels:
        app: my-app         # Pod 的标签
    spec:
      containers:
      - name: my-container  # 容器名称
        image: nginx:latest # 容器所使用的镜像
        ports:
        - containerPort: 80 # 容器暴露的端口号

样例说明

在这个示例中,包含了以下关键字:

  • apiVersion:指定要使用的 Kubernetes API 的版本。对于 Deployment 类型,通常使用 apps/v1
  • kind:指定对象类型为 Deployment。
  • metadata:用于提供对象的元数据,其中 name 字段指定了 Deployment 的名称。
  • spec:是 Deployment 对象的规格部分,用于定义 Deployment 的具体配置。
    • replicas:指定希望创建的 Pod 副本数量。
    • selector:定义用于选择要控制的 Pod 的标签。
    • template:定义 Pod 的模板,用于创建实际的 Pod 对象。
      • metadata:定义 Pod 的元数据部分,其中 labels 字段用于给 Pod 设置标签。
      • spec:定义 Pod 的规格部分,其中 containers 字段用于定义容器的配置。
        • name:指定容器的名称。
        • image:指定容器所使用的镜像。
        • ports:定义容器暴露的端口号。

扩展参数及举例说明

扩展关键字

Deployment YAML 文件还可以包含其他用于配置 Deployment 的关键字

  • strategy: 定义 Deployment 更新策略,如 rollingupdate 和 recreated,还可以指定 RollingUpdate 策略的参数,如 maxUnavailable 和 maxSurge。
  • minReadySeconds: 指定一个 Pod 从创建到被标记为 Ready 的最小等待时间。
  • revisionHistoryLimit: 定义 Deployment 可以保留的历史版本数。
  • paused: 设置 Deployment 是否暂停更新。
  • progressDeadlineSeconds: 设置 Deployment 更新的 Deadline。
  • template.metadata.annotations: 用于为模板 Pod 设置注释。
  • template.spec.nodeName: 用于设置 Pod 所在的节点名称。
  • template.spec.serviceAccountName: 用于指定 Pod 使用的 ServiceAccount 的名称。

使用 RollingUpdate 更新策略

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx:latest
        ports:
        - containerPort: 80
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1

在这个示例中,通过将 strategy.type 设置为 RollingUpdate,并分别设置 rollingUpdate.maxUnavailable 和 rollingUpdate.maxSurge 的值来定义滚动更新策略的参数。其中 maxUnavailable 指定允许的不可用 Pod 的最大数量,maxSurge 指定允许的超出副本数量的最大副本数。

暂停 Deployment 更新

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx:latest
        ports:
        - containerPort: 80
  paused: true

在这个示例中,通过将 paused 设置为 true,将 Deployment 的更新暂停。这对于暂时停止 Deployment 的更新,并保持某个特定版本的副本运行非常有用。

这些关键字可以根据你的需求进行调整和扩展。当你编写完 YAML 文件后,可以使用 kubectl apply -f  命令将该文件应用到 Kubernetes 集群中,创建或更新 Deployment 对象。

 

你可能感兴趣的:(云原生,kind,云原生,yaml,kubernetes,Deployment)