跳至主要內容

k8s资源配置

xw大约 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 # 容器镜像
      

    常用字段含义

    • 必须存在的属性

      参数名字段类型说明
      versionStringk8s API的版本,可使用kubectl api-versions命令查询
      kindString这里指定k8s资源的类型,比如Pod、Deployment
      metadataObject元数据对象,固定写值metadata
      metadata-nameString元数据对象的名字,比如命名pod的名字
      metadata-namespaceString元数据对象的命名空间
      specObject详细定义对象,固定值写Spec
      spec.container[]listspec对象的容器列表定义
      spec.container[].nameString容器对象的名字
      spec.container[].imageString定义要用到的对象名称
    • spec主要对象【大体知道即可】

      • spec.containers
      参数名字段类型说明
      spec.containers[].nameString定义容器的名字
      spec.containers[].imageString定义要用到的镜像名称
      spec.containers[].imagePullPolicyString定义镜像拉取策略,有Always、Never、IfNotPresent三个值可选(1)Always:意思是每次都尝试重新拉取镜像 (2)Never:表示仅使用本地镜像 (3)IfNotPresent:如果本地有镜像就使用本地镜像,没有就拉取在线镜像。 上面三个值都没设置的话,默认是Always。
      spec.containers[].command[]List指定容器启动命令,因为是数组可以指定多个,不指定则使用镜像打包时使用的启动命令。
      spec.containers[].args[]List指定容器启动命令参数,因为是数组可以指定多个。
      spec.containers[].workingDirString指定容器的工作目录
      spec.containers[].volumeMounts[]List指定容器内部的存储卷配置
      spec.containers[].volumeMounts[].nameString指定可以被容器挂载的存储卷的名称
      spec.containers[].volumeMounts[].mountPathString指定可以被容器挂载的存储卷的路径
      spec.containers[].volumeMounts[].readOnlyString设置存储卷路径的读写模式,ture 或者false,默认为读写模式
      spec.containers[].ports[]List指定容器需要用到的端口列表
      spec.containers[].ports[].nameString指定端口名称
      spec.containers[].ports[].containerPortString指定容器需要监听的端口号
      spec.containers[].ports[].hostPortString指定容器所在主机需要监听的端口号,默认跟上面containerPort相同,注意设置了hostPort 同一台主机无法启动该容器的相同副本(因为主机的端口号不能相同,这样会冲突)
      spec.containers[].ports[].protocolString指定端口协议,支持TCP和UDP,默认值为TCP
      spec.containers[].env[]List指定容器运行前需设置的环境变量列表
      spec.containers[].env[].nameString指定环境变量名称
      spec.containers[].env[].valueString指定环境变量值
      spec.containers[].resourcesObject指定资源限制和资源请求的值(这里开始就是设置容器的资源上限)
      spec.containers[].resources.limitsObject指定设置容器运行时资源的运行上限
      spec.containers[].resources.limits.cpuString指定CPU的限制,单位为core数,将用于 docker run --cpu-shares参数(这里前面文章Pod资源限制有讲过)
      spec.containers[].resources.limits.memoryString指定MEM内存的限制,单位为MIB、GiB
      spec.containers[].resources.requestsObject指定容器启动和调度时的限制设置
      spec.containers[].resources.requests.cpuStringCPU请求,单位为core数,容器启动时初始化可用数量
      spec.containers[].resources.requests.memoryString内存请求,单位为MIB、GiB,容器启动的初始化可用数量
      • spec.volumes
      参数名字段类型说明
      spec.volumes[].nameString定义Pod的共享存储卷的名称,容器定义部分的spec.containers[].volumeMounts[].name的值跟这里是一样的。
      spec.volumes[].emptyDirObject指定Pod的临时目录,值为一个空对象:emptyDir:{}
      spec.volumes[].hostPathObject指定挂载Pod所在宿主机的目录
      spec.volumes[].hostPath.pathString指定Pod所在主机的目录,将被用于容器中mount的目录
      spec.volumes[].secretObject指定类型为secret的存储卷,secret意为私密、秘密的意思,很容易理解,它存储一些密码,token或者秘钥等敏感安全文件。挂载集群预定义的secret对象到容器内部。
      spec.volumes[].configMapObject指定类型为configMap的存储卷,表示挂载集群预定义的configMap对象到容器内部。
      spec.volumes[].livenessProbeObject指定Pod内容器健康检查的设置,当探测无响应几次后,系统将自动重启该容器。这个在前面的文章中有说,具体可以设置:exec、httpGet、tcpSocket。
      spec.volumes[].livenessProbe.execObject指定Pod内容器健康检查的设置,确定是exec方式
      spec.volumes[].livenessProbe.exec.command[]String指定exec方式后需要指定命令或者脚本,用这个参数设置
      spec.volumes[].livenessProbe.httpGetObject指定Pod内容器健康检查的设置,确定是httpGet方式
      spec.volumes[].livenessProbe.tcpSocketObject指定Pod内容器健康检查的设置,确定是tcpSocket方式
      spec.volumes[].livenessProbe.initialDelaySecondsNumber容器启动完成后手册探测的时间设置,单位为s
      spec.volumes[].livenessProbe.timeoutSecondsNumber对容器健康检查的探测等待响应的超时时间设置,单位为S,默认为1s。若超过该超时时间设置,则认为该容器不健康,会重启该容器。
      spec.volumes[].livenessProbe.periodSecondsNumber对容器健康检查的定期探测时间设置,单位为S,默认10s探测一次。