kubernetes - 删除部署会留下尾随的副本集和 pod
问题描述
我在 GCP 中运行 Kubernetes,自从几个月前更新(现在我正在运行1.17.13-gke.2600
)以来,我正在观察部署删除后的尾随副本集和 pod。考虑删除前的状态:
$ k get deployment | grep parser
parser-devel 1/1 1 1 38d
$ k get replicaset | grep parser
parser-devel-66bfc86ddb 0 0 0 27m
parser-devel-77898d9b9d 1 1 1 5m49s
$ k get pod | grep parser
parser-devel-77898d9b9d-4w48w 1/1 Running 0 6m2s
然后我删除部署:
$ k delete deployment parser-devel
deployment.apps "parser-devel" deleted
$ k get replicaset | grep parser
parser-devel-66bfc86ddb 0 0 0 28m
parser-devel-77898d9b9d 1 1 1 7m1s
$ k get pod | grep parser
parser-devel-77898d9b9d-4w48w 1/1 Running 0 7m6s
然后我尝试删除副本集:
$ k delete replicaset parser-devel-66bfc86ddb parser-devel-77898d9b9d
replicaset.apps "parser-devel-66bfc86ddb" deleted
replicaset.apps "parser-devel-77898d9b9d" deleted
$ k get pod | grep parser
parser-devel-77898d9b9d-4w48w 1/1 Running 0 8m14s
据我了解 Kubernetes,这不是一个正确的行为,那么为什么会这样呢?
解决方案
检查您的 Deployment 创建的 ReplicaSet 的 ownerReference 怎么样?有关详细信息,请参阅所有者和家属。例如,为了删除 Deployment 的依赖关系,Deployment 名称和 uid 应该在 ownerReference 中完全匹配。或者,如果 Kuerbetenes API 出了点问题,我也遇到过类似的问题。所以 API 服务重启可能有助于解决它。
apiVersion: apps/v1
kind: ReplicaSet
metadata:
...
ownerReferences:
- apiVersion: apps/v1
controller: true
blockOwnerDeletion: true
kind: Deployment
name: your-deployment
uid: xxx
推荐阅读
- node.js - 如何在 Nodejs 应用程序中管理访问令牌?
- python - 从 docker 中的 url 下载文件
- sql - 从多个表中添加所有列
- firebase - 使用 Flutter,如何在单独的登录页面小部件中显示在 AuthService 类中捕获的 Firebase Auth 错误消息?
- javascript - Chartjs 附加组件
- javascript - 无需先检查输入字段元素就无法填充输入字段?
- random - cuRAND performs much worse than thrust when generating random numbers inside CUDA kernels
- html - CSS not being applied correctly
- flutter-web - 加载 HTML 文件并在 Flutter Web 中显示
- r - 为什么 Q1 和 Q3 和我想的不一样?