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
拥抱不确定,未来可期!喜欢该文章请不吝点赞推荐,如有疑问欢迎留言,我们一起探讨。