將k8s二次開發(fā),golang k8s項目必備技能

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
}
}
