【发布时间】: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