POD定义详解:
apiVersion: v1 //api版本 1.16.* - 1.19.* 是使用apps/v1beta1版本
kind: pod //定义什么就写什么,比如要写一个pod,那么kind就是pod,如果写一个server,那么就写server
metadata: //元数据
name: string //对应kind,这里是pod的名称
namespace: string //对应kind,这里是pod的命名空间,如果不填写默认是default
labels: //对应kind,这里是pod的标签列表,可以填写多个label
- name: string //对应labels(标签)列表,此行是列表中标签之一
annotations: //对应kind,这里是pod的注解列表
- name: string //对应annotations(注释),此行是注解列表中的之一
spec: //pod中容器的详细定义
containers: //pod中容器的列表
- name: string //容器的名称
image: string //容器的镜像名称
imagePullPolicy: Always | Never | IfNotPresent //拉取镜像策略: Always总是拉去镜像库镜像 Never仅使用本地镜像 IfNotPresent本地有镜像就不拉取镜像库镜像,如果没有就拉取镜像库镜像
command: [string] //容器的启动命令列表,如果不指定,则使用镜像打包时使用的启动命令
args: [string] //容器的启动命令参数列表
workingDir: string //容器的工作目录
volumeMounts: //挂载到容器内部的存储卷配置
- name: string //引用pod定义的共享存储卷的名称,需使用volumes[]部分定义的共享存储卷名称
mountPath: string //存储卷在容器内挂载的绝对路径,应少于512个字符
readOnly: boolean //是否为只读模式,默认为读写模式
ports: //容器需要暴露的端口号列表
- name: string //端口的名称
containerPort: int //容器需要监听的端口号
hostPort: int //容器所在主机需要监听的端口号,默认是与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等,容器启动的初始可用数量
livenessProbe: //对pod内各容器健康检查的设置,当探针无响应几次之后,系统将自动重启该容器。可以设置的方法包括:exec、httpGet和tcpSocket。对一个容器仅需设置一种健康方法。
exec: //对pod内各容器健康检查的设置,exec方式
command: [string] //exec方式需要指定的命令或者脚本
httpGet: //对pod内各容器健康检查的设置,httpGet方式,需指定path、port
path: string //指定的路径
port: number //指定的端口
host: string //指定的主机
scheme: string
httpHeaders:
- name: string
value: string
tcpSocket: //对pod内各容器健康检查的设置,tcpSocket方式
port: number
initialDelaySeconds: 0 //容器启动完成后首次探测的时间,单位为s
timeoutSeconds: 0 //对容器健康检查的探测等待响应的超时时间设置,单位为s,默认值为1s。若超过该超时时间设置,则将认为该容器不健康,会重启该容器
periodSeconds: 0 //对容器健康检查的定期探测时间设置,单位为s,默认10s探测一次
successThreshold: 0 //
failureThreshold: 0 //
securityContest:
privileged: false
restartPolicy: Always | Never | OnFailure //pod的重启策略,Always pod一旦终止运行,则无论容器是如何终止的,kubelet都将重启它,Never pod终止后,kubelet将退出码报告给master,不会再重启该pod,OnFailure 只有pod以非零退出码终止时,kubelet才会重启该容器。如果容器正常结束(退出码为0),则kubelet将不会重启它。
nodeSelector: object //设置node的label,以key:value格式指定,pod将被调度到具有这些label的node上
imagePullSecrets: //pull镜像时使用的secret名称,以name:secretkey格式指定
- name: string
hostNetwork: false //是否使用主机网络模式,默认值为false。设置为true表示容器使用宿主机网络,不再使用docker网桥,该pod将无法再同一台宿主机上启动第2个副本
volumes: //在该pod上定义的共享存储卷列表
- name: string //共享存储卷的名称,在一个pod中每个存储卷定义一个名称
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
内容参照《Kubernetes 权威指南》第五版,本书内容非常全面,值得学习的一本好书。