Deployment 模板
Deployment 模板
以下是一个完整的 Deployment 模板:
apiVersion: apps/v1 #必选,早前版本有extensions/v1beta1或apps/v1beta1
kind: Deployment #必选,类型为Deployment
metadata: #必选,元数据信息
name: myapp #必选,Deploy的名称
namespace: pro #命名空间,实际部署到的环境
labels: #标签
app: myapp #应用名
version: v1 #版本
env: pro #发布环境
tier: frontend #构架,区分前后端或base基础服务
partition: HangZhou #服务器地区信息
project: k8s #所属项目名
spec: #必选,规格说明
replicas: 3 #必选,副本数量
selector: #标签选择器,用来选择Pod
matchLabels: #标签选择器
app: myapp #选择标签键值对
matchExpressions: #使用标签选择表达式,如果同时两种标签选择则必须都满足
- {key: tier, operator: In, values: [cache]}
minReadySeconds: 10 #启动多长时间内容器未发生崩溃等异常状态视为就绪,默认0秒
template: #必选,定义Pod的模板
metadata:
labels: #生成Pod的标签
app: myapp #可以和选择器一致
spec:
terminationGracePeriodSeconds: 60 #发送SIGTERM信号后等待程序关闭的时间
restartPolicy: Always #重启策略
serviceAccountName: flannel #SA账号名
nodeSelector:
disktype: SSD
tolerations: #污点信息
- effect: NoSchedule
operator: Exists
containers:
- name: myapp #Pod内运行容器名
image: my.com/user/myapp:1.0 #拉取镜像地址
imagePullPolicy: IfNotPresent
command: #容器启动后的命令,还可以用["sleep", "999999"]格式
- sh
- -C
- 'while true; do echo "waiting"; sleep 5; done; echo "Done"'
args: #命令参数
- '-config.file=/etc/prometheus/prometheus.yml'
ports: #容器端口
- name: http #端口名称
containerPort: 8080 #指定容器内端口
hostPort: 811 #指定映射到的节点端口,通过节点IP:端口即能访问
protocol: TCP #定义协议,还可以是UDP
env: #通过环境变量的方式,直接传递自定义环境变量
- name: LOCAL_KEY #本地Key
value: value #key值
- name: CONFIG_MAP_KEY #局策略可使用configMap的配置Key
valueFrom: #指定来源
configMapKeyRef: #来自configMap
name: special-config #选择name为special-config的configmap
key: special.type #选择的key
resources: #资源信息
requests: #请求最小资源
cpu: 0.1
memory: 100Mi
limits: #限制最大资源
cpu: 0.2
memory: 320Mi
livenessProbe: #存活探针
httpGet: #采用HTTP GET方式
path: /health #监测路径
port: 8080 #端口
scheme: HTTP #方式
initialDelaySeconds: 60 #启动后延时多久开始运行监测
timeoutSeconds: 5 #超时时间
successThreshold: 1 #处于失败状态时,探测至少连续成功多少次转为成功
failureThreshold: 5 #处于成功状态时,探测至少连续失败多少次转为失败
readinessProbe: #就绪探针
httpGet:
path: /
port: 80
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 5
volumeMounts: #挂载volumes中定义的磁盘
- name: sdb #Volume的名称
mountPath: /data/media #挂载到容器中的路径
subPath: /nginx/config #挂载卷内目录的绝对路径
volumes: #挂载卷信息
- name: log-cache
emptyDir: {} #挂载临时卷
- name: sdb
hostPath: #挂载节点上的目录
path: /any/path #说明路径
- name: example-volume-config #供ConfigMap文件内容到指定路径使用
configMap:
name: example-volume-config #ConfigMap中名称
items:
- key: log-script #ConfigMap中的Key
path: path/to/log-script #指定目录下的一个相对路径path/to/log-script
- name: nfs-client-root
nfs: #挂载NFS类型储存
server: 10.10.0.55 #NFS服务器地址
path: /opt/public #NFS中共享的路径
- name: rbd-pvc
persistentVolumeClaim: #挂载PVC
claimName: rbd-pvc1 #挂载已经申请的PVC