第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 go 程序訪問 AKS kubeconfig 文件

從 go 程序訪問 AKS kubeconfig 文件

Go
ITMISS 2022-06-27 15:07:10
我正在嘗試編寫一個 Go 程序來從集群中獲取 pod 日志。我正在使用 AKS kubernetes 集群。如何訪問腳本中的 kubeconfig 文件?以下是我的代碼:package mainimport (    "context"    "flag"    "fmt"    "time"    "os"    "path/filepath"    "k8s.io/apimachinery/pkg/api/errors"    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"    "k8s.io/client-go/kubernetes"    //"k8s.io/client-go/rest"    "k8s.io/client-go/tools/clientcmd"    //    // Uncomment to load all auth plugins    // _ "k8s.io/client-go/plugin/pkg/client/auth"    //    // Or uncomment to load specific auth plugins    // _ "k8s.io/client-go/plugin/pkg/client/auth/azure"    // _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"    // _ "k8s.io/client-go/plugin/pkg/client/auth/oidc"    // _ "k8s.io/client-go/plugin/pkg/client/auth/openstack")func main() {    /*// creates the in-cluster config    config, err := rest.InClusterConfig()    if err != nil {        panic(err.Error())    }*/        fmt.Printf("Creating cluster config")        kubePtr := flag.Bool("use-kubeconfig", false, "use kubeconfig on local system")    flag.Parse()        fmt.Printf("Updating the existing config")    var kubeconfig string    if *kubePtr == true {        kubeconfig = filepath.Join(os.Getenv("HOME"), ".kube", "config")    } else {        kubeconfig = ""    }        fmt.Printf("Building config from flags")    config, err := clientcmd.BuildConfigFromKubeconfigGetter("", kubeconfig)        fmt.Printf("creating the clientset")            // creates the clientset    clientset, err := kubernetes.NewForConfig(config)    if err != nil {        panic(err.Error())    }    for {        // get pods in all the namespaces by omitting namespace        // Or specify namespace to get pods in particular namespace        pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})        if err != nil {            panic(err.Error())        }
查看完整描述

2 回答

?
慕村225694

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


查看完整回答
反對 回復(fù) 2022-06-27
?
胡說叔叔

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 庫的示例。

例如,看一下這個官方示例,并注意客戶端是如何配置的。


查看完整回答
反對 回復(fù) 2022-06-27
  • 2 回答
  • 0 關(guān)注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號