k8s资源配置
大约 5 分钟k8s
pod的yaml文件示例
yaml文件示例:
# pod的最基础的yaml文件最少需要以下的几个参数 apiVersion: v1 # API版本号,注意:具有多个,不同的对象可能会使用不同API kind: Pod # 对象类型,pod metadata: # 元数据 name: string # POD名称 namespace: string # 所属的命名空间 spec: # specification of the resource content(资源内容的规范) 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[] list 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[] List 指定容器内部的存储卷配置 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[].resources Object 指定资源限制和资源请求的值(这里开始就是设置容器的资源上限) spec.containers[].resources.limits Object 指定设置容器运行时资源的运行上限 spec.containers[].resources.limits.cpu String 指定CPU的限制,单位为core数,将用于 docker run --cpu-shares参数(这里前面文章Pod资源限制有讲过) 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内容器健康检查的设置,确定是tcpSocket方式 spec.volumes[].livenessProbe.initialDelaySeconds Number 容器启动完成后手册探测的时间设置,单位为s spec.volumes[].livenessProbe.timeoutSeconds Number 对容器健康检查的探测等待响应的超时时间设置,单位为S,默认为1s。若超过该超时时间设置,则认为该容器不健康,会重启该容器。 spec.volumes[].livenessProbe.periodSeconds Number 对容器健康检查的定期探测时间设置,单位为S,默认10s探测一次。