k8s从入门到精通-Pod定义详解

YAML格式的Pod定义文件的完整内容如下:

apiVersion: v1                  # 版本号,例如v1
kind: Pod                       # 资源类型: Pod
metadata:                       # 元数据
  name: string                  # Pod的名称,命令规范符合RFC 1035规范
  namespace: string             # Pod所属的命名空间,默认值为default
  labels:                       # 自定义标签列表
    - name: string
  annotations:                  # 自定义注释列表
    - name: string
spec:                           # Pod容器的详细定义
  containers:                   # pod中容器的列表
  - name: string
    image: string
    imagePullPolicy: [Always|Never|IfNotPresent]  # 镜像拉取策略, 可选值为:Always、Never、IfNotPresent,默认为Always。Always,表示每次都尝试拉取镜像;IfNotPresent,表示如果本地有镜像,则使用本地镜像,本地不存在时拉取镜像;Never,表示仅使用本地镜像
    command: [string]            # 容器启动命令,如果不指定,则使用镜像打包时使用的命令
    args: [string]               # 容器启动命令的参数列表
    workingDir: string           # 容器的工作目录
    volumeMounts:                # 挂载到容器内部的存储卷配置
    - name: string               # 引用的pod定义的存储卷的名称,需要使用volume[]部分定义的共享存储卷名称
      mountPath: string          # 存储卷在容器内挂载的绝对路径,应少于512个字节
      readOnly: boolean          # 是否为只读模式, 默认为读写模式
    ports:
    - name: string
      containerPort: int         # 容器需要暴露的端口列表
      hostPort: int              # 容器所在的主机需要监听的端口号,默认与containerPort相同。设置hostPort是,同一台主机无法启动改容器的第二个副本
      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等,容器启动初始可用数量
    livenessProbe:               # 对pod内各容器健康检查的设置,当探测无响应几次之后,系统将自动重启该容器。可以设置的方法包括:exec、httpGet和tcpSocket,对一个容器仅需设置一种健康检查的方法
      exec:                      
        command: [string]        # exec方式需要指定命令或者脚本
      httpGet:                   # 对pod内各容器健康检查的设置,HTTPGet方式,需要指定path、port
        path: string
        port: number
        host: string
        scheme: string
        httpHearders:
        - name: string
          value: string
      tcpSocket:                 # 对pod内各容器健康检查的设置,tcpScoket方式
        port: number
      initialDelaySeconds: 0     # 容器启动后首次的探测时间,单位为s  
      timeoutSeconds: 0          # 对容器进行健康检查的探测等待响应的超时时间设置,单位为s,默认为1s;若超过该超时时间设置,则认为容器不健康,会重启该容器
      periodSeconds: 0           # 对容器进行健康检查定期探测时间设置,单位为s,默认为10s探测一次
      successThreshold: 0        # 探测器在失败后,被视为成功的最小连续成功数。默认值是 1。 存活和启动探测的这个值必须是 1。最小值是 1
      failureThreshold: 0        # 当探测失败时,Kubernetes 的重试次数。 存活探测情况下的放弃就意味着重新启动容器。 就绪探测情况下的放弃 Pod 会被打上未就绪的标签。默认值是 3。最小值是 1。
    securityContext:
      privileged: false
  restartPolicy: [Always|Never|OnFailure]  # 重启策略,可选Always、onFailture、Never。always: 一旦pod终止运行,无论容器是如何终止的,kubelet都将重启它;onFailture,只有pod以非零退出码终止时,kubelet才会重启该容器,如果容器正常结束(退出码为0),则kubelet将不会重启该pod;Never,pod终止后,kubelet将退出码报告给Master,不会重启该pod
  nodeSelector: object                     # 设置Node的Label,以key:value格式指定,pod将被调度到这些Label的Node上
  imagePullSecrets:                        # pull镜像时使用Secret名称,以name.secretkey格式指定
  - name: string
  hostNetwork: false             # 是否使用主机网络模式,默认为false,设置true表示容器使用宿主机网络,不再使用Docker网络,该Pod无法在同一台宿主机上启动第二个副本           
  volumes:                       # 在该pod上定义的共享存储卷列表
  - name: string                 # 共享存储卷的名称,在一个pod中每个存储卷定义一个名称,应符合RFC 1035规范,容器定义部分的containers[].volumeMount[].name将引用该存储的名称。volume的类型包括:(见详解)
    emptyDir: {}                 # 类型为emptyDir的存储卷,表示与pod同声明周期的一个临时目录,其值为一个空对象,emptyDir: {}
    hostPath:                    # 类型为hostPath的存储卷,表示pod挂载到宿主机的目录,通过volumes[].hostPath.path指定
      path: string               # pod容器挂载的宿主机的目录
    secret:                      # 类型为secret的存储卷,表示挂载集群预定义的secret对象容器内部
      secretName: string
      items:
      - key: string
        path: string
    configMap:                   # 类型为configMap的存储卷,表示挂载预定义的configMap对象到容器内部                         # 
      name: string
      items:
      - key: string
        path: string
posted @ 2021-08-06 17:00  早晨我在雨中采花  阅读(651)  评论(0编辑  收藏  举报