yaml是什么?
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,YAML 是一种简洁的非标记语言。语法格式:• 缩进表示层级关系• 不支持制表符"tab"缩进,使用空格缩进• 通常开头缩进 2 个空格• 字符后缩进 1 个空格,如冒号、逗号等•"---" 表示YA
千家信息网最后更新 2025年12月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: passwordconfigMap 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安全错误
数据库的锁怎样保障安全
数据库字符型转换成数值型
网络安全竞赛有关协议的问题
怀旧服服务器战士的毕业装备
数据库技术及应用阶段作业
泰格软件怎么连接数据库
软件开发中的提出问题
台州市国家网络安全宣传周
计算机网络技术常用的熟知端口
服务器或域名解析失败
网络安全服务笔试
什么样的数据库好用
服务器维护管理系统
机关党委加强网络安全管理
怎样查看数据库的关系表
mongodb列出数据库
sdl软件开发生命周期
数据库结构的正确顺序
新荣区现代化网络安全常见问题
学术期刊网络技术出版总数据库
河南省大数据库是怎么赋码的
ppt网络安全背景图片
网络安全护苗安全网络课
lin服务器
入侵网站拿服务器
在选择软件开发工具之前
软件开发材料费清单怎么开
jsp与数据库乱码处理
web服务器报价
数据库选型设置
末日血战一个服务器有多少人