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 关注
- 245 浏览
添加回答
举报