• client-go调用K8S集群


    一、创建clientset

    //获取kubeconfig
    kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
    //创建config
    config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
    //创建clientset
    clientset, err := kubernetes.NewForConfig(config)
    //具体的资源调用见以下例子
    

    二、获取资源

    1、pod

    //声明pod对象
    var pod *v1.Pod
    //创建pod
    pod, err := clientset.CoreV1().Pods(<namespace>).Create(<pod>)
    //更新pod
    pod, err := clientset.CoreV1().Pods(<namespace>).Update(<pod>)
    //删除pod
    err := clientset.CoreV1().Pods(<namespace>).Delete(<pod.Name>, &meta_v1.DeleteOptions{})
    //查询pod
    pod, err := clientset.CoreV1().Pods(<namespace>).Get(<pod.Name>, &meta_v1.GetOptions{})
    //列出pod
    podList, err := clientset.CoreV1().Pods(<namespace>).List(&meta_v1.ListOptions{})
    //watch pod
    watchInterface, err := clientset.CoreV1().Pods(<namespace>).Watch(&meta_v1.ListOptions{})
    

    2、pods补充

    fmt.Println(pods.Items[1].Name)
        fmt.Println(pods.Items[1].CreationTimestamp)
        fmt.Println(pods.Items[1].Labels)
        fmt.Println(pods.Items[1].Namespace)
        fmt.Println(pods.Items[1].Status.HostIP)
        fmt.Println(pods.Items[1].Status.PodIP)
        fmt.Println(pods.Items[1].Status.StartTime)
        fmt.Println(pods.Items[1].Status.Phase)
        fmt.Println(pods.Items[1].Status.ContainerStatuses[0].RestartCount)   //重启次数
        fmt.Println(pods.Items[1].Status.ContainerStatuses[0].Image) //获取重启时间
    
        //获取NODE
        fmt.Println("##################")
        nodes, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{})
        fmt.Println(nodes.Items[0].Name)
        fmt.Println(nodes.Items[0].CreationTimestamp)    //加入集群时间
        fmt.Println(nodes.Items[0].Status.NodeInfo)
        fmt.Println(nodes.Items[0].Status.Conditions[len(nodes.Items[0].Status.Conditions)-1].Type)
        fmt.Println(nodes.Items[0].Status.Allocatable.Memory().String())

    3、deployment

    //声明deployment对象
    var deployment *v1beta1.Deployment
    //构造deployment对象
    //创建deployment
    deployment, err := clientset.AppsV1beta1().Deployments(<namespace>).Create(<deployment>)
    //更新deployment
    deployment, err := clientset.AppsV1beta1().Deployments(<namespace>).Update(<deployment>)
    //删除deployment
    err := clientset.AppsV1beta1().Deployments(<namespace>).Delete(<deployment.Name>, &meta_v1.DeleteOptions{})
    //查询deployment
    deployment, err := clientset.AppsV1beta1().Deployments(<namespace>).Get(<deployment.Name>, &meta_v1.GetOptions{})
    //列出deployment
    deploymentList, err := clientset.AppsV1beta1().Deployments(<namespace>).List(&meta_v1.ListOptions{})
    //watch deployment
    watchInterface, err := clientset.AppsV1beta1().Deployments(<namespace>).Watch(&meta_v1.ListOptions{})
    

    4、service

    //声明service对象
    var service *v1.Service
    //构造service对象
    //创建service
    service, err := clientset.CoreV1().Services(<namespace>).Create(<service>)
    //更新service
    service, err := clientset.CoreV1().Services(<namespace>).Update(<service>)
    //删除service
    err := clientset.CoreV1().Services(<namespace>).Delete(<service.Name>, &meta_v1.DeleteOptions{})
    //查询service
    service, err := clientset.CoreV1().Services(<namespace>).Get(<service.Name>, &meta_v1.GetOptions{})
    //列出service
    serviceList, err := clientset.CoreV1().Services(<namespace>).List(&meta_v1.ListOptions{})
    //watch service
    watchInterface, err := clientset.CoreV1().Services(<namespace>).Watch(&meta_v1.ListOptions{})
    

    5、ingress

    var ingress *v1beta1.Ingress
    //构造ingress对象
    //创建ingress
    ingress, err := clientset.ExtensionsV1beta1().Ingresses(<namespace>).Create(<ingress>)
    //更新ingress
    ingress, err := clientset.ExtensionsV1beta1().Ingresses(<namespace>).Update(<ingress>)
    //删除ingress
    err := clientset.ExtensionsV1beta1().Ingresses(<namespace>).Delete(<ingress.Name>, &meta_v1.DeleteOptions{})
    //查询ingress
    ingress, err := clientset.ExtensionsV1beta1().Ingresses(<namespace>).Get(<ingress.Name>, &meta_v1.GetOptions{})
    //列出ingress
    ingressList, err := clientset.ExtensionsV1beta1().Ingresses(<namespace>).List(&meta_v1.ListOptions{})
    //watch ingress
    watchInterface, err := clientset.ExtensionsV1beta1().Ingresses(<namespace>).Watch(&meta_v1.ListOptions{})
    

        

  • 相关阅读:
    memcached 高级机制(一)
    memcached 简介
    Hibernate
    Linux中的搜索命令
    Linux的常用命令
    Git清除用户名和密码
    关于Git的简单使用
    文件的上传与下载(2)
    关于文件的上传和后台接收
    验证码的制作
  • 原文地址:https://www.cnblogs.com/wuchangblog/p/14178487.html
Copyright © 2020-2023  润新知