@@ -93,18 +93,47 @@ metadata:
93
93
```
94
94
95
95
<!--
96
- Cross-namespace owner references are disallowed by design. This means:
97
- 1) Namespace-scoped dependents can only specify owners in the same namespace,
98
- and owners that are cluster-scoped.
99
- 2) Cluster-scoped dependents can only specify cluster-scoped owners, but not
100
- namespace-scoped owners.
96
+ Cross-namespace owner references are disallowed by design.
97
+
98
+ Namespaced dependents can specify cluster-scoped or namespaced owners.
99
+ A namespaced owner **must** exist in the same namespace as the dependent.
100
+ If it does not, the owner reference is treated as absent, and the dependent
101
+ is subject to deletion once all owners are verified absent.
101
102
-->
102
103
{{< note >}}
103
- 根据设计,kubernetes 不允许跨命名空间指定属主。这意味着:
104
- 1)命名空间范围的附属只能指定同一的命名空间中的或者集群范围的属主。
105
- 2)集群范围的附属只能指定集群范围的属主,不能指定命名空间范围的属主。
106
- {{< /note >}}
104
+ 根据设计,kubernetes 不允许跨名字空间指定属主。
105
+
106
+ 名字空间范围的附属可以指定集群范围的或者名字空间范围的属主。
107
+
108
+ 名字空间范围的属主** 必须** 和该附属处于相同的名字空间。
109
+ 如果名字空间范围的属主和附属不在相同的名字空间,那么该属主引用就会被认为是缺失的,
110
+ 并且当附属的所有属主引用都被确认不再存在之后,该附属就会被删除。
107
111
112
+ <!--
113
+ Cluster-scoped dependents can only specify cluster-scoped owners.
114
+ In v1.20+, if a cluster-scoped dependent specifies a namespaced kind as an owner,
115
+ it is treated as having an unresolveable owner reference, and is not able to be garbage collected.
116
+ -->
117
+ 集群范围的附属只能指定集群范围的属主。
118
+ 在 v1.20+ 版本,如果一个集群范围的附属指定了一个名字空间范围类型的属主,
119
+ 那么该附属就会被认为是拥有一个不可解析的属主引用,并且它不能够被垃圾回收。
120
+
121
+ <!--
122
+ In v1.20+, if the garbage collector detects an invalid cross-namespace `ownerReference`,
123
+ or a cluster-scoped dependent with an `ownerReference` referencing a namespaced kind, a warning Event
124
+ with a reason of `OwnerRefInvalidNamespace` and an `involvedObject` of the invalid dependent is reported.
125
+ You can check for that kind of Event by running
126
+ `kubectl get events -A --field-selector=reason=OwnerRefInvalidNamespace`.
127
+ -->
128
+ 在 v1.20+ 版本,如果垃圾收集器检测到无效的跨名字空间的属主引用,
129
+ 或者一个集群范围的附属指定了一个名字空间范围类型的属主,
130
+ 那么它就会报告一个警告事件。该事件的原因是 ` OwnerRefInvalidNamespace ` ,
131
+ ` involvedObject ` 属性中包含无效的附属。你可以通过以下命令来获取该类型的事件:
132
+
133
+ ``` shell
134
+ kubectl get events -A --field-selector=reason=OwnerRefInvalidNamespace
135
+ ```
136
+ {{< /note >}}
108
137
<!--
109
138
## Controlling how the garbage collector deletes dependents
110
139
@@ -237,21 +266,25 @@ curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/replicasets/my-rep
237
266
238
267
<!--
239
268
kubectl also supports cascading deletion.
240
- To delete dependents automatically using kubectl, set `-cascade` to true. To
241
- orphan dependents, set `-cascade` to false. The default value for `-cascade`
242
- is true.
243
269
244
- Here's an example that orphans the dependents of a ReplicaSet:
270
+ To delete dependents in the foreground using kubectl, set `--cascade=foreground`. To
271
+ orphan dependents, set `--cascade=orphan`.
272
+
273
+ The default behavior is to delete the dependents in the background which is the
274
+ behavior when `--cascade` is omitted or explicitly set to `background`.
275
+
276
+ Here's an example that orphans the dependents of a ReplicaSet
245
277
-->
246
278
` kubectl ` 命令也支持级联删除。
247
- 通过设置 ` --cascade ` 为 ` true ` ,可以使用 kubectl 自动删除附属对象。
248
- 设置 ` --cascade ` 为 ` false ` ,会使附属对象成为孤立附属对象。
249
- ` --cascade ` 的默认值是 true。
279
+ 通过设置 ` --cascade=foreground ` ,可以使用 kubectl 在前台删除附属对象。
280
+ 设置 ` --cascade=orphan ` ,会使附属对象成为孤立附属对象。
281
+ 当不指定 ` --cascade ` 或者明确地指定它的值为 ` background ` 的时候,
282
+ 默认的行为是在后台删除附属对象。
250
283
251
284
下面是一个例子,使一个 ReplicaSet 的附属对象成为孤立附属:
252
285
253
286
``` shell
254
- kubectl delete replicaset my-repset --cascade=false
287
+ kubectl delete replicaset my-repset --cascade=orphan
255
288
```
256
289
257
290
<!--
0 commit comments