При выполнении следующей команды для кластера в Kubernetes я получаю следующую ошибку:
KUBERNETES_PROVIDER = ubuntu ./kube-down.sh
rm: невозможно удалить «/var/lib/kubelet/pods/16981b98-a3bb-11e5-99fb-00505622b20d/volumes/kubernetes.io~secret/default-token-0i2n6»: устройство или ресурс занят
Я попытался удалить его силой, но потом он не удалялся.
Я думаю это было исправлено https://github.com/kubernetes/kubernetes/pull/17315 Вы можете проверить, есть ли у вас последняя cluster/ubuntu/*
файлы.
Если вам интересно, какова основная механика такой ошибки, вы увидите Device or resource busy
обычно означает, что в этой точке файловой системы есть "блокировка" ядра и операция для unlink
-ing (это системный вызов что rm
используется для запроса этого действия у ядра) и предотвращается с помощью состояния ошибки (EBUSY). Вы можете узнать больше о том, какие системные вызовы используются, выполнив команду через strace
если вы хотите увидеть все задействованные системные вызовы (включая коды возврата из вызовов системных вызовов).
Этот путь выглядит для меня, где kubelet управляет специфичными для модуля параметрами "файловой системы". В данном случае происходит то, что каждое пространство имен имеет учетную запись службы по умолчанию, которая затем получает токен по умолчанию, и этот токен прозрачно монтируется внутри модуля. файловая система контейнера. Этот путь, упомянутый в ошибке, является расположением файловой системы на уровне хоста «внутренней» файловой системы модуля. Итак, в этом случае рассматриваемая «блокировка» - это точка монтирования.
По сути, этот сценарий пытается удалить этот путь (возможно, очистить после себя), и он все еще используется (возможно, модуль все еще работает), а сценарий или какая-то команда, которую он вызывает, не выполняет надлежащую проверку / обработку ошибок, так что вместо этого вы увидите эту ошибку.