Kubernetes资源文件yaml
参数介绍
yaml 介绍
yaml
是一个类似 XML
、JSON
的标记性语言。它强调以数据为中心,并不是以标识语言为重点例如 SpringBoot
的配置文件 application.yml
也是一个 yaml
格式的文件
语法格式
通过缩进表示层级关系 不能使用tab进行缩进,只能使用空格 一般开头缩进两个空格 大小写敏感 字符后缩进一个空格,如冒号、逗号 如果需要将多段yaml
配置放在一个文件中,中间要使用---
分隔 使用#
表示注释
yaml
文件的编写
快速编写yaml文件,通过命令导出新的yaml
文件
kubectl create deployment demo-nginx -- image=nginx:1. 23. 0 - o yaml -- dry-run=client > nginx. yaml
cat nginx. yaml
精简版 yaml
apiVersion : apps/v1
kind : Deployment
metadata : creationTimestamp : null labels : app : demo- nginxname : demo- nginx
spec : replicas : 1 selector : matchLabels : app : demo- nginxstrategy : { } template : metadata : creationTimestamp : null labels : app : demo- nginxspec : containers : - image : nginx: 1.23.0name : nginxresources : { }
status : { }
pod
的yaml
文件示例
apiVersion : v1
kind : Pod
metadata : name : string namespace : string
spec : containers : - name : string image : string
常用字段含义
必须存在的属性
参数名 字段类型 说明 version String k8s API的版本,可使用kubectl api-versions
命令查询 kind String 指定k8s资源的类型,比如Pod、Deployment metadata Object 元数据对象,固定写值metadata metadata.name String 元数据对象的名字,比如命名pod的名字 metadata.namespace String 元数据对象的命名空间 spec Object 详细定义对象,固定值写Spec spec.container[] array spec对象的容器列表定义 spec.container[].name String 容器对象的名字 spec.container[].image String 定义要用到的对象名称
spec
主要对象
spec.containers
参数名 字段类型 说明 spec.containers[].name String 定义容器的名字 spec.containers[].image String 定义要用到的镜像名称 spec.containers[].imagePullPolicy String 定义镜像拉取策略,有Always、Never、IfNotPresent三个值可选(1)Always:意思是每次都尝试重新拉取镜像 (2)Never:表示仅使用本地镜像 (3)IfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。 上面三个值都没设置的话,默认是Always。 spec.containers[].command[] list 指定容器启动命令,因为是数组可以指定多个,不指定则使用镜像打包时使用的启动命令。 spec.containers[].args[] list 指定容器启动命令参数,因为是数组可以指定多个 spec.containers[].workingDir String 指定容器的工作目录 spec.containers[].volumeMounts[].name String 指定可以被容器挂载的存储卷的名称 spec.containers[].volumeMounts[].mountPath String 指定可以被容器挂载的存储卷的路径 spec.containers[].volumeMounts[].readOnly String 设置存储卷路径的读写模式,ture 或者false,默认为读写模式 spec.containers[].ports[] list 指定容器需要用到的端口列表 spec.containers[].ports[].name String 指定端口名称 spec.containers[].ports[].containerPort String 指定容器需要监听的端口号 spec.containers[].ports[].hostPort String 指定容器所在主机需要监听的端口号,默认跟上面containerPort相同,注意设置了hostPort 同一台主机无法启动该容器的相同副本(因为主机的端口号不能相同,这样会冲突) spec.containers[].ports[].protocol String 指定端口协议,支持TCP和UDP,默认值为TCP spec.containers[].env[] list 指定容器运行前需设置的环境变量列表 spec.containers[].env[].name String 指定环境变量名称 spec.containers[].env[].value String 指定环境变量值 spec.containers[].env[].resources Object 指定资源限制和资源请求的值(这里开始就是设置容器的资源上限) spec.containers[].env[].resources.limits Object 指定设置容器运行时资源的运行上限 spec.containers[].env[].resources.limits.cpu String 指定CPU的限制,单位为core数,将用于 docker run --cpu-shares参数 spec.containers[].resources.limits.memory String 指定MEM内存的限制,单位为MIB、GiB spec.containers[].resources.requests Object 指定容器启动和调度时的限制设置 spec.containers[].resources.requests.cpu String CPU请求,单位为core数,容器启动时初始化可用数量 spec.containers[].resources.requests.memory String 内存请求,单位为MIB、GiB,容器启动的初始化可用数量
spec.volumes
参数名 字段类型 说明 spec.volumes[].name String 定义Pod的共享存储卷的名称,容器定义部分的spec.containers[].volumeMounts[].name的值跟这里是一样的 spec.volumes[].emptyDir Object 指定Pod的临时目录,值为一个空对象:emptyDir:{} spec.volumes[].hostPath Object 指定挂载Pod所在宿主机的目录 spec.volumes[].hostPath.path String 指定Pod所在主机的目录,将被用于容器中mount的目录 spec.volumes[].secret Object 指定类型为secret的存储卷,secret意为私密、秘密的意思,很容易理解,它存储一些密码,token或者秘钥等敏感安全文件。挂载集群预定义的secret对象到容器内部。 spec.volumes[].configMap Object 指定类型为configMap的存储卷,表示挂载集群预定义的configMap对象到容器内部。 spec.volumes[].livenessProbe Object 指定Pod内容器健康检查的设置,当探测无响应几次后,系统将自动重启该容器。这个在前面的文章中有说,具体可以设置:exec、httpGet、tcpSocket spec.volumes[].livenessProbe.exec Object 指定Pod内容器健康检查的设置,确定是exec方式 spec.volumes[].livenessProbe.exec.command[] String 指定exec方式后需要指定命令或者脚本,用这个参数设置 spec.volumes[].livenessProbe.httpGet Object 指定Pod内容器健康检查的设置,确定是httpGet方式 spec.volumes[].livenessProbe.tcpSocket Object 指定Pod内容器健康检查的设置,确定是tcp Socket方式 spec.volumes[].livenessProbe.initialDelaySeconds Number 容器启动完成后首次探测的时间设置,单位为s spec.volumes[].livenessProbe.timeoutSeconds Number 对容器健康检查的探测等待响应的超时时间设置,单位为S,默认为1s。若超过该超时时间设置,则认为该容器不健康,会重启该容器。 spec.volumes[].livenessProbe.periodSeconds Number 对容器健康检查的定期探测时间设置,单位为S,默认10s探测一次。
Kubernetes常见资源类型和命令
查看资源类型和命令
kubectl api-resources
kubectl -- help
常用资源分类和缩写
名称 命令 缩写 节点 nodes no 名称空间 namespaces ns pod资源 pods po pod控制器 replicasets rs pod控制器 deployments deploy 服务发现-统一pod对外接口 services svc 服务发现-统一pod对外接口 ingress ing 存储资源 persistentvolumes pv 存储资源 persistentvolumeclaims pvc
常用资源操作命令
命令分类 命令 翻译 基本命令 create 创建资源 delete 删除资源 edit 编辑资源 get 获取资源 patch 更新资源 explain 解释资源 运行和调试 run 运行指定的镜像 expose 暴露服务 describe 描述资源内部信息 logs 打印容器在 pod 中的日志 attach 进入运行中的容器 exec 执行容器中的一个命令 cp 在Pod内外复制文件 scale 扩容/缩容Pod的数量 autoscale 扩容/缩容Pod的数量 高级命令 apply rc label 标签 其它命令 cluster-info 集群信息 version 版本