gpt4 book ai didi

kubernetes - Kubernetes 中 docker exec bash 的 kubectl 等价物是什么?

转载 作者:行者123 更新时间:2023-12-05 02:43:04 25 4
gpt4 key购买 nike

我使用 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 ,它说明了如何在您的应用程序上获取外壳。该 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 可以工作?

最佳答案

正如@David Maze 所说的那样:

Your kubectl get pods command has a --namespace option; you need to repeat this in the kubectl exec command. – David Maze 12 hours ago

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

A side note!

There is a tool to change namespaces, called: 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 所在。

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

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

请注意 --namespace 位于 -- 之前,Pod 的命令应该放在该位置(如 --/bin/bash).


其他资源:

关于kubernetes - Kubernetes 中 docker exec bash 的 kubectl 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67081888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com