千家信息网

yaml是什么?

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,YAML 是一种简洁的非标记语言。语法格式:• 缩进表示层级关系• 不支持制表符"tab"缩进,使用空格缩进• 通常开头缩进 2 个空格• 字符后缩进 1 个空格,如冒号、逗号等•"---" 表示YA
千家信息网最后更新 2026年11月02日yaml是什么?

YAML 是一种简洁的非标记语言。
语法格式:
• 缩进表示层级关系
• 不支持制表符"tab"缩进,使用空格缩进
• 通常开头缩进 2 个空格
• 字符后缩进 1 个空格,如冒号、逗号等
•
"---" 表示YAML格式,一个文件的开始
• "#"注释

k8s yaml

# yaml格式的pod定义文件完整内容:apiVersion: v1       #必选,版本号,例如v1kind: Pod       #必选,Podmetadata:       #必选,元数据  name: string       #必选,Pod名称  namespace: string    #必选,Pod所属的命名空间  labels:      #自定义标签    - name: string     #自定义标签名字  annotations:       #自定义注释列表    - name: stringspec:         #必选,Pod中容器的详细定义  containers:      #必选,Pod中容器列表  - name: string     #必选,容器名称    image: string    #必选,容器的镜像名称    imagePullPolicy: [Always | Never | IfNotPresent] #获取镜像的策略 Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像    command: [string]    #容器的启动命令列表,如不指定,使用打包时使用的启动命令    args: [string]     #容器的启动命令参数列表    workingDir: string     #容器的工作目录    volumeMounts:    #挂载到容器内部的存储卷配置    - name: string     #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名      mountPath: string    #存储卷在容器内mount的绝对路径,应少于512字符      readOnly: boolean    #是否为只读模式    ports:       #需要暴露的端口库号列表    - name: string     #端口号名称      containerPort: int   #容器需要监听的端口号      hostPort: int    #容器所在主机需要监听的端口号,默认与Container相同      protocol: string     #端口协议,支持TCP和UDP,默认TCP    env:       #容器运行前需设置的环境变量列表    - name: string     #环境变量名称      value: string    #环境变量的值    resources:       #资源限制和请求的设置      limits:      #资源限制的设置        cpu: string    #Cpu的限制,单位为core数,将用于docker run --cpu-shares参数        memory: string     #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数      requests:      #资源请求的设置        cpu: string    #Cpu请求,容器启动的初始可用数量        memory: string     #内存清楚,容器启动的初始可用数量    livenessProbe:     #对Pod内个容器健康检查的设置,当探测无响应几次后将自动重启该容器,检查方法有exec、httpGet和tcpSocket,对一个容器只需设置其中一种方法即可      exec:      #对Pod容器内检查方式设置为exec方式        command: [string]  #exec方式需要制定的命令或脚本      httpGet:       #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port        path: string        port: number        host: string        scheme: string        HttpHeaders:        - name: string          value: string      tcpSocket:     #对Pod内个容器健康检查方式设置为tcpSocket方式         port: number       initialDelaySeconds: 0  #容器启动完成后首次探测的时间,单位为秒       timeoutSeconds: 0   #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒       periodSeconds: 0    #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次       successThreshold: 0       failureThreshold: 0       securityContext:         privileged:false    restartPolicy: [Always | Never | OnFailure]#Pod的重启策略,Always表示一旦不管以何种方式终止运行,kubelet都将重启,OnFailure表示只有Pod以非0退出码退出才重启,Nerver表示不再重启该Pod    nodeSelector: obeject  #设置NodeSelector表示将该Pod调度到包含这个label的node上,以key:value的格式指定    imagePullSecrets:    #Pull镜像时使用的secret名称,以key:secretkey格式指定    - name: string    hostNetwork:false      #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络    volumes:       #在该pod上定义共享存储卷列表    - name: string     #共享存储卷名称 (volumes类型有很多种)      emptyDir: {}     #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值      hostPath: string     #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录        path: string     #Pod所在宿主机的目录,将被用于同期中mount的目录      secret:      #类型为secret的存储卷,挂载集群与定义的secre对象到容器内部        scretname: string          items:             - key: string          path: string      configMap:     #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部        name: string        items:        - key: string          path: string

