Kubernetes----资源清单定义Pod.yaml

pod.yaml(kubectl explain pod)

KIND:     Pod
VERSION:  v1

DESCRIPTION:
     Pod is a collection of containers that can run on a host. This resource is
     created by clients and scheduled onto hosts.

apiVersion: v1  #版本号
kind: Pod #资源类型
metadata: > #元数据
  name: > #pod名称
  namespace: > #pod所属命名空间
  labels: [string]string> #标签列表
    key1: value1
    key2: value2
  annotations: [string]string> #资源注解,与label不同在于他不能用于挑选资源对象,仅用于为对象提供“元数据”。
    key1: value1
    key2: value2
spec: > #必选,pod中容器的详细定义
  containers: <[]Object> -required- #pod中的容器列表,可以有多个容器
  - name: > -required- #容器名称
    image: > -required- #容器的镜像名称
    imagePullPolicy: > (Always, Never, IfNotPresent) #获取镜像的策略,Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像,如果是lastest默认为Always,否则默认为IfNotPresent
    command: <[]string> #容器的启动命令列表,如不指定,使用打包时使用的启动命令,需要指定bash shell,对应Dockerfile的ENTRYPOINT,定义command后,只会运行command下的命令(优先执行与其他子字段下的command)
    args: <[]string> #容器的启动命令参数列表,向command中传参数,对应Dockerfile的CMD
    workingDir: > #容器的工作目录
    ports: <[]Object> #需要暴露的端口列表
    - name: > #端口号名称
      containerPort: > -required- #容器所在pod的IP地址上暴露的端口
      hostPort: > #容器所在节点暴露的端口,默认与Container相同
      hostIP: > #绑定host主机IP地址对应外部端口(调度节点不确定)
      protocol: > #端口协议,支持TCP和UDP,默认TCP
    volumeMounts: <[]Object> #挂载到容器内部的存储卷配置
    - name: #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名
      mountPath: > -required- #存储卷在容器内mount的绝对路径  
    env: <[]Object>
      name: > -required-
      value: >
      valueFrom: >
    livenessProbe: > #容器存活状态探测
      exec: > # 执行用户自定义命令
        command: <[]string>
      httpGet: > #指定要执行的http请求
        host: > #Pod的IP地址
        httpHeaders: > 
        path: > #表示向哪个url发起请求
        port: > -required- #指定端口
      tcpSocket: > #指定涉及TCP端口的操作。 尚不支持TCP挂钩
        host: > #Pod的IP地址
        port: > -required- #指定端口
      initialDelaySeconds: > #在容器启动后多少秒进行探测,默认容器启动就探测(主进程需要启动时间)
      failureThreshold: > #探测器探测的最小连续故障次数,到达此次数即视为失败,默认3,最小1
      successThreshold: >
      periodSeconds: > #执行探测的频率(单位s),默认10s,最下1s
      timeoutSeconds: > #探测超时的秒数,默认1s
    readinessProbe: > #就绪状态探测,子字段和livenessProbe一样
    lifecycle: >
      postStart: > #在容器创建后立即执行的
        exec: >
        httpGet: >
        tcpSocket: >
      preStop: > #在容器终止后立即执行的
  volumes: <[]Object>
    emptyDir: {}
    hostPath: >
      path: > -required-
      type: > #DirectoryOrCreate:宿主机目录不存在就创建;Directory:宿主机目录必须存在;FileOrCreate:宿主机文件不存在就创建;File:宿主机文件必须存在;Socket:;CharDevice:BlockDevice:;默认为空
    nfs: >
      path: > -required-
      readOnly: > #默认false
      server: > -required- #NFS server地址
    persistentVolumeClaim: >
      claimName: > -required-
      readOnly: >
  nodeName: > #通过节点名称选择指定的部署主机
  nodeSelector: |string|string> #标签选择器,通过标签指定部署的节点(标签:key: value)
  restartPolicy: > #pod内容器重启策略,Always:总是重启、OnFailure:只有状态错误才重启、Never:从来不重启,默认总是重启
  hostNetwork: > #是否使用主机的网络命名空间
  hostPID: >
  hostIPC: >
  serviceAccountName: > #指定创建的serviceaccount名称
status: >

args与command比较

Image Entrypoint Image Cmd Container command Container args Command run
[/ep-1] [foo bar] [ep-1 foo bar]
[/ep-1] [foo bar] [/ep-2] [ep-2]
[/ep-1] [foo bar] [zoo boo] [ep-1 zoo boo]
[/ep-1] [foo bar] [/ep-2] [zoo boo] [ep-2 zoo boo]

你可能感兴趣的:(Kubernetes)