2017-05-26 6 views
1

は、名前空間のためのイベントを表示することができます。例えば、」 引っ張っ画像 『こんにちは世界』、首尾よく引っ張っ画像 『こんにちは世界』などkubernetesイベントの詳細を見るにはクライアントを使用しますか? kubernetesダッシュボードで

を使用して、これらすべてのイベントを取得する方法はあります。。?それはここで

どうもありがとう

+0

この他のクライアントがhttps://godoc.org/bitbucket.org/amdatulabs/amdatu-kubernetes-go/client#Client.WatchPodsWithLabelこの情報のため –

答えて

1

は、特定のタイプのイベントの通知を作成するためにNewInformer()機能を使用して、クライアントに行くの最小例(source)です。

import (
    "fmt" 
    "log" 
    "net/http" 
    "time" 

    "k8s.io/kubernetes/pkg/api" 
    "k8s.io/kubernetes/pkg/client/cache" 
    "k8s.io/kubernetes/pkg/client/restclient" 
    client "k8s.io/kubernetes/pkg/client/unversioned" 
    "k8s.io/kubernetes/pkg/fields" 
    "k8s.io/kubernetes/pkg/util/wait" 
) 

func podCreated(obj interface{}) { 
    pod := obj.(*api.Pod) 
    fmt.Println("Pod created: " + pod.ObjectMeta.Name) 
} 
func podDeleted(obj interface{}) { 
    pod := obj.(*api.Pod) 
    fmt.Println("Pod deleted: " + pod.ObjectMeta.Name) 
} 
func watchPods(client *client.Client, store cache.Store) cache.Store { 
    //Define what we want to look for (Pods) 
    watchlist := cache.NewListWatchFromClient(client, "pods", api.NamespaceAll, fields.Everything()) 
    resyncPeriod := 30 * time.Minute 
    //Setup an informer to call functions when the watchlist changes 
    eStore, eController := framework.NewInformer(
     watchlist, 
     &api.Pod{}, 
     resyncPeriod, 
     framework.ResourceEventHandlerFuncs{ 
      AddFunc: podCreated, 
      DeleteFunc: podDeleted, 
     }, 
    ) 
    //Run the controller as a goroutine 
    go eController.Run(wait.NeverStop) 
    return eStore 
} 
func main() { 
    //Configure cluster info 
    config := &amp 
    restclient.Config{ 
     Host:  "https://xxx.yyy.zzz:443", 
     Username: "kube", 
     Password: "supersecretpw", 
     Insecure: true, 
    } 
    //Create a new client to interact with cluster and freak if it doesn't work 
    kubeClient, err := client.New(config) 
    if err != nil { 
     log.Fatalln("Client not created sucessfully:", err) 
    } 
    //Create a cache to store Pods 
    var podsStore cache.Store 
    //Watch for Pods 
    podsStore = watchPods(kubeClient, podsStore) 
    //Keep alive 
    log.Fatal(http.ListenAndServe(":8080", nil)) 
} 
+0

おかげでなかなか良さそうです。しかし、私はkubeクラスタのすべてのタイプのイベントを取得したいと考えています。 kubeイベントAPIを使用するためのサンプルがありますか? –

+0

これは、 'k8s.io/kubernetes/pkg'が大幅にリファクタリングされたように見えるため、構築されません。コンパイルされた更新された依存関係の回避策がありますか? – nmurthy

+0

@nmurthy、いいえ、私は最近似たようなことはしていません。 – syntagma

関連する問題