欢迎光临散文网 会员登陆 & 注册

k8s-client

2023-08-17 18:11 作者:哈密瓜hero  | 我要投稿

package main

import (
   "context"
   "fmt"
   metAV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
   "k8s.io/client-go/kubernetes"
   "k8s.io/client-go/rest"
   "k8s.io/client-go/tools/clientcmd"
   "k8s.io/klog"
   "time"
)

func main() {
   //kubeconfig := getKubeConfig()
   kubeconfig := "./config"

   config, err := clientConfig(kubeconfig)
   if err != nil {
      klog.Fatalf("Failed to create client config: %v", err)
   }

   config.Host = "https://192.168.0.51:6443"
   clientset, err := kubernetes.NewForConfig(config)
   if err != nil {
      klog.Fatalf("Failed to create clientset: %v", err)

   }
   listPods(clientset)
}

//func getKubeConfig() string {
//  kubeconfig := "./config"
//  return kubeconfig
//}

func clientConfig(kubeconfig string) (*rest.Config, error) {
   config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
   if err != nil {
      return nil, err
   }
   return config, nil
}

func listPods(clientset *kubernetes.Clientset) {
   retries := 5
   for retries > 0 {
      pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metAV1.ListOptions{})
      if err != nil {
         klog.Errorf("failed to list pod: %v", err)
         retries--
         time.Sleep(5 * time.Second) //等待一段时间后重试
         continue
      }
      fmt.Printf("Pods in the cluster:\n")
      for _, pod := range pods.Items {
         fmt.Printf("Namespace: %s, Name: %s\n", pod.Namespace, pod.Name)

      }
      break
   }

}

运行成功

【将k8s二次开发,golang k8s项目必备技能】 https://www.bilibili.com/video/BV1794y1k7Vu/?share_source=copy_web&;vd_source=e4ba9668fa920780dc180ebb15efa961

k8s-client的评论 (共 条)

分享到微博请遵守国家法律