【问题标题】:What's the kubectl equivalent of docker exec bash in Kubernetes?Kubernetes 中 docker exec bash 的 kubectl 等价物是什么?
【发布时间】:2021-04-14 17:44:29
【问题描述】:

我使用 kubectl apply -f deployment.yaml 成功部署了我的 Kubernetes 应用程序。 当我尝试访问 URL 端点时,我收到了一个 nginx 404 Not Found 错误页面。

我的下一步是在运行我的应用程序的 docker 实例上打开一个 bash shell。我如何在 Kubernetes 中做到这一点?

如何通过 ssh 进入运行我的应用程序的 docker 容器,或通过 docker exec bash 进入我已部署到 Kubernetes 的应用程序?

如果我在 docker 中运行,我会运行 docker ps 来查找容器 ID,然后运行 ​​docker exec -t ### bash 在我的容器上打开一个 shell 以查看为什么某些东西不工作。

在 Kubernetes 中执行此操作的等效方法是什么?

寻找解决方案

我搜索并找到了this URL,它说明了如何在您的应用程序上获取 shell。 该 URL 的摘要是:

kubectl apply -f https://k8s.io/examples/application/shell-demo.yaml
kubectl get pod shell-demo
kubectl exec --stdin --tty shell-demo -- /bin/bash

但是当我尝试等效命令时,我得到了一个错误,如下所示:

kubectl get pods --namespace my-app-namespace
NAME                               READY   STATUS    RESTARTS   AGE
dpl-my-app-787bc5b7d-4ftkb         1/1     Running   0           2h

然后我尝试了:

kubectl exec --stdin --tty my-app-namespace -- /bin/bash
Error from server (NotFound): pods "my-app-namespace" not found
exit status 1

我认为这是因为我试图执行到命名空间而不是 pod,所以我也尝试使用 dpl-my-app-...(见下文)但得到了同样的错误。

kubectl exec --stdin --tty dpl-my-app-787bc5b7d-4ftkb -- /bin/bash
Error from server (NotFound): pods "dpl-my-app-787bc5b7d-4ftkb" not found
exit status 1

我需要什么命令来获取 pod 实例以使 kubectl exec 能够工作?

【问题讨论】:

  • 您的kubectl get pods 命令有一个--namespace 选项;您需要在 kubectl exec 命令中重复此操作。

标签: kubernetes


【解决方案1】:

正如@David Maze 所说:

您的kubectl get pods 命令有一个--namespace 选项;您需要在 kubectl exec 命令中重复此操作。 – David Maze 12 小时前

如果您在命名空间:my-app-namespace 中创建了 Deployment:dpl-my-app,则还应在所有命令中指定 --namespace/-n 参数。

附注!

有一个改变命名空间的工具,叫做:kubens


使用以下命令:

  • kubectl exec --stdin --tty my-app-namespace -- /bin/bash

您已正确识别出您尝试执行到 namespace 但未执行到 Pod 的问题

使用以下命令:

  • kubectl exec --stdin --tty dpl-my-app-787bc5b7d-4ftkb -- /bin/bash

您尝试执行到名为dpl-my-app-787bc5b7d-4ftkbPod,但在default 命名空间中。不在您的Pod 所在的namespace 中。

要在特定的namespace 中执行您的Pod,您应该使用以下命令:

  • kubectl exec --stdin --tty --namespace my-app-namespace dpl-my-app-787bc5b7d-4ftkb -- /bin/bash

请注意--namespace-- 之前应该放置Pod 的命令(如-- /bin/bash)。


其他资源:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2021-12-27
    • 2011-01-26
    • 2016-04-09
    相关资源
    最近更新 更多