首页 > 其他分享 >创建一个deploy资源的yaml文件需要哪些内容

创建一个deploy资源的yaml文件需要哪些内容

时间:2025-01-23 22:09:34浏览次数:1  
标签:哪些 app deploy yaml Deployment Pod my spec metadata

在 Kubernetes (K8s) 中,编写一个 Deployment 的 YAML 文件通常包括以下几个关键部分:

1. apiVersion

这是你希望使用的 Kubernetes API 版本。对于 Deployment,一般使用 apps/v1 版本。

apiVersion: apps/v1

2. kind

这指定了资源的类型,Deployment 类型是 Deployment

kind: Deployment

3. metadata

metadata 部分包含关于 Deployment 的元数据,例如名称、命名空间、标签等。常见的是设置 Deployment 的 namelabels

metadata:
  name: my-app-deployment
  labels:
    app: my-app

4. spec

spec 部分描述了 Deployment 的具体配置。主要包括以下几个子部分:

  • replicas:指定要创建的 Pod 副本数量。

  • selector:选择器用于确定哪些 Pods 属于这个 Deployment。通常使用标签来选择。

  • template:这是用来创建 Pod 的模板,包含了 Pod 的元数据和规范(如容器配置)。

spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app-container
          image: my-app-image:latest
          ports:
            - containerPort: 80
  • replicas:这里指定创建 3 个副本的 Pod。

  • selector:选择器选择带有 app: my-app 标签的 Pods。

  • template:这个模板描述了 Pod 的配置,包含一个容器 my-app-container,使用镜像 my-app-image:latest,并暴露端口 80。

完整的 YAML 示例

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

关键点总结:

  • apiVersion: 指定 API 版本(如 apps/v1)。
  • kind: 定义资源类型(如 Deployment)。
  • metadata: 包含资源的名称、标签等信息。
  • spec: 配置 Deployment 的详细信息,包括副本数、Pod 模板、选择器等。

这样定义的 Deployment 会创建一个包含三个副本的应用,每个副本都运行 my-app-image:latest 镜像并暴露端口 80。

apiVersion: apps/v1  # Kubernetes API版本,根据你的集群版本选择合适的API版本
kind: Deployment  # 资源类型为Deployment
 
metadata:
  name: my-deployment  # 部署的名称
  namespace: default   # 可选,部署所在的命名空间,默认为default
  labels:              # 可选,用于标识和管理部署的标签
    app: my-app
 
spec:
  replicas: 3           # 指定Pod副本的数量
  selector:             # 标签选择器,用于关联此Deployment与Pod模板
    matchLabels:
      app: my-app       # 确保selector匹配到具有相同app=my-app标签的Pod
 
  template:             # Pod模板定义了将要创建的Pod的具体内容
    metadata:
      labels:            # Pod的标签,必须与上面的选择器相匹配
        app: my-app
    spec:
      containers:         # 容器列表
      - name: my-container   # 容器名称
        image: nginx:1.21.0  # 使用的容器镜像
        ports:
        - containerPort: 80     # 容器暴露的端口
        resources:               # 可选,指定容器的资源请求和限制
          requests:
            cpu: 500m
            memory: 1Gi
          limits:
            cpu: 1
            memory: 2Gi
        livenessProbe:            # 可选,存活探针配置
          httpGet:
            path: /healthz
            port: 80
            initialDelaySeconds: 10
            periodSeconds: 10
        readinessProbe:           # 可选,就绪探针配置
          httpGet:
            path: /readyz
            port: 80
            initialDelaySeconds: 5
            periodSeconds: 5
 
  strategy:                   # 可选,滚动更新策略
    type: RollingUpdate       # 更新策略类型,RollingUpdate或Recreate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
 
  revisionHistoryLimit: 10    # 可选,保留的修订历史记录数

标签:哪些,app,deploy,yaml,Deployment,Pod,my,spec,metadata
From: https://www.cnblogs.com/leojazz/p/18688693

相关文章

  • api-server在实现高可用在哪些方面
    1.冗余部署Kubernetes的APIServer是无状态的,这意味着你可以部署多个APIServer实例来增强高可用性。冗余部署的主要目标是确保如果某个实例发生故障,其他实例能继续服务请求,避免单点故障。多实例部署:通常,至少会部署三个APIServer实例,这样即便某个实例失败,其他实例仍能......
  • 有哪些工具可以用于批量修改网站模板?
    批量修改网站模板可以提高工作效率,以下是几种常用的工具:工具名称描述Notepad++支持多文件搜索和替换,适合批量修改文本文件。SublimeText高性能的文本编辑器,支持插件扩展,可以安装批量替换插件。VisualStudioCode微软开发的代码编辑器,支持多文件编辑和查找替......
  • 有哪些常用的网站代码修改软件?
    AdobeDreamweaver:这是一款专业的网页设计和开发工具,支持多种编程语言,如HTML、CSS、JavaScript等。它提供了可视化的编辑界面和代码编辑功能,方便用户进行网站代码的修改和调试。SublimeText:一款轻量级的代码编辑器,具有简洁的界面和强大的功能。它支持多种编程语言,并且可以通过......
  • 自己网站的备案号修改了,需要做哪些操作
    问题描述:自己网站的备案号修改了,需要做哪些操作。解决方法:更新网站备案号显示:首先需要在网站的页面中更新备案号的显示。找到网站的HTML文件,通常是footer.php或bottom.php等。在文件中找到显示备案号的代码部分,将旧的备案号替换为新的备案号。通知相关部门:根据相关法律法规的......
  • 搭建一个网站需要哪些基础的配置
    搭建一个网站需要从硬件、软件、网络到开发工具等多个方面进行配置。以下是基础配置的主要内容:硬件与网络基础设施1.1服务器云服务器:推荐使用云服务提供商(如阿里云、腾讯云、AWS)提供的云服务器,灵活扩展且成本较低。本地服务器:适用于企业内网或小型网站,但需要独立维护硬件。......
  • 成为一名月薪 2 万的 web 安全工程师需要掌握哪些技能?
    ......
  • 成为一名月薪 2 万的 web 安全工程师需要掌握哪些技能?
    ......
  • 有哪些常见的 Vue 错误?
    在使用Vue.js开发应用时,开发者可能会遇到各种错误。以下是一些常见的Vue错误以及如何避免它们:为了更详细地解释常见的Vue.js错误,我们可以深入探讨每个类别,并提供更多的背景信息和解决方案。以下是针对常见错误的扩展说明:1.数据响应性问题a.未声明的响应式数据问......
  • 在实际中Git规范有哪些?
    在实际的前端开发中,Git规范主要包括以下几个方面:提交信息规范:提交信息应该遵循一定的格式,通常包括类型(type)、范围(scope)、描述(description)、正文(body)和脚注(footer)。其中,类型是必需的,用于描述提交的性质,如新功能(feat)、修复(fix)、文档更新(docs)等。描述应该简短......
  • 你开发过程中,都有用过哪些虚拟机?
    在前端开发过程中,虽然不像后端或系统管理员那样频繁使用虚拟机,但虚拟机在某些场景下仍然有其用途。以下是一些我在前端开发过程中使用过的虚拟机:VirtualBox:这是一个开源的虚拟机软件,支持多种操作系统,如Windows、Linux和MacOSX。我曾在VirtualBox中安装过不同的操作系统,以测试......