<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://noname.com.ua/mediawiki/index.php?action=history&amp;feed=atom&amp;title=K8s_Q_A_Garbage_Collector</id>
	<title>K8s Q A Garbage Collector - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://noname.com.ua/mediawiki/index.php?action=history&amp;feed=atom&amp;title=K8s_Q_A_Garbage_Collector"/>
	<link rel="alternate" type="text/html" href="https://noname.com.ua/mediawiki/index.php?title=K8s_Q_A_Garbage_Collector&amp;action=history"/>
	<updated>2026-04-04T05:57:34Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://noname.com.ua/mediawiki/index.php?title=K8s_Q_A_Garbage_Collector&amp;diff=12359&amp;oldid=prev</id>
		<title>Sirmax: /* background */</title>
		<link rel="alternate" type="text/html" href="https://noname.com.ua/mediawiki/index.php?title=K8s_Q_A_Garbage_Collector&amp;diff=12359&amp;oldid=prev"/>
		<updated>2024-01-08T13:23:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;background&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 13:23, 8 января 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 84:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 84:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;При фоновом (background) каскадном удалении Kubernetes немедленно удаляет объект-владелец, а сборщик мусора (Garbage Collector) удаляет зависимые объекты в фоновом режиме.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;При фоновом (background) каскадном удалении Kubernetes немедленно удаляет объект-владелец, а сборщик мусора (Garbage Collector) удаляет зависимые объекты в фоновом режиме.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Управлять политикой каскадного удаления можно изменяя поле propagationPolicy в аргументе deleteOptions при удалении объекта.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; Допустимые значения данного поля - “Orphan”, “Foreground” или “Background”. Пример удаления зависимых объектов в фоновом режиме:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Управлять политикой каскадного удаления можно изменяя поле propagationPolicy в аргументе deleteOptions при удалении объекта.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Допустимые значения данного поля&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Orphan&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Foreground&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Background&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;BR&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Пример удаления зависимых объектов в фоновом режиме:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;PRE&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;PRE&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;kubectl proxy --port=8080&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;kubectl proxy --port=8080&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sirmax</name></author>
	</entry>
	<entry>
		<id>https://noname.com.ua/mediawiki/index.php?title=K8s_Q_A_Garbage_Collector&amp;diff=12358&amp;oldid=prev</id>
		<title>Sirmax: Новая страница: «Категория:K8s Категория:K8s_Вопросы_И_Ответы  =Garbage Collector= Garbage Collector в Kubernetes заключается...»</title>
		<link rel="alternate" type="text/html" href="https://noname.com.ua/mediawiki/index.php?title=K8s_Q_A_Garbage_Collector&amp;diff=12358&amp;oldid=prev"/>
		<updated>2024-01-08T13:23:00Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&lt;a href=&quot;/mediawiki/index.php/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:K8s&quot; title=&quot;Категория:K8s&quot;&gt;Категория:K8s&lt;/a&gt; &lt;a href=&quot;/mediawiki/index.php/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:K8s_%D0%92%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%98_%D0%9E%D1%82%D0%B2%D0%B5%D1%82%D1%8B&quot; title=&quot;Категория:K8s Вопросы И Ответы&quot;&gt;Категория:K8s_Вопросы_И_Ответы&lt;/a&gt;  =Garbage Collector= Garbage Collector в Kubernetes заключается...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Категория:K8s]]&lt;br /&gt;
[[Категория:K8s_Вопросы_И_Ответы]]&lt;br /&gt;
&lt;br /&gt;
=Garbage Collector=&lt;br /&gt;
Garbage Collector в Kubernetes заключается в удалении определенных объектов, которые больше не имеют владельца.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Некоторые сущности (объекты) в Kubernetes могут быть владельцами других объектов. &lt;br /&gt;
Например, ReplicaSet является владельцем нескольких Pods&lt;br /&gt;
В данном примере объекты-поды будут зависимыми от объекта-владельца.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Каждый зависимый объект имеет поле metadata.ownerReferences, которое указывает на объект-владелец.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Чаще всего, Kubernetes автоматически устанавливает значение поля ownerReference.&lt;br /&gt;
Начиная с версии 1.8, значение ownerReference автоматически устанавливается для объектов, созданных с помощью:&lt;br /&gt;
* ReplicaSet&lt;br /&gt;
* StatefulSet&lt;br /&gt;
* DaemonSet&lt;br /&gt;
* Deployment&lt;br /&gt;
* Job&lt;br /&gt;
* CronJob.&lt;br /&gt;
&lt;br /&gt;
Есть возможность самостоятельно указать отношения между объектами-владельцами и зависимыми объектами вручную, установив поле ownerReference при описании манифеста в yaml-файле.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Рассмотрим конкретный пример. Конфигурационный файл (манифест) для набора реплик из трех элементов выглядит так:&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
apiVersion: extensions/v1beta1&lt;br /&gt;
kind: ReplicaSet&lt;br /&gt;
metadata:&lt;br /&gt;
  name: my-repset&lt;br /&gt;
