【问题标题】:Kubernetes stop containers from restarting automaticallyKubernetes 阻止容器自动重启
【发布时间】:2018-11-12 12:23:06
【问题描述】:

我最近将 Docker for Mac 升级到 v18.06,并注意到它可以运行本地 k8s 集群。我很高兴尝试并通过kubectl apply -f deployments/staging/tom.yml 运行我们的一项服务。 yml 清单没有指定重启策略。然后我使用kubectl delete -f ... 将其关闭。从那时起,每次我启动 docker 时,该容器都会自动启动。这是docker ps 的输出,为简洁起见被截断

CONTAINER ID    IMAGE            COMMAND                  CREATED             NAMES
2794eae1f31e    b06778bfe205     "/bin/sh -c 'java -c…"   27 minutes ago      k8s_tom-joiner_tom-joiner-66fcfd84bc...
8dd19dd65486    b06778bfe205     "/bin/sh -c 'java -c…"   27 minutes ago      k8s_tom-loader_tom-loader-6cb9f7f4fb...
...

但是,镜像不是由 Kubernetes 管理的,所以我不能做kubectl delete -f

kubectl get pods
No resources found.

如何永久关闭映像并防止自动重启?我试过 docker update --restart=no $(docker ps -a -q) 没有运气

【问题讨论】:

  • 我认为如果您发布“deployments/staging/tom.yml”的内容会有所帮助。很难说发生了什么。也许容器没有在默认命名空间中运行。

标签: docker kubernetes


【解决方案1】:

这取决于你的具体部署,但Kubernetes specifices that

PodSpec 有一个 restartPolicy 字段,其可能值 AlwaysOnFailureNever。默认值为Always。 [...]

因此,如果您不希望您的 pod 出于任何原因重新启动,您必须明确告诉它不要。您没有提供 YAML 文件的示例内容,所以我猜不出最好的地方,但我认为这足以提供一般指导。


现在,对于您面临的问题:Docker 可能正在使用自定义命名空间。使用

kubectl get namespaces

查看你得到了什么,然后在这些命名空间中搜索 pod

kubectl -n <namespace> get pods

或者,如果您不耐烦,那就结束吧:

kubectl --all-namespaces get pods

参考:kubectl cheat sheet

【讨论】:

  • 谢谢,就是这样。该容器确实在不同的命名空间中运行,kubectl get pods --all-namespaces 帮助我解决了这个问题。我一知道,就kubectl delete --all pods --namespace=whatever解决我的问题很简单
猜你喜欢
  • 2020-10-15
  • 2021-12-20
  • 1970-01-01
  • 2018-01-31
  • 2019-06-09
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多