基本上,我的 kubeconfig 檔案有:
apiVersion: v1
clusters:
- cluster:
server: <OAM ip address> this is what I want
(...)
我想獲取服務器地址。以前搜索,我找到了這個解決方案:
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
if err != nil {
panic(err.Error())
}
// creates the clientset
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}
nodes, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{})
if err != nil {
panic(err)
}
nodeip := []corev1.NodeAddress{}
for i := 0; i < len(nodes.Items); i {
nodeip = nodes.Items[i].Status.Addresses
fmt.Println(nodeip[0].Address)
}
fmt.Println(nodes.Items[0].Status.Addresses)
但它給了我內部 IP,而不是 OAM 服務器 IP(在 Kubernetes 組態檔中)
uj5u.com熱心網友回復:
如果您想要檔案中的服務器地址,只需從變數kubeconfig
中讀取它:config
package main
import (
"flag"
"fmt"
"path/filepath"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/util/homedir"
)
func main() {
var kubeconfig *string
if home := homedir.HomeDir(); home != "" {
kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
} else {
kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
}
flag.Parse()
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
if err != nil {
panic(err)
}
fmt.Printf("server: %s\n", config.Host)
}
如果您想知道物件上還有哪些其他欄位可用,一個快速的解決方案是使用格式說明符rest.Config
列印出config
變數:% v
fmt.Printf("% v\n", config)
有關更多詳細資訊,請查看參考檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/522261.html
標籤:去Kuberneteskubernetes-go-client
上一篇:結構的指標地址