yaml是什么?
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,YAML 是一种简洁的非标记语言。语法格式:• 缩进表示层级关系• 不支持制表符"tab"缩进,使用空格缩进• 通常开头缩进 2 个空格• 字符后缩进 1 个空格,如冒号、逗号等•"---" 表示YA
千家信息网最后更新 2025年01月25日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安全错误
数据库的锁怎样保障安全
可研网络安全
计算机类专业网络安全排名
无纸化会议管理服务器生产厂家
中信集团软件开发项目部
智能还款软件开发商
2020国家网络安全宣传挂图
网络安全文明上网班会
计算机网络技术挑战赛
行业应用软件开发服务招标预告
河南手机软件开发靠谱吗
福州亮剑网络技术
dayz服务器选项怎么关
数据工厂网络技术有限公司
黔巨人网络技术有限公司邮编
ospf数据库同步
计算机网络技术第一学期考试
数据库怎么把表拆分
文件传至云服务器失败是什么意思
蚂蚁金服数据库设计图
mfc怎么调用数据库
数据库加密及强权限控制
办公室的网络安全
惠达卫浴消费者数据库
数据库系统的软件的组成
嘉定区新能源软件开发工艺
数据库充电速度
学校怎么购买知网数据库
数据库中为何要设置主键
select读取数据库
我的世界怎么开在线服务器