k8s/kubernetes中pod的完整yaml定义说明

apiVersion: v1 #版本号
kind: Pod #类型
metadata:
  name: string, #pod的名称
  namespace: string, #pod所属的命名空间,默认为default
  labels: #自定义标签列表
    - name: string
  annotations: #自定义注解列表
    - name: string
spec: #开始详细定义
  containers: #定义容器列表
  - name: string #容器名称
    image: string #镜像名称
    imagePullPolicy: [Always | Never | IfNotPresent] #镜像拉取策略(Always:每次都尝试重新拉取镜像;IfNotPresent:如果本地有该镜像就用本地的,本地不存在就下载镜像;Never:仅使用本地镜像)
    command: [string] #容器的启动命令列表,如果不指定,则使用镜像打包时使用的启动命令
    args: [string] #容器启动命令参数列表
    workingDir: string #容器的工作目录
    volumeMounts: #挂载到容器内部的存储卷配置
    - name: string #引用pod定义的共享存储卷的名称,需要使用volumes[]部分中定义的共享存储卷名称
      mountPath: string #存储卷在容器内Mount的绝对路径,应少于512个字符
      readOnly: boolean #是否为只读模式,默认为读写模式
    ports: #容器需要暴露的端口号列表
    - name: string #端口的名称
      containerPort: int #容器需要监听的端口号
      hostPort: int #容器所在主机需要监听的端口号,默认与ports[0].containerPort相同.设置hostPort时,同一台宿主机将无法启动该容器的第2份副本(端口冲突)
      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请求,单位为core数,容器启动的初始可用数量
        memory: string #内存请求,单位可以为MiB/GiB等,容器启动的初始可用大小
  volumes: #在该pod上定义的共享存储卷列表
    - name: string #共享存储卷名称,容器定义部分的containers[].volumeMounts[].name将应用该共享存储卷的名称.而volume的类型包括(emptyDir,hostPath,gitRepo,nfs,glusterfs,persistentVolumeClaim,flocker,configMap,rdb,gcePersistentDisk,awsElasticBlockStore等),可以定义多个volume,每个volume的name必须唯一
      emptyDir: {} #此为类型是emptyDir的存储卷,与pod同生命周期的一个临时目录,值是空对象
      hostPath: #类型为hostPath的存储卷,标识挂载pod所在宿主机的目录,通过volumes[].hostPath.path指定
        path: string #pod所在主机的目录,将被用于容器中mount的目录
      secret: #类型为secret的存储卷,标识挂载集群预定义的secret对象到容器内部
        secretName: string 
        items:
        - key: string
          path: string
      configMap: #类型为configMap的存储卷,标识挂载集群预定义的configMap对象到容器内部
        name: string #configMap的名称
        items:
        - key: string
          path: string
    livenessProbe: #对pod内各个容器健康检查的设置,如果探测无响应几次后,系统将自动重启该容器.主要方式有三种(exec,httpGet,tcpSocket)
      exec: #以exec的方式检查pod内各个容器的健康状况
        command: [string] #exec方式需要指定的命令或脚本
      httpGet: #对pod内各个容器健康检查的设置,使用httpGet的方式
        path: string #get的路径
        port: number #get的端口号
        host: string #get的主机ip
        scheme: string #get的协议 http/https
        httpHeaders: #get的请求头
        - name: string #get请求头的key
          value: string #get请求头的值
      tcpSocket: #对pod内各个容器健康检查的设置,使用tcpSocket的方式
        port: number #检测number端口是否在使用
      initialDelaySeconds: 0 #容器启动完成后进行首次探测的时间,单位是秒
      timeoutSeconds: 1 #对容器健康检查的探测等待响应的超时时间设置,单位是秒,默认1秒.超过该超时时间时,将认为该容器不健康,并重启该容器.
      periodSeconds: 10 #对容器健康检查的定期探测时间设置,单位是秒,默认10秒探测一次
      successThreshold: 1 #探测成功的阈值,默认1次,达到该次数时,表示容器正常/健康
      failureThreshold: 3 #探测失败的阈值,达到该次数时,表示容器异常/不健康
      securityContext: #安全上下文,用于定义Pod或Container的权限和访问控制,用的少
        privileged: false
  restartPolicy: [Always | Never | onFailure] #pod的重启策略(Always:pod一旦终止运行,无论pod中的容器是如何终止的,kubelet都将重启它;OnFailure:只有pod以非0退出码终止时,kubelet才会重启该容器,如果容器正常结束,即退出码为0,kubelet则不会重启它
  nodeSelector: object #设置nodeSelector,表示将pod调度到包涵这些label的node节点上,以key:value格式指定{status:dev}
  imagePullSecrets: #拉取镜像时使用secret名称,以name:secretkey的格式指定
  - name: string
  hostNetwork: false #是否使用主机网络模式,默认false.如果设置为true,则表示容器使用宿主机网络,不在使用Docker网桥,该pod将无法在同一台宿主机上启动第二个相同副本.

撰写不易,喜欢的就点在赞和关注吧(* ̄︶ ̄)

转载请注明出处!

你可能感兴趣的:(文档,kubernetes,docker,pod,定义,容器)