Merge pull request #117393 from HirazawaUi/use-wait-replace-loop

Use wait to avoid blocking the SIGTERM handler
This commit is contained in:
Kubernetes Prow Robot 2023-05-23 19:07:00 -07:00 committed by GitHub
commit e28866e976
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 9 deletions

View File

@ -155,12 +155,17 @@ var _ = SIGDescribe("Deleted pods handling [NodeConformance]", func() {
Image: imageutils.GetE2EImage(imageutils.BusyBox),
Command: []string{"sh", "-c"},
Args: []string{`
sleep 9999999 &
PID=$!
_term() {
kill $PID
echo "Caught SIGTERM signal!"
exit 0
}
trap _term SIGTERM
while true; do sleep 5; done
wait $PID
exit 0
`,
},
},

View File

@ -560,6 +560,11 @@ func getPriorityClass(name string, value int32) *schedulingv1.PriorityClass {
}
return priority
}
// getGracePeriodOverrideTestPod returns a new Pod object containing a container
// runs a shell script, hangs the process until a SIGTERM signal is received.
// The script waits for $PID to ensure that the process does not exist.
// If priorityClassName is scheduling.SystemNodeCritical, the Pod is marked as critical and a comment is added.
func getGracePeriodOverrideTestPod(name string, node string, gracePeriod int64, priorityClassName string) *v1.Pod {
pod := &v1.Pod{
TypeMeta: metav1.TypeMeta{
@ -576,13 +581,16 @@ func getGracePeriodOverrideTestPod(name string, node string, gracePeriod int64,
Image: busyboxImage,
Command: []string{"sh", "-c"},
Args: []string{`
_term() {
echo "Caught SIGTERM signal!"
while true; do sleep 5; done
}
trap _term SIGTERM
while true; do sleep 5; done
`},
sleep 9999999 &
PID=$!
_term() {
echo "Caught SIGTERM signal!"
wait $PID
}
trap _term SIGTERM
wait $PID
`},
},
},
TerminationGracePeriodSeconds: &gracePeriod,