spec:&lt;br /&gt;
  replicas: 3&lt;br /&gt;
  selector:&lt;br /&gt;
    matchLabels:&lt;br /&gt;
      pod-is-for: garbage-collection-example&lt;br /&gt;
  template:&lt;br /&gt;
    metadata:&lt;br /&gt;
      labels:&lt;br /&gt;
        pod-is-for: garbage-collection-example&lt;br /&gt;
    spec:&lt;br /&gt;
      containers:&lt;br /&gt;
      - name: nginx&lt;br /&gt;
        image: nginx&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
Сохраним данное описание в файле my-repset.yaml и запустим его в кластере Kubernetes командой:&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
kubectl create -f my-repset.yaml&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Получим информацию о запущенных подах в кластере (вывод сильно сокращен):&lt;br /&gt;
&lt;br /&gt;
kubectl get pods --output=yaml&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: Pod&lt;br /&gt;
metadata:&lt;br /&gt;
  ...&lt;br /&gt;
  ownerReferences:&lt;br /&gt;
  - apiVersion: extensions/v1beta1&lt;br /&gt;
    controller: true&lt;br /&gt;
    blockOwnerDeletion: true&lt;br /&gt;
    kind: ReplicaSet&lt;br /&gt;
    name: my-repset&lt;br /&gt;
    uid: d9607e19-f88f-11e6-a518-42010a800195&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
При удалении объекта-владельца есть возможность автоматически удалять зависимые объекты - такое удаление называется каскадным удалением.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Существует также два режима каскадного удаления:&lt;br /&gt;
*  фоновое (background)&lt;br /&gt;
* приоритетное (foreground)&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Если при удалении объекта-владельца зависимые объекты не удаляются автоматически, то они становятся осиротевшими (orphaned).&lt;br /&gt;
&lt;br /&gt;
==foreground==&lt;br /&gt;
При приоритетном (foreground) каскадном удалении объект-владелец сначала переходит в состояние “удаление в процессе” (deletion in progress). В этом состоянии выполняется следующее:&lt;br /&gt;
&lt;br /&gt;
объект по-прежнему можно увидеть через REST API;&lt;br /&gt;
устанавливается значение deletionTimestamp объекта;&lt;br /&gt;
поле metadata.finalizers содержит значение “foregroundDeletion”.&lt;br /&gt;
После перехода объекта-владельца в состояние “удаление в процессе” сборщик мусора (Garbage Collector) удаляет зависимые объекты. Как только будут удалены все блокирующие зависимости (объекты с ownerReference.blockOwnerDeletion=true), сборщик мусора удалит и объект-владелец.&lt;br /&gt;
&lt;br /&gt;
==background==&lt;br /&gt;
При фоновом (background) каскадном удалении Kubernetes немедленно удаляет объект-владелец, а сборщик мусора (Garbage Collector) удаляет зависимые объекты в фоновом режиме.&lt;br /&gt;
&lt;br /&gt;
Управлять политикой каскадного удаления можно изменяя поле propagationPolicy в аргументе deleteOptions при удалении объекта. Допустимые значения данного поля - “Orphan”, “Foreground” или “Background”. Пример удаления зависимых объектов в фоновом режиме:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
kubectl proxy --port=8080&lt;br /&gt;
curl -X DELETE localhost:8080/apis/extensions/v1beta1/namespaces/default/replicasets/my-repset \&lt;br /&gt;
-d '{&amp;quot;kind&amp;quot;:&amp;quot;DeleteOptions&amp;quot;,&amp;quot;apiVersion&amp;quot;:&amp;quot;v1&amp;quot;,&amp;quot;propagationPolicy&amp;quot;:&amp;quot;Background&amp;quot;}' \&lt;br /&gt;
-H &amp;quot;Content-Type: application/json&amp;quot;&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
Пример удаления зависимых объектов в приоритетном режиме:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
kubectl proxy --port=8080&lt;br /&gt;
curl -X DELETE localhost:8080/apis/extensions/v1beta1/namespaces/default/replicasets/my-repset \&lt;br /&gt;
-d '{&amp;quot;kind&amp;quot;:&amp;quot;DeleteOptions&amp;quot;,&amp;quot;apiVersion&amp;quot;:&amp;quot;v1&amp;quot;,&amp;quot;propagationPolicy&amp;quot;:&amp;quot;Foreground&amp;quot;}' \&lt;br /&gt;
-H &amp;quot;Content-Type: application/json&amp;quot;&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
Оставить “осиротевшие” зависимости можно так:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
kubectl proxy --port=8080&lt;br /&gt;
curl -X DELETE localhost:8080/apis/extensions/v1beta1/namespaces/default/replicasets/my-repset \&lt;br /&gt;
-d '{&amp;quot;kind&amp;quot;:&amp;quot;DeleteOptions&amp;quot;,&amp;quot;apiVersion&amp;quot;:&amp;quot;v1&amp;quot;,&amp;quot;propagationPolicy&amp;quot;:&amp;quot;Orphan&amp;quot;}' \&lt;br /&gt;
-H &amp;quot;Content-Type: application/json&amp;quot;&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Утилита kubectl также поддерживает каскадное удаление.&lt;br /&gt;
Чтобы автоматически удалить зависимые объекты с помощью kubectl нужно использовать параметр --cascade со значением true (установлено по умолчанию).&lt;br /&gt;
&lt;br /&gt;
Не удалять (оставить) зависимые объекты в кластере можно так:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
kubectl delete replicaset my-repset --cascade=false&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sirmax</name></author>
	</entry>
</feed>