示例部署:
deployment yml(一个redis的deployment配置文件)

apiVersion: apps/v1beta1kind: Deploymentmetadata:  name: redis-deploymentspec:  replicas: 2  template:    metadata:      labels:        app: default.Deployment.redis_server    spec:      containers:      - name: redis        image: redis:latest        imagePullPolicy: IfNotPresent        ports:        - containerPort: 6379      volumes:        - name: data          emptyDir: {}

service yaml

kind: ServiceapiVersion: v1metadata:  name: redisspec:  type: NodePort  ports:  - protocol: TCP    port: 6379    targetPort: 6379    nodePort: 30379    name: test  selector:    app: default.Deployment.redis_server        

secret yml

apiVersion: v1kind: Secretmetadata:  name: mysecretdata:  username: xxx  password: yyy# 敏感数据必须是base64编码后的结果,如上面的username和password# 创建secret用 kubectl apply -f xxx.yml命令

pod读取secret yml

apiVersion: v1kind: Podmetadata:  name: mypodspec:  containers:  - name: mypod    image: busybox    args:      - /bin/sh      - -c      - sleep 10; touch /tmp/healthy; sleep 30000    volumeMounts:    - name: foo      mountPath: "/etc/foo"      readOnly: true  volumes:  - name: foo    secret:      secretName: mysecret# k8s会在 /etc/foo 下创建文件,每个数据创建一个文件,文件名是数据的key# 即 会存在 username 和 password两个文件,内容就是其内容的明文存储# volume方式支持动态更新

pod也可以使用环境变量方式读取secret数据,但不支持动态更新

apiVersion: v1kind: Podmetadata:  name: mypodspec:  containers:  - name: mypod    image: busybox    args:      - /bin/sh      - -c      - sleep 10; touch /tmp/healthy; sleep 30000    env:      - name: SECRET_USERNAME        valueFrom:          secretKeyRef:            name: mysecret            key: username      - name: SECRET_PASSWORD        valueFrom:          secretKeyRef:            name: mysecret            key: password

configMap yml
和secret大致相似

piVersion: v1kind: ConfigMapmetadata:  name: myconfigMapdata:  config1: xxx  config2: yyy    #调用方式和secret相似,对应类型换成configMap就OK了

另外还可以通过模版生成
• 用run命令生成
kubectl run --image=nginx my-deploy -o yaml --dry-run > my-deploy.yaml
• 用get命令导出
kubectl get my-deploy/nginx -o=yaml --export > my-deploy.yaml
• Pod容器的字段拼写忘记了
kubectl explain pods.spec.containers

容器 存储 方式 名称 命令 文件 镜像 检查 类型 单位 数据 格式 目录 健康 变量 环境 探测 支持 限制 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 河南真二互联网科技有限公司 金融科技创新监管互联网金融 互联网科技的发展 小马过河互联网科技 科技创新互联网企业 互联网科技缩写 开启互联网科技时代小说 天速互联网络科技有限公司 厦门千工互联网科技有限公司 注册互联网科技公司经营范围大全 互联网保险科技创业 佛山市拉法互联网科技有限公司 深圳互联网科技的发展 杭州披云加互联网科技有限公司 上海互联网科技公司ppt 互联网风格科技公司名称 抖集互联网科技技术咨询 互联网科技平台产品运营 科技发展第三阶段互联网时代 网络科技有限互联网 有木互联网科技 富国互联网科技创新基金 互联网金融中的现代科技 赶超互联网科技 微信多开 科技互联网海报 上海钢联属于互联网科技股吗 从那以后互联网科技有限公司 南京一网一红互联网科技有限公司 三亚科技创新互联网基地
0