新聞中心
在集群中使用級(jí)聯(lián)刪除
本頁(yè)面向你展示如何設(shè)置在你的集群執(zhí)行垃圾收集 時(shí)要使用的級(jí)聯(lián)刪除 類型。

在開始之前
你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:
- Katacoda
- 玩轉(zhuǎn) Kubernetes
你還需要?jiǎng)?chuàng)建一個(gè) Deployment 示例 以試驗(yàn)不同類型的級(jí)聯(lián)刪除。你需要為每種級(jí)聯(lián)刪除類型來重建 Deployment。
檢查 Pod 上的屬主引用
檢查確認(rèn)你的 Pods 上存在 ?ownerReferences ?字段:
kubectl get pods -l app=nginx --output=yaml
輸出中包含 ?ownerReferences ?字段,類似這樣:
apiVersion: v1
...
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: nginx-deployment-6b474476c4
uid: 4fdcd81c-bd5d-41f7-97af-3a3b759af9a7
...使用前臺(tái)級(jí)聯(lián)刪除
默認(rèn)情況下,Kubernetes 使用后臺(tái)級(jí)聯(lián)刪除 以刪除依賴某對(duì)象的其他對(duì)象。取決于你的集群所運(yùn)行的 Kubernetes 版本, 你可以使用 kubectl 或者 Kubernetes API 來切換到前臺(tái)級(jí)聯(lián)刪除。要檢查版本,請(qǐng)輸入 ?kubectl version?。
- Kubernetes 1.20.x 及更新版本
你可以使用 ?kubectl ?或者 Kubernetes API 來基于前臺(tái)級(jí)聯(lián)刪除來刪除對(duì)象。
使用 kubectl
運(yùn)行下面的命令:
kubectl delete deployment nginx-deployment --cascade=foreground
使用 Kubernetes API
- 啟動(dòng)一個(gè)本地代理會(huì)話:
- 使用 ?
curl?來觸發(fā)刪除操作:
kubectl proxy --port=8080
curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/deployments/nginx-deployment \
-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Foreground"}' \
-H "Content-Type: application/json"輸出中包含 ?foregroundDeletion ?finalizer, 類似這樣:
"kind": "Deployment",
"apiVersion": "apps/v1",
"metadata": {
"name": "nginx-deployment",
"namespace": "default",
"uid": "d1ce1b02-cae8-4288-8a53-30e84d8fa505",
"resourceVersion": "1363097",
"creationTimestamp": "2021-07-08T20:24:37Z",
"deletionTimestamp": "2021-07-08T20:27:39Z",
"finalizers": [
"foregroundDeletion"
]
...你可以通過調(diào)用 Kubernetes API 來基于前臺(tái)級(jí)聯(lián)刪除模式刪除對(duì)象。
- 啟動(dòng)一個(gè)本地代理會(huì)話:
- 使用 ?
curl?來觸發(fā)刪除操作:
kubectl proxy --port=8080
curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/deployments/nginx-deployment \
-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Foreground"}' \
-H "Content-Type: application/json"輸出中包含 ?foregroundDeletion ?finalizer, 類似這樣:
"kind": "Deployment",
"apiVersion": "apps/v1",
"metadata": {
"name": "nginx-deployment",
"namespace": "default",
"uid": "d1ce1b02-cae8-4288-8a53-30e84d8fa505",
"resourceVersion": "1363097",
"creationTimestamp": "2021-07-08T20:24:37Z",
"deletionTimestamp": "2021-07-08T20:27:39Z",
"finalizers": [
"foregroundDeletion"
]
...使用后臺(tái)級(jí)聯(lián)刪除
- 創(chuàng)建一個(gè) Deployment 示例。
- 基于你的集群所運(yùn)行的 Kubernetes 版本,使用 ?
kubectl?或者 Kubernetes API 來刪除 Deployment。要檢查版本,請(qǐng)輸入 ?kubectl version?。
- Kubernetes 1.20.x 及更新版本
你可以使用 ?kubectl ?或者 Kubernetes API 來執(zhí)行后臺(tái)級(jí)聯(lián)刪除方式的對(duì)象刪除操作。
Kubernetes 默認(rèn)采用后臺(tái)級(jí)聯(lián)刪除方式,如果你在運(yùn)行下面的命令時(shí)不指定 ?--cascade? 標(biāo)志或者 ?propagationPolicy ?參數(shù)時(shí),用這種方式來刪除對(duì)象。
使用 kubectl
運(yùn)行下面的命令:
kubectl delete deployment nginx-deployment --cascade=background
使用 Kubernetes API
- 啟動(dòng)一個(gè)本地代理會(huì)話:
- 使用 ?
curl?來觸發(fā)刪除操作:
kubectl proxy --port=8080
curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/deployments/nginx-deployment \
-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Background"}' \
-H "Content-Type: application/json"輸出類似于:
"kind": "Status",
"apiVersion": "v1",
...
"status": "Success",
"details": {
"name": "nginx-deployment",
"group": "apps",
"kind": "deployments",
"uid": "cc9eefb9-2d49-4445-b1c1-d261c9396456"
}Kubernetes 默認(rèn)采用后臺(tái)級(jí)聯(lián)刪除方式,如果你在運(yùn)行下面的命令時(shí)不指定 ?--cascade? 標(biāo)志或者 ?propagationPolicy ?參數(shù)時(shí),用這種方式來刪除對(duì)象。
使用 kubectl
運(yùn)行下面的命令:
kubectl delete deployment nginx-deployment --cascade=true
使用 Kubernetes API
- 啟動(dòng)一個(gè)本地代理會(huì)話:
- 使用 ?
curl?來觸發(fā)刪除操作:
kubectl proxy --port=8080
curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/deployments/nginx-deployment \
-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Background"}' \
-H "Content-Type: application/json"輸出類似于:
"kind": "Status",
"apiVersion": "v1",
...
"status": "Success",
"details": {
"name": "nginx-deployment",
"group": "apps",
"kind": "deployments",
"uid": "cc9eefb9-2d49-4445-b1c1-d261c9396456"
}刪除屬主對(duì)象和孤立的依賴對(duì)象
默認(rèn)情況下,當(dāng)你告訴 Kubernetes 刪除某個(gè)對(duì)象時(shí), 控制器 也會(huì)刪除依賴該對(duì)象 的其他對(duì)象。 取決于你的集群所運(yùn)行的 Kubernetes 版本,你也可以使用 ?kubectl ?或者 Kubernetes API 來讓 Kubernetes 孤立 這些依賴對(duì)象。要檢查版本,請(qǐng)輸入 ?kubectl version?。
- Kubernetes 1.20.x 及更新版本
使用 kubectl
運(yùn)行下面的命令:
kubectl delete deployment nginx-deployment --cascade=orphan
使用 Kubernetes API
- 啟動(dòng)一個(gè)本地代理會(huì)話:
- 使用 ?
curl?來觸發(fā)刪除操作:
kubectl proxy --port=8080
curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/deployments/nginx-deployment \
-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Orphan"}' \
-H "Content-Type: application/json"輸出中在 ?finalizers ?字段中包含 ?orphan?,如下所示:
"kind": "Deployment",
"apiVersion": "apps/v1",
"namespace": "default",
"uid": "6f577034-42a0-479d-be21-78018c466f1f",
"creationTimestamp": "2021-07-09T16:46:37Z",
"deletionTimestamp": "2021-07-09T16:47:08Z",
"deletionGracePeriodSeconds": 0,
"finalizers": [
"orphan"
],
...使用 kubectl
運(yùn)行下面的命令:
kubectl delete deployment nginx-deployment --cascade=orphan
使用 Kubernetes API
- 啟動(dòng)一個(gè)本地代理會(huì)話:
- 使用 ?
curl?來觸發(fā)刪除操作:
kubectl proxy --port=8080
curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/deployments/nginx-deployment \
-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Orphan"}' \
-H "Content-Type: application/json"輸出中在 ?finalizers ?字段中包含 ?orphan?,如下所示:
"kind": "Deployment",
"apiVersion": "apps/v1",
"namespace": "default",
"uid": "6f577034-42a0-479d-be21-78018c466f1f",
"creationTimestamp": "2021-07-09T16:46:37Z",
"deletionTimestamp": "2021-07-09T16:47:08Z",
"deletionGracePeriodSeconds": 0,
"finalizers": [
"orphan"
],
...你可以檢查 Deployment 所管理的 Pods 仍然處于運(yùn)行狀態(tài):
kubectl get pods -l app=nginx
網(wǎng)頁(yè)標(biāo)題:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes在集群中使用級(jí)聯(lián)刪除
網(wǎng)頁(yè)地址:http://www.dlmjj.cn/article/dhiepeh.html


咨詢
建站咨詢
