如何从 Kubernetes pod 中运行 curl 命令

新手上路,请多包涵

我有以下问题:

  1. 我使用以下命令登录到 Kubernetes pod:
     ./cluster/kubectl.sh exec my-nginx-0onux -c my-nginx -it bash

“ip addr show”命令显示其分配的 pod 的 ip。由于 pod 是一个逻辑概念,我假设我登录到 docker 容器而不是 pod,在这种情况下,pod IP 与 docker 容器 IP 相同。这种理解正确吗?
  1. 从 Kubernetes 节点,我执行 sudo docker ps 然后执行以下操作:-
     sudo docker exec  71721cb14283 -it '/bin/bash'

这行不通。有人知道我做错了什么吗?

  1. 我想使用 curl 从 pod 中访问我创建的 nginx 服务。如何在此 pod 或容器中安装 curl 以从内部访问服务。我想这样做以了解网络连接。

原文由 Mayank 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
1 个回答

以下是在 Kubernetes 网络中获取 curl 命令行以测试和探索内部 REST 端点的方法。

要获得在网络内运行的 busybox 的提示,请执行以下命令。 (提示是每个开发人员使用一个独特的容器。)

 kubectl run curl-<YOUR NAME> --image=radial/busyboxplus:curl -i --tty --rm

您可以省略 –rm 并保持实例运行以供以后重用。要稍后重用它,请键入:

 kubectl attach <POD ID> -c curl-<YOUR NAME> -i -t

使用命令 kubectl get pods 你可以看到所有正在运行的 POD。 <POD ID> 类似于 curl-yourname-944940652-fvj28

编辑: 请注意,您需要从终端(一次)登录到谷歌云,然后才能执行此操作!这是一个示例,请确保放入您的区域、集群和项目:

 gcloud container clusters get-credentials example-cluster --zone europe-west1-c --project example-148812

原文由 Andreas Lundgren 发布,翻译遵循 CC BY-SA 4.0 许可协议