У меня есть Kubernetes Daemonset, работающий в моей версии кластера GKE:
Server Version: version.Info{Major:"1", Minor:"9+", GitVersion:"v1.9.6-gke.1", GitCommit:"cb151369f60073317da686a6ce7de36abe2bda8d", GitTreeState:"clean", BuildDate:"2018-04-07T22:06:59Z", GoVersion:"go1.9.3b4", Compiler:"gc", Platform:"linux/amd64"}
Когда под удаляется, мои контейнеры нормально обрабатывают выданный SIGTERM и закрываются. Оба контейнера в модуле немедленно сообщают следующее:
State: Terminated
Reason: Completed
Exit Code: 0
Started: Tue, 22 May 2018 17:09:39 -0500
Finished: Tue, 22 May 2018 17:24:11 -0500
Ready: False
Однако капсула остается в Ready: 0/2
, Status: Terminating
примерно на 30 секунд после этого. Есть идеи о том, почему это может произойти или как это диагностировать?
Льготный период по умолчанию составляет 30 секунд. Как и любое значение по умолчанию, оно может соответствовать вашему варианту использования, а может и не соответствовать. Изменить льготный период можно двумя способами:
1. в файле yaml
Например, следующий .yaml показывает простую конфигурацию DaemonSet с 30-секундным льготным периодом завершения.
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
.
.
.
terminationGracePeriodSeconds: 30
2. В командной строке вы запускаете «kubeclt delete».
Например,
kubectl удалить ИМЯ модуля --grace-period = 0
для принудительного удаления согласно сообщению @Zied.
Если мы сосредоточимся на части удаления, которую вы описываете, мы можем обратиться к kubectl delete
помогите понять это стручок ресурс имеет grace-period
Некоторые ресурсы, например модули, поддерживают плавное удаление. Эти ресурсы> определяют период по умолчанию перед их принудительным завершением (льготный> период), но вы можете переопределить это значение с помощью флага --grace-period или> передать --now, чтобы установить льготный период равным 1.
Вы можете попробовать:
kubectl delete pod NAME --grace-period=0
PS: не могли бы вы объяснить больше взаимосвязи между Daemonset
и удалил pod
?