基本说明
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 <YAML文件路径>
命令将该文件应用到 Kubernetes 集群中,创建或更新 Deployment 对象。文章来源:https://www.toymoban.com/news/detail-820599.html
文章来源地址https://www.toymoban.com/news/detail-820599.html
到了这里,关于常见类型的yaml文件如何编写?--kind: Deployment的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!