lifecycle

概念

创建资源对象时,可以使用lifecycle来管理容器在运行前和关闭前的一些动作。
lifecycle有两种回调函数:

PostStart:容器创建成功后,运行前的任务,用于资源部署、环境准备等。
PreStop:在容器被终止前的任务,用于优雅关闭应用程序、通知其他系统等等。


实例:
lifecycle:
preStop:
exec:
command:
- sh
- '-c'
- >-
PID=`pidof python` && kill -2 $PID && while ps -p $PID >
/dev/null; do sleep 1; done;


dep.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
kind: DeploymentConfig
metadata:
annotations:
description: Defines how to deploy the application server
creationTimestamp: '2018-10-11T07:06:40Z'
generation: 15
labels:
app: face-task-processor
template: com-sfg-python-consumer-celery
name: face-task-processor-d
namespace: paris-face-task
resourceVersion: '81963269'
selfLink: >-
uid: 33d691ac-cd24-11e8-95ba-00163e0ca1e8
spec:
replicas: 1
selector:
name: face-task-processor-d
strategy:
activeDeadlineSeconds: 21600
resources: {}
rollingParams:
intervalSeconds: 1
maxSurge: 25%
maxUnavailable: 25%
timeoutSeconds: 600
updatePeriodSeconds: 1
type: Rolling
template:
metadata:
annotations:
creationTimestamp: null
labels:
name: face-task-processor-d
name: face-task-processor-d
spec:
containers:
- env:
- name: INI_CMD
- name: RUN_CMD
value: make start-face-task-processor
- name: RUN_CMD_DIR
value: /data/home/work/face_task/
- name: GIT_REPO_NAME
value: face_task
- name: ALIYUN_PRODUCT
value: '1'
- name: ARSENAL_LOG_DIR
value: /opt/arsenal/
image: >-
docker-registry.default.svc:5000/face-task/face-task@sha256:3d7e527f36e44667fcc93c031ea8f1e3d4c69167c33cd1e16057bf087f7aab77
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
exec:
command:
- sh
- '-c'
- >-
PID=`pidof python` && kill -2 $PID && while ps -p $PID >
/dev/null; do sleep 1; done;
name: sfg-python-consumer-celery-container
readinessProbe:
exec:
command:
- sh
- '-c'
- ps -fe|grep start-face-task-processor |grep -v grep
failureThreshold: 3
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 3
resources:
limits:
cpu: '1'
memory: 1Gi
requests:
cpu: 100m
memory: 100Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /data/logs/
name: data-logs
dnsPolicy: ClusterFirst
nodeSelector:
servicetype: online
zone: zone-d
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- name: data-logs
persistentVolumeClaim:
claimName: pvc-logs
test: false
triggers:
- imageChangeParams:
containerNames:
- sfg-python-consumer-celery-container
from:
kind: ImageStreamTag
name: 'paris-face-task:latest'
namespace: paris-face-task
lastTriggeredImage: >-
docker-registry.default.svc:5000/face-task/face-task@sha256:3d7e527f36e44667fcc93c031ea8f1e3d4c69167c33cd1e16057bf087f7aab77
type: ImageChange
- type: ConfigChange
status:
availableReplicas: 1
conditions:
- lastTransitionTime: '2018-10-11T08:43:42Z'
lastUpdateTime: '2018-10-11T08:43:42Z'
message: Deployment config has minimum availability.
status: 'True'
type: Available
- lastTransitionTime: '2018-10-11T09:58:33Z'
lastUpdateTime: '2018-10-11T09:58:35Z'
message: >-
replication controller "face-task-processor-d-14" successfully rolled
out
reason: NewReplicationControllerAvailable
status: 'True'
type: Progressing
details:
causes:
- type: Manual
message: manual change
latestVersion: 14
observedGeneration: 15
readyReplicas: 1
replicas: 1
unavailableReplicas: 0
updatedReplicas: 1