Yaml文件详解

本文详细介绍了Kubernetes中用于管理资源对象的YAML文件,包括YAML的基本语法、Kubernetes API资源版本标签的查看,以及如何编写和理解YAML文件。文中还通过示例演示了创建Pod和Service,并解释了port、nodePort、targetPort和containerPort的概念。提供了使用`kubectl run`和`kubectl explain`命令简化YAML编写的方法。

目录

Kubernetes与yaml文件

1.Kubernetes支持管理资源对象的文件格式

2.YAML语法格式

3.查看api资源版本标签

4.写一个yaml文件demo

5.详解k8s中的port

6.创建yaml文件模板

7.怎样更轻松的写yaml


Kubernetes与yaml文件

1.Kubernetes支持管理资源对象的文件格式

Kubernetes支持YAML 和JSON 格式管理资源对象

JSON格式:主要用于api 接口之间消息的传递

YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读

2.YAML语法格式

●大小写敏感

●使用缩进表示层级关系

●不支持Tab键制表符缩进,只使用空格缩进

●缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格:

●字符后缩进一 个空格,如冒号,逗号,短横杆(-)等

●"—"表示YAML格式, 一个文件的开始,用于分隔文件间

●“#"表示注释

3.查看api资源版本标签

K8S---apiVersion对照表:点击这里

kubectl api-versions

4.写一个yaml文件demo

mkdir /opt/demo
cd /opt/demo/

参考模板:
vim nginx-deployment.yaml
apiVersion: apps/v1   #指定api版本标签
kind: Deployment      #定义资源的类型/角色,deployment 为副本控制器,此处资源类型可以是Deployment、Job、 Ingress、 Service等
metadata:             #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
  name: nginx-deployment   #定义资源的名称,在同一个namespace空间中必须是唯一的
  labels:             #定义资源标签(Pod的标签)
    app: nginx
spec:              #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
 replicas: 3       #定义副本数量
 selector :        #定义标签选择器
  matchLabels:     #定义匹配标签
    app: nginx     #匹配上面的标签,需与上面的标签定义的app保持一致
 template:         #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
  metadata:
    labels:
      app: nginx
  spec:
   containers:            #定义容器属性
   - name: nginx          #定义一个容器名,一个- name: 定义一个容器
    i
### Kubernetes Deployment YAML 文件详解 Kubernetes 中的 `Deployment` 是一种用于管理无状态应用程序部署的控制器资源。它提供声明式更新机制,支持滚动更新、回滚和副本管理等功能。一个完整的 `Deployment` YAML 文件通常包含以下几个关键字段和结构。 --- ### 3.1 API 版本与资源类型 每个 Kubernetes 资源都必须指定其 API 版本和资源类型。对于 `Deployment`,通常使用 `apps/v1` 作为 `apiVersion`,因为它是属于扩展 API 组的资源。 ```yaml apiVersion: apps/v1 kind: Deployment ``` - `apiVersion`: 指定资源使用的 API 版本,`apps/v1` 是 Deployment 的标准版本。 - `kind`: 表示资源类型,这里是 `Deployment`。 --- ### 3.2 元数据(metadata) `metadata` 包含资源的元信息,如名称、命名空间、标签和注解等。 ```yaml metadata: name: my-deployment namespace: default labels: app: my-app annotations: description: "Deployment for my application" ``` - `name`: Deployment 的名称。 - `labels`: 标签用于选择器匹配和资源组织。 - `annotations`: 可用于附加元数据,如版本、描述等。 --- ### 3.3 规格定义(spec) `spec` 是 Deployment 的核心部分,定义了期望状态,包括副本数、选择器、滚动更新策略和 Pod 模板等。 #### 副本数量(replicas) 指定期望运行的 Pod 副本数量: ```yaml spec: replicas: 3 ``` - `replicas`: 表示 Deployment 控制的 Pod 数量,默认为 1。 #### 选择器(selector) 定义 Deployment 如何找到它要管理的 Pod: ```yaml spec: selector: matchLabels: app: my-app ``` - `matchLabels`: 必须与 Pod 模板中的标签匹配,确保 Deployment 管理正确的 Pod。 #### 滚动更新策略(strategy) 定义更新策略,通常使用 `RollingUpdate`: ```yaml spec: strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% maxSurge: 25% ``` - `type`: 更新策略类型,通常为 `RollingUpdate` 或 `Recreate`。 - `maxUnavailable`: 更新过程中允许的最大不可用 Pod 百分比,例如 `25%` 表示在 4 个副本中最多有 1 个不可用。 - `maxSurge`: 允许超出期望副本数的最大数量或百分比,用于临时扩容以加快更新过程。 #### Pod 模板(template) 定义 Pod 的期望状态,包括标签和规格: ```yaml spec: template: metadata: labels: app: my-app spec: containers: - name: my-container image: nginx:latest ports: - containerPort: 80 resources: limits: memory: "512Mi" cpu: "500m" ``` - `metadata.labels`: Pod 的标签,必须与 `selector.matchLabels` 匹配。 - `spec.containers`: 容器定义,包括镜像、端口、资源限制等。 - `resources`: 可选字段,用于设置容器的 CPU 和内存限制。 --- ### 3.4 状态信息(status) `status` 字段由 Kubernetes 自动维护,表示当前的实际状态,通常不需要手动配置: ```yaml status: availableReplicas: 3 conditions: - type: Available status: "True" - type: Progressing status: "True" ``` - `availableReplicas`: 当前可用的副本数。 - `conditions`: 表示 Deployment 的状态条件,如是否可用、是否正在更新等。 --- ### 3.5 完整示例 以下是一个完整的 Deployment YAML 示例: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-app spec: replicas: 3 selector: matchLabels: app: my-app strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% maxSurge: 25% template: metadata: labels: app: my-app spec: containers: - name: my-container image: nginx:latest ports: - containerPort: 80 resources: limits: memory: "512Mi" cpu: "500m" ``` --- ### 总结 Deployment YAML 文件通过声明式配置定义了应用程序的部署策略和运行状态。其核心结构包括 API 版本、资源类型、元数据、规格定义(包括副本数、选择器、滚动更新策略和 Pod 模板)以及状态信息。理解这些字段的含义和配置方式,有助于实现高可用、可扩展和自动化的应用部署与管理。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值