[英]Kubernetes: How to get other pods' name from within a pod?
I'd like to find out the other pods' name running in the same single-host cluster.我想找出在同一个单主机集群中运行的其他 pod 的名称。 All pods are single-application containers.所有 pod 都是单应用程序容器。 I have pod A (written in Java) that acts as a TCP/IP server and a few other pods (written in C++) connect to the server.我有充当 TCP/IP 服务器的 pod A(用 Java 编写),还有一些其他 pod(用 C++ 编写)连接到服务器。
In pod A, I can get IP address of clients (other pods).在 pod A 中,我可以获得客户端(其他 pod)的 IP 地址。 How do I get their pods' name?我如何获得他们的豆荚的名字? I can't run kubectl commands because pod A has no kubectl installed.我无法运行 kubectl 命令,因为 pod A 没有安装 kubectl。
Thanks,谢谢,
You can directly call kube-apiserver with cURL.您可以使用 cURL 直接调用 kube-apiserver。
First you need to have a serviceaccount binded to clusterrole to be able to send requests to apiserver.首先,您需要将服务帐户绑定到 clusterrole 才能向 apiserver 发送请求。
kubectl create clusterrole listpods --verb=get,list,watch --resource=pods
kubectl create clusterrolebinding listpods --clusterrole=listpods --serviceaccount=default:default
Get a shell inside a container在容器中获取 shell
kubectl exec -it deploy/YOUR_DEPLOYMENT -- sh
Define necessary parameters for your cURL, run below commands inside container为您的 cURL 定义必要的参数,在容器内运行以下命令
APISERVER=https://kubernetes.default.svc
SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount
NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)
TOKEN=$(cat ${SERVICEACCOUNT}/token)
CACERT=${SERVICEACCOUNT}/ca.crt
APISERVER=https://kubernetes.default.svc
SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount
NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)
TOKEN=$(cat ${SERVICEACCOUNT}/token)
CACERT=${SERVICEACCOUNT}/ca.crt
Send pods list request to apiserver向 apiserver 发送 pod 列表请求
curl -s -k -H "Authorization: Bearer $TOKEN" -H 'Accept: application/json' $APISERVER/api/v1/pods | jq "[.items[] |.metadata.name ]"
Done !完毕 ! It will return you a json list of " kubectl get pods "它会返回一个“ kubectl get pods ”的 json 列表
For more examples, you can check OpenShift RestAPI Reference .有关更多示例,您可以查看OpenShift RestAPI Reference 。 Also, if you are planning to do some programmatic stuff, I advice you to checkout official kubernetes-clients .另外,如果您打算做一些程序化的事情,我建议您查看官方 kubernetes-clients 。
Credits for jq improvement to @moonkotte对@moonkotte的 jq 改进致谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.