常见类型的yaml文件如何编写?--kind: Deployment
2024-01-10 06:08:18
基本说明
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://blog.csdn.net/shanshan3003/article/details/135468954
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!