2 回答

TA貢獻1880條經(jīng)驗 獲得超4個贊
從這里的示例中,代碼應(yīng)如下所示。BuildConfigFromFlags注意函數(shù)加載kubeconfig文件的用法。
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)
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err)
}
...
確保該位置存在有效的 kubeconfig 文件~/.kube/config 。在 AKS 上,您可以運行以下命令來獲取 kubeconfig 文件,該文件將文件放在~/.kube/config
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

TA貢獻1804條經(jīng)驗 獲得超8個贊
我注意到的第一件事是你沒有提到你是如何開始你的程序的。
查看我看到的代碼,您正在創(chuàng)建一個kubePtr
默認為false
. 當 flag 設(shè)置為true
它時,它將 kubeconfig 變量設(shè)置為 kubeconfig 路徑,但是因為它是 false(默認情況下)它將它設(shè)置為 "",這就是它找不到配置的原因。
將此標志設(shè)置為 true 后,您會看到以下錯誤:
不能在 clientcmd.BuildConfigFromKubeconfigGetter 的參數(shù)中使用 kubeconfig(類型字符串)作為類型 clientcmd.KubeconfigGetter
這意味著你有類型不匹配。讓我們看一下BuildConfigFromKubeconfigGetter() 函數(shù)參數(shù)類型:
func BuildConfigFromKubeconfigGetter(masterUrl string, kubeconfigGetter KubeconfigGetter) (*restclient.Config, error)
請注意,您正在傳遞一個字符串作為預(yù)期類型為KubeconfigGetter的參數(shù)。
最好使用不同的函數(shù),如clientcmd.BuildConfigFromFlags(),作為參數(shù)期望kubeconfig 文件的路徑(字符串)。
在 github 上的官方 client-go 庫存儲庫中,您可以找到幾個可以幫助您開始使用 clien-go 庫的示例。
例如,看一下這個官方示例,并注意客戶端是如何配置的。
- 2 回答
- 0 關(guān)注
- 216 瀏覽
添加回答
舉報