【问题标题】:Project deletion struck in Terminating终止中的项目删除
【发布时间】:2019-10-31 07:03:32
【问题描述】:

Openshift v3.11.0+0cbc58b

我试图以管理员用户身份从 openshift 中删除项目,但项目在终止状态下被击中。

我试过运行以下命令但没有用,

oc 删除项目测试

来自服务器的错误(冲突):无法在命名空间“测试”上完成操作:系统正在确保从该命名空间中删除所有内容。完成后,系统会自动清除此命名空间。

我已经检查了以前的帖子,但我没有得到任何解决方案。谁能帮我解决这个问题。

【问题讨论】:

  • 该项目可能包含一个具有终结器的资源对象。您需要弄清楚资源是什么,从对象中删除终结器以将其删除,然后将删除项目。当使用运算符并且拥有该资源的运算符在资源被删除之前被删除时,可能会发生这种情况。
  • 谢谢@GrahamDumpleton 我会检查一下
  • 我会参考github issue 以获取有关此主题的更多信息。终结器出于特定原因而存在,您应该在那里寻找根本原因。

标签: openshift openshift-origin


【解决方案1】:

oc delete namespace 上收到此类错误时:

来自服务器的错误(冲突):无法在命名空间上完成操作

您可以尝试使用 Openshift API 的 curl 命令删除命名空间:

1. 获取命名空间状态到 json 文件中:

oc get namespace $NS_TO_DELETE -o json > tmp_ns.json

2. 删除带有“kubernetes”的行(在“finalizers”下):

vi tmp_ns.json

3. 打开与集群的代理连接(作为后台进程)

oc proxy &

4. 使用 curl 将 json 内容推送到您的集群:

curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp_ns.json http://127.0.0.1:8001/api/v1/namespaces/$NS_TO_DELETE/finalize

5. 你的命名空间现在应该消失了:

oc get namespace $NS_TO_DELETE # namespaces not found

6.切换到Proxy的后台进程(fg)并停止(Ctrl+c),或者直接使用:

kill -9 %%

注意: 如果你安装了jq,你可以通过oc get namespace $NS_TO_DELETE -o json | jq '.spec = {"finalizers":[]}' > tmp_ns.json运行步骤1和2

【讨论】:

  • 非常感谢!这就像一个魅力!要是我能给你一个以上的赞就好了
  • @meaningqo,很高兴它帮助了你。请注意,这只是一种解决方法,但重要的是找出最初导致命名空间删除失败的原因。
  • 是的。我们发现了问题,但是在我们已经将命名空间标记为删除之后。问题是命名空间上仍有操作员的自定义资源,但由于操作员已被删除,因此无法删除自定义资源,也无法重新安装操作员。所以删除终结器、删除命名空间、重新创建命名空间和删除剩余资源是要走的路。再次感谢您
  • 非常感谢,非常感谢
【解决方案2】:

如前所述 - 您的命名空间包含一些用于终结器的资源。对于摆脱它们的蛮力方法(如果您要删除命名空间,我假设这是计划),您可以尝试:

oc api-resources --verbs=list --namespaced -o name | xargs -n 1 oc get --show-kind --ignore-not-found -n <your-namespace>

这将列出仍然存在的资源。命令可能需要一段时间才能为您提供资源,具体取决于集群中的情况。

然后oc edit <resource> -n <namespace> 并删除终结器部分。保存您的更改,然后对列出的其余资源重复此操作。

不过,请谨慎使用。比我更有知识的人将能够告诉您这些资源的实际情况。

【讨论】:

  • 很好的答案,谢谢!
  • 从卡住的部分中删除终结器部分也对我有用。干得好!
【解决方案3】:

命名空间包含一些需要终结器的对象。如果你不关心命名空间中的对象,你可以这样做:

oc delete namespace --now=true testing

从文档来看,这与--grace-period=1 相同。

【讨论】:

  • 不幸的是,这并不能解决问题,因为该命令会导致以下错误消息:Error from server (Conflict): Operation cannot be fulfilled on namespaces "NAMESPACE_NAME": The system is ensuring all content is removed from this namespace. Upon completion, this namespace will automatically be purged by the system.
【解决方案4】:
oc patch checluster codeready-workspaces -p '{ "metadata": { "finalizers": null }}' --type merge -n=$NAMESAPCE-NAME

che 集群将被删除,项目或命名空间将被删除(不会处于终止状态)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2017-09-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多