我有一個暴露埠(服務器)的 pod。其他 pod(客戶端)可以與其通信。
服務器可以在套接字上找到遠程 IP 和埠(當客戶端連接到它時)。我正在尋找一種方法來獲取客戶端的 pod 名稱(從它的 IP 和埠)。
我看到了一堆關于通過 kubectl 獲取 pod 名稱的問題/答案。但是,我不確定是否可以在集群內部執行 kubectl。
我試圖弄清楚集群上運行的東西有什么可用。如果它需要一些特殊權限就可以了。如果它需要身份驗證,那就更復雜了。
uj5u.com熱心網友回復:
使用List Pods API 操作列出所有Pod并決議該podIP欄位的 JSON 回應(例如,使用jq或其他一些 JSON 決議工具)以找到具有所需 IP 地址的 Pod 的 JSON 物件。然后,metadata.name從此 JSON 物件中提取欄位以獲取 Pod 的名稱。
您可以通過直接使用Kubernetes API(例如使用 curl)或使用 kubectl(例如kubectl get pods -o json | jq ...)來完成此操作。在任何情況下,您都必須在此請求中包含發出請求的 Pod 使用的ServiceAccount的ServiceAccount 令牌(如果您直接使用 Kubernetes API,則作為標頭中的 Bearer 令牌,并且如果您將 kubectl 與該命令列標志)。Authorization--token
關于授權,您需要一個Role允許資源list上的動詞pods和一個RoleBinding將該 Role 系結到您的 Pod 正在使用的 ServiceAccount(默認情況下,Pod 使用default在其命名空間中命名的 ServiceAccount ,但您可以使用serviceAccountNamePod 的欄位)。
uj5u.com熱心網友回復:
任何可以通過的方式kubectl也可以通過直接請求 API 服務器來完成。所有你需要的是有正確的ServiceAccount為您的pod。一旦你有了它——你可以使用大量的庫,專門用于與 k8s API 服務器進行通信。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/370053.html
標籤:Kubernetes 反向DNS
