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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)法加載集群內(nèi)配置,必須定義 KUBERNETES_SERVICE_HOST

無(wú)法加載集群內(nèi)配置,必須定義 KUBERNETES_SERVICE_HOST

Go
精慕HU 2022-07-11 15:44:37
我正在開(kāi)發(fā)一個(gè)動(dòng)態(tài)的 kubernetes 通知器來(lái)監(jiān)視我的 kubernetes 集群中的事件和所有 kubernetes 組件的發(fā)現(xiàn)。但是,當(dāng)我嘗試KUBECONFIG通過(guò)該InClusterConfig方法訪(fǎng)問(wèn)時(shí),出現(xiàn)以下錯(cuò)誤:// go run main.goFATA[0000] could not get config                          error="unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined"exit status 1我在 github 上的 kubernetes repo 以及 stackoverflow 上發(fā)現(xiàn)了與此相關(guān)的各種類(lèi)似問(wèn)題,但找不到任何解決方案或解決方法。[ kubernetes 問(wèn)題, kubernetes 問(wèn)題, stackoverflow 類(lèi)似問(wèn)題, stackoverflow 類(lèi)似問(wèn)題]以下是 go 代碼和 go.mod 文件去代碼:go.mod 文件:module discovery-testgo 1.15require (    github.com/googleapis/gnostic v0.5.3 // indirect    github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect    github.com/imdario/mergo v0.3.11 // indirect    github.com/peterbourgon/diskv v2.0.1+incompatible // indirect    github.com/sirupsen/logrus v1.7.0    golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 // indirect    golang.org/x/net v0.0.0-20201029055024-942e2f445f3c // indirect    golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 // indirect    golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e // indirect    k8s.io/apimachinery v0.17.0    k8s.io/client-go v0.17.0    k8s.io/klog v1.0.0 // indirect    k8s.io/utils v0.0.0-20201027101359-01387209bb0d // indirect)
查看完整描述

1 回答

?
尚方寶劍之說(shuō)

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊

他的評(píng)論幫助我弄清楚我正試圖從集群外部獲取集群配置,該配置在我無(wú)法訪(fǎng)問(wèn)集群的本地計(jì)算機(jī) (127.0.0.1) 上引導(dǎo)程序。


此外,我試圖弄清楚如何從集群外部訪(fǎng)問(wèn)集群,發(fā)現(xiàn)InClusterConfig用于在集群內(nèi)部運(yùn)行的用例,當(dāng)在集群外部運(yùn)行時(shí),可以使用如下內(nèi)容:


//go run main.go

package main


import (

    "os"

    "os/signal"

  //"context"

    "flag"

    //"fmt"

    "path/filepath"

    //"time"


    "github.com/sirupsen/logrus"

    v1 "k8s.io/apimachinery/pkg/apis/meta/v1"

    "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"

    "k8s.io/apimachinery/pkg/runtime/schema"

    "k8s.io/client-go/dynamic"

    "k8s.io/client-go/dynamic/dynamicinformer"

    //"k8s.io/client-go/rest"

    "k8s.io/client-go/tools/cache"

    "k8s.io/client-go/tools/clientcmd"

  "k8s.io/client-go/util/homedir"

)


func main() {

  //kubeconfig := os.Getenv("KUBECONFIG")

  

  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()

  

    cfg, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)

    if err != nil {

        logrus.WithError(err).Fatal("could not get config")

    }


    // Grab a dynamic interface that we can create informers from

    dc, err := dynamic.NewForConfig(cfg)

    if err != nil {

        logrus.WithError(err).Fatal("could not generate dynamic client for config")

    }


    // Create a factory object that we can say "hey, I need to watch this resource"

    // and it will give us back an informer for it

    f := dynamicinformer.NewFilteredDynamicSharedInformerFactory(dc, 0, v1.NamespaceAll, nil)


    // Retrieve a "GroupVersionResource" type that we need when generating our informer from our dynamic factory

    gvr, _ := schema.ParseResourceArg("deployments.v1.apps")


    // Finally, create our informer for deployments!

    i := f.ForResource(*gvr)


    stopCh := make(chan struct{})

    go startWatching(stopCh, i.Informer())


    sigCh := make(chan os.Signal, 0)

    signal.Notify(sigCh, os.Kill, os.Interrupt)


    <-sigCh

    close(stopCh)

}


func startWatching(stopCh <-chan struct{}, s cache.SharedIndexInformer) {

    handlers := cache.ResourceEventHandlerFuncs{

        AddFunc: func(obj interface{}) {

            u := obj.(*unstructured.Unstructured)


            logrus.WithFields(logrus.Fields{

                "name":      u.GetName(),

                "namespace": u.GetNamespace(),

                "labels":    u.GetLabels(),

            }).Info("received add event!")

        },

        UpdateFunc: func(oldObj, obj interface{}) {

            logrus.Info("received update event!")

        },

        DeleteFunc: func(obj interface{}) {

            logrus.Info("received update event!")

        },

    }


    s.AddEventHandler(handlers)

    s.Run(stopCh)

}


查看完整回答
反對(duì) 回復(fù) 2022-07-11
  • 1 回答
  • 0 關(guān)注
  • 1073 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號(hào)

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