Deployment典型的使用场景如下:
- 使用Deployment创建对应的Pod副本
- 检查Deployment的状态判断部署是否完整,Pod数量是否达到预期
- 更新Deployment以创建新的Pod
- 如果当前的Deployment不稳定,回滚到一个之前的revision
- 扩容Deployment以应对高负载
- 指定容器的环境变量或启动命令
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: string # Deployment所在的命名空间
name: string # Deployment的名称
labels: # Deployment的标签
string
spec: # 描述该Deployment
replicas: int # Pod副本个数
selector: # Label Selector配置,管理具有以下标签的Pod
matchLabels:
string: string
template: # Pod模板
metadata:
labels: # Pod的标签
string
spec:
containers: # Pod中的容器
- name: string # 容器名
image: string # 容器镜像名
imagePullPolicy: [Always | Never | IfNotPresent ]
command: string # 容器的启动命令,如果不指定,则使用镜像打包时的启动命令
args: string # 容器启动命令参数列表
ports: # 容器要暴露的端口清单
- name: string # 容器端口名
containerPort: int # 容器要监听的端口号
protocol: string # 端口协议,支持TCP(默认)、UDP
resources: # 容器的资源配置
limits: # 资源上限配置
cpu: string
memory: string
requests: # 资源请求配置
cpu: string
memory: string
env: # 环境变量清单
- name: string # 环境变量的名
value: string # 环境变量的值
livenessProbe: # 存活探针配置,如果监测失败,将kill该容器,exec, httpGet, tcpSocket三者指定其一即可
exec:
command: string # exec模式要执行的命令
httpGet:
port:
path:
tcpSocket:
port: int
readinessProbe: # 就绪探针配置,exec, httpGet, tcpSocket三者指定其一即可
exec:
command: string
httpGet:
port:
path:
tcpSocket:
port: int
initialDelaySeconds: int # 启动后
timeoutSeconds: int
periodSeconds: int
successThreshold: int
failureThreshold: int
volumeMounts:
- name: string # 引用的存储卷的名称,需引用spec.template.spec.volumes[].name定义的存储卷
mountPath: string # 存储卷在容器内部挂载的绝对路径
readOnly: boolean # 存储卷是否为只读模式
restartPolicy: Always # 重启策略,默认Always
imagePullSecrets:
- name: string
nodeSelector: # 调度到具有这些label的节点上
string: string
hostNetwork: boolean # 是否启用宿主机网络模式,默认false, 启用时同一宿主机无法启动容器的第二个副本
volumes: # 定义共享存储卷
- name: string # 存储卷的名称
emptyDir: {} # emptyDir类型的共享存储卷
hostPath: # hostPath类型的共享存储卷,挂载宿主机中的指定目录
path: string # hostPath模式下,要挂载的宿主机目录
configMap: # configMap类型的存储卷,挂载configMap到容器内
name: string
items:
- key: string
path: string
网友评论