Pod
Pod是Kubernetes的最重要也是最基本的概念,每个Pod 都有个特殊被称为“根容器”的 Pause 容器 ,除了 Pause 容器,每个 Pod 还包含 一个或多个紧密相关的用户业务容器。下面为一个pod配置文件示例:
apiVersion : vl
kind: Pod
metadata :
name : string
namespace: string
labels:
- name: string
annotations:
- name: string
spec:
containers :
- name : stri且q
image : string
imagePullPolicy:[Always I Never I IfNotPresent]
command : [string]
args: [string]
workingDir: string
volumeMounts:
- name: string
mountPath: string
readOnly: boolean
ports:
- name: string
containerPort: int
hostPort : int
protocol : string
env:
- name: string
value : string
resources :
limits:
cpu : string
memory : string
requests :
cpu: string
memory : str ng
livenessProbe:
exec:
command: [string]
httpGet:
path: string
port umber
host: string
scheme: string
httpHeaders:
- name: string
value: string
tcpSocket:
port : number
initialDelaySeconds : 0
timeoutSeconds: 0
periodSeconds: 0
successThreshold: 0
failureThreshold : 0
securityContext :
privileged: false
restartPolicy: [Always I Never I OnFailure]
nodeSelector: object
imagePullSecrets :
- name: string
hostNetwork : false
volumes:
- name : string
emptyDir : {}
hostPath :
path : string
secret :
secretName : string
items:
- key : string
path: string
configMap:
name: string
items :
- key : string
path: string
配置文件解析
解析格式:编码:取值类型:是否必选:取值说明
version:String:必选:版本号,例如v1
kind:String:必选:pod
metadata:String:必选:元数据
metadata.namespace:String:必选:pod的名称,命名规范需要符合RFC 1035规范
metadata.lables[]:List:非必选:自定义标签列表
metadata.annotation[]:List:非必选:自定义注解列表
Spec:Object:必选:pod中容器的详细定义
spec.containers[]:List:必选:Pod中的容器列表
spec.containers[].name:String:必选:容器的名称,需符合RFC 1035规范
spec.containers[].image:String:必选:容器的镜像名称
spec.containers[].imagePullPolicy:String:非必选:获取镜像的策略,可选值包括: Always,Never,IfNotPresent ,默认值为 Always
Always 表示每次都尝试重新下载镜像;
IfNotPresent 表示如果本地有该镜像,则使用本地安卓的镜像,本地不存在时下载镜像;
Never 表示仅使用本地镜像;
spec.containers[].command[]:List:非必选:容器的启动命令,如果不指定,则使用镜像打包时使用的启动命令
spec.containers[].args[]:List:非必选:容器的启动命令参数列表
spec.containers[].workingDir:String:非必选:容器的工作目录
spec.containers[].volumeMounts[]:List:非必选:挂载到容梅内部的存储卷配置
spec.containers[].volumeMounts[].name:String:非必选:引用 Pod 定义的共享存储卷的名称,需使用volumes[]部分定义的共享存储卷名称
spec.containers[].volumeMounts[].mountPath:String:非必选:存储卷在容器内 Mount 绝对路径,应少于 12个字符
spec.containers[].volumeMounts[].readOnly:Boolean:非必选:是否为只读模式,默认值为读写模式
spec.containers[].ports[]:List:非必选:容器需要暴露的端口号列表
spec.containers[].ports[].name:String:非必选:端口名称
spec.containers[].ports[].containerPort:String:非必选:容器挥自要监听的端口号
spec containers[].ports[] .hostPort:String:非必选:容器所在主机需要监听的端口号,默认与containerPort 相同。设置 hostPort 时,同台宿主机将无法启动该容器的第2份副本
spec.containers[].ports[].protocol:String:非必选:端口协议,支持 TCP/UDP ,默认值为 TCP
spec.containers[] .env[]:List:非必选:容器运行前需设置的环境变量列表
spec.containers[].env[].name:String:非必选:环境变盘的名称
spec.containers[].env[].value:String:非必选:环填变量的值
spec.containers[].resources:Object:非必选:资源限制和资源请求的设置
spec.containers[].resources.limits:Object:非必选:资源限制的设置
spec.containers[] .resources.limits.cpu:String:非必选:CPU 限制,单位为 core 数,将用 docker run --cpu- shares 参数
spec.containers[].resources.limits.memory:String:非必选:内存限制,单位可以为 MiB/GiB 等,将用于 docker run --memory 参数
spec.containers[].resources.requests:Object:非必选:资源限制的设置
spec.containers[].resources.requests.cpu:String:非必选:CPU 请求,单位为 core 数, 容器启动的初始可用数量
spec.containers[]
.resources.requests.memory:String:非必选:内存请求,单位可以为 MiB/GiB 等,容器启动的初始可用数量
spec.volumes[]:List:非必选:在该 Pod 上定义的共享存储卷列表
spec.volumes[].name:String:非必选:共享存储卷的名称,在 Pod 中每个存储卷定义一个名称,应符合RFC 1035 规范。容器定义部分的 containers[].volumeMounts[].name 将引用该共享存储卷的名称。Volume 类型包括 emptyDir、 hostPathgce、PersistentDisk、awsElasticBlockStore、gitRepo、secret 、nfs 、iscsi 、glusterfs 、persistentVolumeClaim、rbd、flexVolume、cinder、cephfs、flecker 、downwardAPI、fc、azureFile、configMap、vsphereVolume,可以 定义多个 volume ,每个volume name 保持唯一 。
spec.volumes[].emptyDir:Object:非必选:类型为 emptyDir 的存储卷, 表示与 Pod 生命周期一个临时目录,其值为 个空对象: emptyDir: {}
spec. volumes[] .hostPath:Object:非必选:类型为 hostPath 的存储卷,表示挂载 Pod 所在宿主机的目录,通过 volumes[]. hostPath.path 指定
spec.volumes[].hostPath.path:String:非必选:Pod 在主机的目录,将被用于容器中 mount的目录
spec.volumes[].secret:Object:非必选:类型为 secret 的存储,表示挂载集群预定义的secret 对象到容器内部
spec.volumes[].configMap:Object:非必选:类型为 configMap 的存储卷, 表示挂载集群预定义的 configMap 对象到容器内部
spec.volumes[].livenessProbe:Object:非必选:对Pod 内各容器健康检查的设置,当探测无响应几次之后,系统将自动启动该容器。可以设置的方法包括: exec httpGet tcpSocket。对一个容器仅需设置一种健康检查方法
spec.volumes[].livenessProbe.exec:Object:非必选:对Pod 内各容器健康检查的设置, exec 方式
spec .volumes[]
.livenessProbe.exec.command[]:String:非必选:exec 方式需要指定的命令或者脚本
spec.volumes[].livenessProbe.httpGet:Object:非必选:对Pod 内各容器健康检查的设置, HTTPGet 方式.需指定 path、 port
spec.volumes[].livenessProbe.tcpSocket:Object:非必选:对Pod 各容器健康检查的设置, tcpSocket 方式
spec.volumes[]
.livenssProbe.initialDelaySeconds:Numeber:非必选:容器启动完成后进行首次探测的时间,单位为s
spec.volumes[]
.livenessProbe.timeoutSeconds:Numeber:非必选:对容器健康检查的探测等待响应的超时时间设置,单位为 s,默认值为1 s. 超过该超时时间设置,将认为该容器不健康,将重启该容器
spec.volumes[]
.livenessProbe.periodSeconds:Numeber:非必选:对容器健康检查的定期探测时间设置,单位为 s,默认为10s探测一次
spec.restartPolicy:String:非必选:Pod 的重启策略,可选值为 Always,OnFailure,默认值为Always.
Always: Pod 一旦终止运行,则无论容器是如何终止的, kubelet 都将将启它.
OnFailure :只有 Pod 以非零退出码终止时, kubelet才会重启该容器.如果容器正常结束(退出码为0),则 kubelet 将不会重启它。
Never: Pod 终止后, kubelet将退出码报告给Master,不会再重启该Pod
spec.nodeSelector:Object:非必选:设置 NodeSelector 表示将该 Pod 调度到包含这些
label的Node 上,以 key:value 格式指定
spec.imagePullSecrets:Object:非必选:Pull 镜像时使用的 secret 名称,以 name :sec retkkey格式指定
spec.hostNetwork:Boolean:非必选:是否使用主机网络模式,默认值为false ,如果设
置为true ,则表示容器使用宿主机网络,不再使用Docker 网桥,该 Pod 将无法在同一台宿主机上启动第2个副本
Pod是Kubernetes的基本执行单元,每个Pod包含至少一个Pause容器和一个或多个用户容器。Pod内的容器共享网络和存储资源,配置文件涉及容器镜像、端口映射、资源限制、健康检查等多个方面,是定义应用部署和服务的重要部分。

890

被折叠的 条评论
为什么被折叠?



