Home > database >  Does anyone know the way to do this on a client-go or the API resources that kubectl describe pod us
Does anyone know the way to do this on a client-go or the API resources that kubectl describe pod us

Time:05-15

I cannot find the appropriate method to do this.

Does anyone know the way to do this on a client-go or the API resources that kubectl describe pod uses?

CodePudding user response:

you can see it on the code of the kubectl describe command

CodePudding user response:

Here is an example code of getting pod with client-go:

/*
A demonstration of get pod using client-go
Based on client-go examples: https://github.com/kubernetes/client-go/tree/master/examples
To demonstrate, run this file with `go run <filename> --help` to see usage
*/

package main

import (
    "context"
    "flag"
    "fmt"
    "os"
    "path/filepath"

    v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/kubernetes"
    "k8s.io/client-go/tools/clientcmd"
    "k8s.io/client-go/util/homedir"
)

func main() {
    podName := flag.String("pod-name", "", "name of the required pod")
    namespaceName := flag.String("namespace", "", "namespace of the required pod")
    var kubeconfig *string
    if config, exist := os.LookupEnv("KUBECONFIG"); exist {
        kubeconfig = &config
    } else 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()

    config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
    if err != nil {
        panic(err)
    }
    clientset, err := kubernetes.NewForConfig(config)
    if err != nil {
        panic(err)
    }

    podClient := clientset.CoreV1().Pods(*namespaceName)
    fmt.Println("Getting pod...")
    result, err := podClient.Get(context.TODO(), *podName, v1.GetOptions{})
    if err != nil {
        panic(err)
    }
    // Example fields
    fmt.Printf("% v\n", result.Name)
    fmt.Printf("% v\n", result.Namespace)
    fmt.Printf("% v\n", result.Spec.ServiceAccountName)
}

  • Related