4 回答

TA貢獻1826條經驗 獲得超6個贊
過了一會兒我找到了答案,但完全忘記將其發布在這里!
請注意,如果你不在 Kubernetes 環境中,它會崩潰
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"os"
"os/signal"
"time"
)
//
// Pod infos
//
func GetPodDetails() (IP string, name string) {
// creates the in-cluster config
config, err := rest.InClusterConfig()
if err != nil {
panic(err.Error())
}
// creates the clientset
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}
IP = ""
for {
if IP != "" {
break
} else {
log.Printf("No IP for now.\n")
}
pods, err := clientset.CoreV1().Pods("default").List(metav1.ListOptions{})
if err != nil {
panic(err.Error())
}
for _, pod := range pods.Items {
pod, _ := clientset.CoreV1().Pods("default").Get(pod.Name, metav1.GetOptions{})
if pod.Name == os.Getenv("HOSTNAME") {
IP = pod.Status.PodIP
}
}
log.Printf("Waits...\n")
time.Sleep(1 * time.Second)
}
name = os.Getenv("HOSTNAME")
log.Printf("Trying os.Getenv(\"HOSTNAME/IP\"): [%s][%s]\n", name, IP)
return IP, name
}

TA貢獻1773條經驗 獲得超3個贊
為了使應用程序能夠對 kubernetes 資源進行 API 調用,應用程序需要必要的 RBAC 權限。最佳實踐是創建“pods”的“只讀”角色并將其與新的服務帳戶綁定。

TA貢獻1887條經驗 獲得超5個贊
pod, err := clientset.CoreV1().Pods("default").Get(context.TODO(), os.Getenv("HOSTNAME"), metav1.GetOptions{})
podName := pod.Name
podIP := pod.Status.PodIP
node := pod.Spec.NodeName

TA貢獻1828條經驗 獲得超3個贊
執行此操作的命令是 $ kubectl describe pods 從那里您將能夠看到所有 pod 的所有詳細信息。如果您知道需要詳細信息的特定 pod,只需在命令 ex 末尾添加標簽名稱即可;$ kubectl 描述 pod 。
- 4 回答
- 0 關注
- 390 瀏覽
添加回答
舉報