Skip to content

Commit 73c3304

Browse files
committed
Merge pull request #670 from helgi/faster_pod_delete
ref(scheduler): use termination grace period for Pod delete
2 parents f8f7927 + 72d5470 commit 73c3304

1 file changed

Lines changed: 14 additions & 10 deletions

File tree

rootfs/scheduler/__init__.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1309,23 +1309,27 @@ def _delete_pod(self, namespace, name):
13091309
if unhealthy(resp.status_code):
13101310
error(resp, 'delete Pod "{}" in Namespace "{}"', name, namespace)
13111311

1312-
# Verify the pod has been deleted. Give it 30 seconds.
1313-
for _ in range(30):
1312+
# Verify the pod has been deleted
1313+
# Only wait as long as the grace period is - k8s will eventually GC
1314+
for _ in range(settings.KUBERNETES_POD_TERMINATION_GRACE_PERIOD_SECONDS):
13141315
try:
1315-
self._get_pod(namespace, name)
1316+
pod = self._get_pod(namespace, name).json()
1317+
# http://kubernetes.io/docs/user-guide/pods/#termination-of-pods
1318+
if 'deletionTimestamp' in pod['metadata']:
1319+
deletion = datetime.strptime(
1320+
pod['metadata']['deletionTimestamp'],
1321+
settings.DEIS_DATETIME_FORMAT
1322+
)
1323+
1324+
# past the graceful deletion period
1325+
if deletion < datetime.utcnow():
1326+
return
13161327
except KubeHTTPException as e:
13171328
if e.response.status_code == 404:
13181329
break
13191330

13201331
time.sleep(1)
13211332

1322-
# Pod was not deleted within the grace period.
1323-
try:
1324-
self._get_pod(namespace, name)
1325-
except KubeHTTPException as e:
1326-
if e.response.status_code != 404:
1327-
error(e.response, 'delete Pod "{}" in Namespace "{}"', name, namespace)
1328-
13291333
def _pod_log(self, namespace, name):
13301334
url = self._api("/namespaces/{}/pods/{}/log", namespace, name)
13311335
response = self.session.get(url)

0 commit comments

Comments
 (0)