YAML格式Pod定义文件及详解
1 apiVersion: v1 2 kind: Pod 3 metadata: 4 name: string 5 namaspace: string 6 labels: 7 - name: string 8 annotations: 9 - name: string 10 spec: 11 containers: 12 - name: string 13 images: string 14 imagePullPolice: [Always | Never | IfNotPresent] 15 command: [string] 16 args: [string] 17 workingDir: string 18 volumeMounts: 19 - name: string 20 mountPath: string 21 readOnly: boolean 22 ports: 23 - name: string 24 containerPort: int 25 hostPort: int 26 protocol: string 27 env: 28 - name: string 29 value: string 30 resources: 31 limits: 32 cpu: string 33 memory: string 34 requests: 35 cpu: string 36 memory: string 37 livenessProbe: 38 exec: 39 command: [string] 40 httpGet: 41 path: string 42 port: int 43 host: string 44 scheme: string 45 httpHeaders: 46 - name: string 47 value: string 48 tcpSocket: 49 port: number 50 initialDelaySeconds: 0 51 timeoutSeconds: 0 52 periodSeconds: 0 53 successThreshold: 0 54 failureThreshold: 0 55 securityContext: 56 privileged: false 57 restartPolicy: [Always | Never | OnFailure] 58 nodeSelector: object 59 imagePullSecrets: 60 - name: string 61 hostNetwork: false 62 volumes: 63 - name: string 64 emptyDir: {} 65 hostPath: 66 path: string 67 secret: 68 secretName: string 69 items: 70 - key: string 71 path: string 72 configMap: 73 name: string 74 items: 75 - key: string 76 path: string
属性名称
|
取值类型
|
是否必选
|
取值说明
|
apiVersion: v1 | String | Requried | 版本号,例如v1,版本号必须可以用 kubectl api-versions 查询到 |
kind: Pod | String | Requried | Pod |
metadata: | Object | Requried | 元数据 |
name: string | String | Requried | Pod名称,需符合RFC 1035规范 |
namespace: string | String | Requried | Pod所属的命名空间,默认为"default" |
labels: | List | 自定义标签 | |
- name: string | String | 自定义标签名字 | |
annotations: | List | 自定义注释列表 | |
- name: string | |||
spec: | Object | Requried | Pod中容器的详细定义 |
containers: | List | Requried | Pod中容器列表 |
- name: string | String | Requried | 容器名称,需符合RFC 1035规范 |
image: string | String | Requried | 容器的镜像名称 |
imagePullPolicy: [ Always|Never|IfNotPresent ] | String | 获取镜像的策略,默认值为Alawys,Alawys表示每次都尝试下载镜像,IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像 | |
command: [string] | List | 容器的启动命令列表,如不指定,使用打包时使用的启动命令 | |
args: [string] | List | 容器的启动命令参数列表 | |
workingDir: string | String | 容器的工作目录 | |
volumeMounts: | List | 挂载到容器内部的存储卷配置 | |
- name: string | String | 引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名 | |
mountPath: string | String | 存储卷在容器内mount的绝对路径,应少于512字符 | |
readOnly: boolean | Boolean | 是否为只读模式,默认为读写模式 | |
ports: | List | 需要暴露的端口库号列表 | |
- name: string | String | 端口的名称 | |
containerPort: int | Int | 容器需要监听的端口号 | |
hostPort: int | Int | 容器所在主机需要监听的端口号,默认与Container相同 | |
protocol: string | String | 端口协议,支持TCP和UDP,默认TCP | |
env: | List | 容器运行前需设置的环境变量列表 | |
- name: string | String | 环境变量名称 | |
value: string | String | 环境变量的值 | |
resources: | Object | 资源限制和请求的设置 | |
limits: | Object | 资源限制的设置 | |
cpu: string | String | CPU的限制,单位为core数,将用于docker run --cpu-shares参数 | |
memory: string | String | 内存限制,单位可以为Mib/Gib,将用于docker run --memory参数 | |
requests: | Object | 资源限制的设置 | |
cpu: string | String | CPU请求,容器启动的初始可用数量 | |
memory: string | String | 内存请求,容器启动的初始可用数量 | |
livenessProbe: | Object | 对Pod内各容器健康检查的设置,当探测无响应几次后将自动重启该容器,可设置的方法包括exec、httpGet和tcpSocket,对一个容器仅需设置其中一种健康检查方法 | |
exec: | Object | 对Pod容器内检查方式设置为exec方式 | |
command: [string] | String | exec方式需要制定的命令或脚本 | |
httpGet: | Object | 对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port | |
path: string | |||
port: number | |||
host: string | |||
scheme: string | |||
HttpHeaders: | |||
- name: string | |||
value: string | |||
tcpSocket: | Object | 对Pod内个容器健康检查方式设置为tcpSocket方式 | |
port: number | |||
initialDelaySeconds: 0 | Number | 容器启动完成后首次探测的时间,单位为秒 | |
timeoutSeconds: 0 | Number | 对容器健康检查探测等待响应的超时时间,单位秒,默认1秒,若超过该超时时间设置,则认为该容器不健康,会重启该容器 | |
periodSeconds: 0 | Number | 对容器监控检查的定期探测时间设置,单位秒,默认10秒一次 | |
successThreshold: 0 | |||
failureThreshold: 0 | |||
securityContext: | |||
privileged: false | |||
restartPolicy: [Always | Never | OnFailure] | String | Pod的重启策略,(1)Always表示一旦不管以何种方式终止运行,kubelet都将重启它,(2)OnFailure表示只有Pod以非0退出码退出才重启,如果容器正常结束(退出码为0)kubelet将不会重启它,(3)Nerver:Pod终止后,kubelet将退出码报告给Master,不会再重启该Pod。 | |
nodeSelector: obeject | Object | 设置NodeSelector表示将该Pod调度到包含这个label的node上,以key:value的格式指定 | |
imagePullSecrets: | Object | Pull镜像时使用的secret名称,以name:secretkey格式指定 | |
- name: string | |||
hostNetwork: false | Boolean | 是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络,不再使用Docker网桥,该Pod将无法在同一宿主机上启动第2哥副本 | |
volumes: | List | 在该pod上定义共享存储卷列表 | |
- name: string | String |
共享存储卷名称 ,在一个Pod中每个存储卷定义一个名称,应符合RFC 1035规范。容器定义部分的containers[].volumeMounts[].name将引用该共享存储卷的名称。
Volume的类型包括:emptyDir、hostPath、gcePersistentDisk、awsElasticBlockStore、gitRepo、secret、nfs、iscsi、glusterfs、persistentVolumeClaim、rbd、flexVolume、cinder、cephfs、flocker、downwardAPI、fc、azureFile、configMap、vsphereVolume,可以定义多个Volume,每个Volume的name保持唯一。
|
|
emptyDir: {} | Object | 类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值 | |
hostPath: string | Object | 类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录 | |
path: string | String | Pod所在宿主机的目录,将被用于同期中mount的目录 | |
secret: | Object | 类型为secret的存储卷,挂载集群与定义的secre对象到容器内部 | |
scretname: string | |||
items: | |||
- key: string | |||
path: string | |||
configMap: | Object | 类型为configMap的存储卷,挂载预定义的configMap对象到容器内部 | |
name: string | |||
items: | |||
- key: string | |||
path: string |