kubernetes使用 (二)yaml文件编写

博客围绕Kubernetes中的YAML文件展开,介绍了YAML文件的编写格式,如通过缩进表示层级、用空格而非tab缩进等。还提及快速编写YAML文件的方法,不过自动生成的不全面,需手动查询字段,最后给出了案例pod类型的YAML字段查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

yaml文件----排版很舒服的文件o(* ̄▽ ̄*)o 

一. yaml文件编写格式

1. 通过缩进表示不同的层级
2. 不能使用tab缩进,只能用空格
3. 一般开头缩进2两个空格
4. 每个字符后面缩进一个空格
5. 3个横杠"---"表示下一个yaml文件的开始
6. 使用"#"注释

先上一段案例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-2
spec:
  selector:
    matchLabels:
      app: nginx-te
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx-te
    spec:
      containers:
      - name: nginx
        image: nginx:1.12

这是上一章我们创建的时候用的,这里说明一下是什么意思

apiVersion: apps/v1         #api版本,每个控制器都可能不同

kind: Deployment            #资源的类型  这里是deployment控制器

metadata:                   #源数据, 可以直接理解为准备创建的控制器的信息设置
  name: nginx-2               #控制器的名称

spec:                       #关于这个控制器的具体功能配置

  selector:                 #批量一个模板信息
    matchLabels:              #匹配类型--标签
      app: nginx-te             #标签名称 k/v形式  

  replicas: 1               #副本数量(容器数量)

  template:                 #创建一个控制器模板,通过上面的selector匹配
    metadata:                 #模板的详细信息
      labels:                   #设置标签,用于让上面的selector匹配到该模板
        app: nginx-te             #模板标签名称,和上面的selector的相同即可
    spec:                     #模板的详细资源信息
      containers:               #容器信息
      - name: nginx               #容器名称
        image: nginx:1.12         #容器所使用的镜像

我们想要从零开始编写一个yaml文件是非常困难的,不过也有简单的方法

二. 快速编写yaml文件

kubectl create deployment nginx --image=nginx:1.12 -o yaml --dry-run > 1.yaml

#参数说明
-o yaml  yaml格式输出
--dry-run  尝试运行,并不真实执行
> 1.yaml  输出文件

查看yaml文件

[root@k8s-master01 ~]# cat 1.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.12
        name: nginx
        resources: {}
status: {}


#这里先把不用的参数去掉
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.12
        name: nginx

可以看到和上面的我们自己编写的yaml是一样的,大大节约了我们编写文件的时间

但是自动生成的并不全面,当我们需要完成某些功能时已经不满足要求了,就需要手动查询字段

三. 字段查询(explain)

#查询deployment控制器下的字段参数
kubectl explain deployment




#返回
KIND:     Deployment         #资源类型
VERSION:  apps/v1            #所支持的api版本

DESCRIPTION:
     Deployment enables declarative updates for Pods and ReplicaSets.
     #部署支持pod和replicasset的声明性更新。

FIELDS:
   apiVersion	<string>     #如上填写apps/v1即可
   kind	<string>             #同上 deployment

   metadata	<Object>     
   spec	<Object>
   status	<Object>

但是后面3个字段的参数,我们不得而知。我们需要继续往下查询

1. 字段查询--deployment.metadata

kubectl explain deployment.metadata

#返回
   name	<string>                #控制器名称
   namespace	<string>        #控制器所处的命名空间
   labels	<map[string]string>  #标签

2. 字段查看--deployment.spec

kubectl explain deployment.spec

#返回
   replicas	<integer>              #副本数量
   selector	<Object> -required-    #匹配模板
   template	<Object> -required-    #模板

3. 详细字段查询

kubectl explain deployment.spec.template.spec.containers.imagePullPolicy

#返回
KIND:     Deployment
VERSION:  apps/v1

FIELD:    imagePullPolicy <string>

DESCRIPTION:
     Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always
     if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated.

4. 将获取到的字段转为yaml文件

#deployment.spec.template.spec.containers.imagePullPolicy

spec:
  template:
    spec:
      containers:
      - imagePullPolicy: (Always, Never, IfNotPresent)

#获取到了关于控制器详细信息(spec)
#                 模板字段(template)
#                   详细信息(spec)
#                     容器信息(containers)
#                     镜像获取策略(imagePullPolicy:)

四. 案例pod类型的yaml字段查询

apiVersion: v1
kind: Pod
metadata:
  name: string
  namaspace: string
  labels:
  - name: string
  annotations:
  - name: string
spec:
  containers:
  - name: string
    images: string
    imagePullPolice: [Always | Never | IfNotPresent]
    command: [string]
    args: [string]
    workingDir: string
    volumeMounts:
    - name: string
      mountPath: string
      readOnly: boolean
    ports:
    - name: string
      containerPort: int
      hostPort: int
      protocol: string
    env:
    - name: string
      value: string
    resources:
      limits:
        cpu: string
        memory: string
      requests:
        cpu: string
        memory: string
    livenessProbe:
      exec:
        command: [string]
      httpGet:
        path: string
        port: int
        host: string
        scheme: string
        httpHeaders:
        - name: string
          value: string
      tcpSocket:
        port: int
      initialDelaySeconds: number
      timeoutSeconds: number
      periodSeconds: number
      successThreshold: 0
      failureThreshold: 0
    securityContext:
      privileged: false
  restartPolicy: [Always | Never | OnFailure]   
  nodeSelector: object
  imagePullSecrets:
  - name: string
  hostNetwork: false
  volumes:
  - name: string
    emptyDir: {}
    hostPath:
      path: string
    secret:
      secretName: string
      items:
      - key: string
        path: string
    configMap:
      name: string
      items:
      - key: string
        path: string

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值