我如何从Kubernetes pod中运行curl命令

May*_*ank 16 containers docker kubernetes

我有以下问题: -

1:我使用以下命令登录Kubernetes pod: -

./cluster/kubectl.sh exec my-nginx-0onux -c my-nginx -it bash
Run Code Online (Sandbox Code Playgroud)

'ip addr show'

命令显示已分配pod的ip.由于pod是一个逻辑概念,我假设我登录了一个docker容器而不是pod,在这种情况下,pod ip与docker container ip相同.这种理解是否正确?

2:来自Kubernetes节点,我这样做sudo docker ps,然后执行以下操作: -

sudo docker exec  71721cb14283 -it '/bin/bash'
Run Code Online (Sandbox Code Playgroud)

这不起作用.有人知道我做错了吗?

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

And*_*ren 31

以下是在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.类似于curl-yourname-944940652-fvj28.

编辑:请注意,您需要先从终端登录谷歌云(一次)才能执行此操作!这是一个示例,请确保放入您的区域,群集和项目:gcloud container clusters get-credentials example-cluster --zone europe-west1-c --project example-148812


Ser*_*sen 14

最近有一张官方的curl团队图片:

https://hub.docker.com/r/curlimages/curl

运行它:

kubectl run -it --rm --image=curlimages/curl 卷曲 -- sh


Yu-*_*ong 9

  1. Kubernetes 使用IP-per-pod模型。同一个 Pod 中的所有容器共享相同的 IP 地址,就好像它们在同一主机上运行一样。

  2. 命令应该遵循docker exec [OPTIONS] CONTAINER COMMAND [ARG...]。在你的情况下,sudo docker exec -it 71721cb14283 '/bin/bash'应该工作。如果没有,您应该提供命令的输出。

  3. 这取决于您使用的图像。在容器中安装软件没有什么特别之处。对于 nginx,请尝试apt-get update && apt-get install curl


MrE*_*MrE 6

Kubernetes的想法是将Pod分配在主机上,但是没有确定的或永久的,因此您不应尝试从容器中查找容器或Pod的IP,而应使用Kubernetes所谓的Service

Kubernetes 服务是通过定义的一组选择器到Pod的路径kube-proxy,它将通过请求将负载均衡给所有具有给定选择器的Pod。

简而言之:

例如,创建一个带有名为“名称” 的标签Pod。假设使用您调用的选择器 创建服务,例如您为其分配了端口。name=mypod name=mypodmyService9000

然后您可以使用以下方法从豆荚卷曲到该服务所服务的豆荚 curl http://myService:9000

这是假设您当然正在运行DNS Pod。如果您在创建ServiceBlancer类型的服务时要求它并在AWS或GKE上运行,则该服务也可以从群集外部使用。对于仅供内部使用的服务,只需设置该标志clusterIP: None,它就不会在外部进行负载平衡。

请参阅此处的参考:

https://kubernetes.io/docs/concepts/services-networking/service/ https://kubernetes.io/docs/tutorials/services/