Kubernetes использует иерархию «владельцев» (Owner), чтобы автоматически удалять связанные ресурсы. Например, Deployment владеет ReplicaSet, а ReplicaSet – Pod'ами. При удалении Deployment, Garbage Collector (GC) автоматически удаляет связанные ReplicaSet и Pod'ы.
GC – это компонент Kubernetes Controller Manager. Он отслеживает события ADD/UPDATE/DELETE для всех ресурсов через Informer'ы. При событии DELETE, GC добавляет все дочерние объекты в очередь attemptToDelete для последующего удаления. Monitor'ы следят за событиями ресурсов, обрабатывая их с помощью метода processGraphChanges. Этот метод добавляет новые объекты в граф или отправляет дочерние объекты в очередь на удаление в зависимости от типа события.
Работа GC состоит из двух основных процессов: Run и Sync. Sync следит за регистрацией Monitor'ов для каждого ресурса в кластере. Run запускает воркеров, обрабатывающих очередь attemptToDelete, удаляя ресурсы. GC строит граф зависимостей ресурсов, где каждая связь показывает владельца объекта. Этот граф может быть просмотрен для анализа связей между ресурсами.
В кластерах с большим количеством ресурсов, GC может занять значительное время на построение графа при старте или при смене лидера. Пока граф не построен, автоматическое удаление не работает. Для повышения производительности можно настроить параметры
Изображение носит иллюстративный характер
GC – это компонент Kubernetes Controller Manager. Он отслеживает события ADD/UPDATE/DELETE для всех ресурсов через Informer'ы. При событии DELETE, GC добавляет все дочерние объекты в очередь attemptToDelete для последующего удаления. Monitor'ы следят за событиями ресурсов, обрабатывая их с помощью метода processGraphChanges. Этот метод добавляет новые объекты в граф или отправляет дочерние объекты в очередь на удаление в зависимости от типа события.
Работа GC состоит из двух основных процессов: Run и Sync. Sync следит за регистрацией Monitor'ов для каждого ресурса в кластере. Run запускает воркеров, обрабатывающих очередь attemptToDelete, удаляя ресурсы. GC строит граф зависимостей ресурсов, где каждая связь показывает владельца объекта. Этот граф может быть просмотрен для анализа связей между ресурсами.
В кластерах с большим количеством ресурсов, GC может занять значительное время на построение графа при старте или при смене лидера. Пока граф не построен, автоматическое удаление не работает. Для повышения производительности можно настроить параметры
--kube-api-qps
, --kube-api-burst
и --concurrent-gc-syncs
.