赞
踩
目录
1、Yaml格式的Pod定义文件完整模板详解
2、Pod的基本用法
2.1 由1个容器组成的Pod示例
2.2 由两个为紧耦合关系的容器打包组成的Pod示例
3、静态Pod
3.1 配置文件方式
3.2 HTTP方式
4、Pod容器共享Volume
5、Pod的配置管理
5.1 ConfigMap概述
5.2 使用ConfigMap的局限
5.3 创建ConfigMap资源对象
5.4 在Pod中使用ConfigMap
5.5 其它注意事项
6、在容器内获取Pod信息(Downward API)
6.1 环境变量方式——将Pod信息注入为环境变量
6.2 环境变量方式——将容器资源信息注入为环境变量
6.3 Volume挂载方式实现注入
7、Pod生命周期和重启策略
7.1 Pod的状态
7.2 Pod的重启策略
7.3 常见的状态转换场景
8、Pod健康检查
8.1 LivenessProbe
8.2 LivenessProbe三种实现方式
8.3 ReadinessProbe
9、Pod调度管理
9.1 Deployment/RC:全自动调度
9.2 NodeSelector: 定向调度
9.3 NodeAffinity:Node亲和性调度
9.4 PodAffinity:Pod亲和与互斥调度策略
3)Pod的互斥性调度
9.5 Taints和Tolerations(污点和容忍)
9.6 DaemonSet:在每一个Node上调度一个Pod
9.7 Job:批处理调度
9.8 Cronjob:定时任务
9.9 自定义调度器
10、Init Container(初始化容器)
11、Pod的升级和回滚
11.1 Deployment
11.2 创建 Deployment
11.3 更新Deployment
11.4 回退Deployment
11.5 Deployment 扩容
11.6 暂停和恢复Deployment
11.7 Deployment 状态
11.8 金丝雀 Deployment
11.9 编写 Deployment Spec
11.10 其他管理对象的更新策略
12、Pod的自动扩容和缩容模式——HPA
13、StatefulSet
13.1 StatefulSet(有状态系统服务设计)
13.2 使用 StatefulSet 搭建 MongoDB 集群
属性名称
|
取值类型
|
是否必选
|
取值说明
|
version
|
String
|
Required
|
版本号,例如 v1
|
kind
|
String
|
Required
|
Pod
|
metadata
|
Object
|
Required
|
元数据
|
metadata.name
|
String
|
Required
|
Pod 的名称,命名规范需符合 RFC 1035 规范
|
metadata.namespace
|
String
|
Required
|
Pod 所属的命名空间,默认值为 default
|
metadata.labels[]
|
List
|
|
自定义标签列表
|
metadata.annotation[]
|
List
|
|
自定义注解列表
|
Spec
|
Object
|
Required
|
Pod 中容器的详细定义
|
spec.containers[]
|
List
|
Required
|
Pod 中的容器列表
|
spec.containers[].name
|
String
|
Required
|
容器的名称,需符合 RFC 1035 规范
|
spec.containers[].image
|
String
|
Required
|
容器的镜像名称
|
spec.containers[].imagePullPolicy
|
String
|
|
获取进行的策略,可选值包括:Always、Never、InfNotPresent,默认值为 Always。
Always:表示每次都尝试重新下载镜像。
Never:表示仅使用本地镜像。
InfNotPresent:表示如果本地有该镜像,则使用本地镜像,本地不存在时下载镜像。
|
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 的绝对路径,应少于 512 个字符
|
spec.containers[].volumeMounts[].readOnly
|
Boolean
|
|
是否为只读模式,默认值为读写模式
|
spec.containers[].ports[]
|
List
|
|
容器是否需要暴露的端口号列表
|
spec.containers[].ports[].name
|
String
|
|
端口的名称
|
spec.containers[].ports[].containerPort
|
Int
|
|
容器需要监听的端口号
|
spec.containers[].ports[].hostPort
|
Int
|
|
容器所在主机需要监听的端口号,默认与 containerPort 相同。设置 hostPort 时,同一台宿主机将无法启动该容器的第二份副本
|
spec.containers[].ports[].protocol
|
Srting
|
|
端口协议,支持 TCP 和 UDP,默认值为 TCP
|
spec.containers[].env[]
|
List
|
|
容器运行前需设置的环境变量列表
|
spec.containers[].env[].name
|
String
|
|
环境变量的名称
|
spec.containers[].env[].valume
|
String
|
|
环境变量的值
|
spec.containers[].resources
|
Object
|
|
资源限制和资源请求的设置,可以阅读
Kubernetes Resources
|
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、hostPath、gcePersistentDisk、awsElasticBlockStore、gitRepo、secret、nfs、iscsi、glusterfs、persistentVolumeClaim、rbd、flexVolume、cinder、cephfs、flocker、downwardAPI、fc、azureFile、configMap、vsphereVolume,可以定义多个 volume,每个 volume 的 name 保持唯一。
|
spec.volumes[].emptyDir
|
Object
|
|
类型为 emptyDir 的存储卷,表示与 Pod 同生命周期的一个临时目录,其值为一个空对象:emptyDir: {}
|
spec.volumes[].hostPath
|
Object
|
|
类型为 hostPath 的存储卷,表示挂载 Pod 所在宿主机的目录,通过 volumes[].hostPath 指定
|
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。对一个容器仅需设置一种健康检查方法。可参见:
Kubernetes Healthcheck
|
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[].livenessProbe.initialDelaySeconds
|
Number
|
|
容器启动完成后进行首次探测的时间,单位为 s
|
spec.volumes[].livenessProbe.timeoutSeconds
|
Number
|
|
对容器健康检查的探测等待相应的超时时间设置,单位为 s,默认值为 1s。超过该超时时间的设置,将认为该容器不健康,将重启该容器。
|
spec.volumes[].livenessProbe.periodSeconds
|
Number
|
|
对容器健康检查的定期探测时间设置,单位为 s,默认为 10s 探测一次
|
spec.restartPolicy
|
String
|
|
Pod 的重启策略,可选值为 Always、OnFailure、Never,默认值为 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:secretkey 格式指定
|
spec.hostNetwork
|
Boolean
|
|
是否使用主机网络模式,默认值为 false,如果设置为 true,则表示容器使用宿主机网络,不再使用 Docker 网桥,该 Pod 将无法在同一台宿主机上启动第 2 个副本
|
状态值 | 说明 |
Pending | API Server已经创建了该Pod,但Pod中的一个或多个容器的镜像还没有创建,包括镜像下载过程 |
Running | Pod内所有容器已创建,且至少一个容器处于运行状态、正在启动状态或正在重启状态 |
Completed
| Pod内所有容器均成功执行退出,且不会再重启 |
Failed | Pod内所有容器均已退出,但至少一个容器退出失败 |
Unknown |
由于某种原因无法获取Pod状态,例如网络通信不畅
|
重启策略 | 说明 |
Always | 当容器失效时,由kubelet自动重启该容器 |
OnFailure | 当容器终止运行且退出码不为0时,由kubelet自动重启该容器 |
Never | 不论容器运行状态如何,kubelet都不会重启该容器 |
Pod包含的容器数 |
Pod当前的状态
|
发生事件
| Pod的结果状态 |
|
|
RestartPolicy=Always | RestartPolicy=OnFailure | RestartPolicy=Never | |||
包含一个容器 | Running | 容器成功退出 | Running | Succeeded | Succeeded |
包含一个容器 | Running | 容器失败退出 | Running | Running | Failure |
包含两个容器 | Running | 1个容器失败退出 | Running | Running | Running |
包含两个容器 | Running | 容器被OOM杀掉 | Running | Running | Failure |
Job类型
|
使用示例
|
行为
|
completions
|
Parallelism
|
一次性Job
|
数据库迁移
|
创建一个Pod直至其成功结束
|
1
|
1
|
固定结束次数的Job
|
处理工作队列的Pod
|
依次创建一个Pod运行直至completions个成功结束
|
2+
|
1
|
固定结束次数的并行Job
|
多个Pod同时处理工作队列
|
依次创建多个Pod运行直至completions个成功结束
|
2+
|
2+
|
并行Job
|
多个Pod同时处理工作队列
|
创建一个或多个Pod直至有一个成功结束
|
1
|
2+
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。