簡體   English   中英

Kubernetes:如何從一個 pod 中獲取其他 pod 的名稱?

[英]Kubernetes: How to get other pods' name from within a pod?

我想找出在同一個單主機集群中運行的其他 pod 的名稱。 所有 pod 都是單應用程序容器。 我有充當 TCP/IP 服務器的 pod A(用 Java 編寫),還有一些其他 pod(用 C++ 編寫)連接到服務器。

在 pod A 中,我可以獲得客戶端(其他 pod)的 IP 地址。 我如何獲得他們的豆莢的名字? 我無法運行 kubectl 命令,因為 pod A 沒有安裝 kubectl。

謝謝,

您可以使用 cURL 直接調用 kube-apiserver。

  • 首先,您需要將服務帳戶綁定到 clusterrole 才能向 apiserver 發送請求。

    kubectl create clusterrole listpods --verb=get,list,watch --resource=pods

    kubectl create clusterrolebinding listpods --clusterrole=listpods --serviceaccount=default:default

  • 在容器中獲取 shell

    kubectl exec -it deploy/YOUR_DEPLOYMENT -- sh

  • 為您的 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 發送 pod 列表請求

    curl -s -k -H "Authorization: Bearer $TOKEN" -H 'Accept: application/json' $APISERVER/api/v1/pods | jq "[.items[] |.metadata.name ]"

完畢 ! 它會返回一個“ kubectl get pods ”的 json 列表

有關更多示例,您可以查看OpenShift RestAPI Reference 另外,如果您打算做一些程序化的事情,我建議您查看官方 kubernetes-clients

@moonkotte的 jq 改進致謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM