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

将k8s二次开发,golang k8s项目必备技能

2023-08-17 18:08 作者:哈密瓜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项目必备技能的评论 (共 条)

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