Github地址:https://github.com/kubernetes/client-go

 

访问kubernetes集群有几下几种方式:

方式

特点

支持者

Kubernetes dashboard

直接通过Web UI进行操作,简单直接,可定制化程度低

官方支持

kubectl

命令行操作,功能最全,但是比较复杂,适合对其进行进一步的分装,定制功能,版本适配最好

官方支持

​client-go​

从kubernetes的代码中抽离出来的客户端包,简单易用,但需要小心区分kubernetes的API版本

官方支持

​client-python​

python客户端,kubernetes-incubator

官方支持

​Java client​

fabric8中的一部分,kubernetes的java客户端

redhat

 

使用client-go获取Deployment列表:


Kubernetes client-go_命令行操作Kubernetes client-go_客户端_02


package main

import (
"path/filepath"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/kubernetes"
"k8s.io/apimachinery/pkg/apis/meta/v1"
"fmt"
)

func main() {
path, err := filepath.Abs("./")
if err != nil {
panic(err)
}
configFilePath := path + "/K8s/API/config"

// use the config file
config, err := clientcmd.BuildConfigFromFlags("", configFilePath)
if err != nil {
panic(err.Error())
}

// NewForConfig creates a new ClientSet for the given config.
clientSet, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}

// get all deployment in default namespace
deploymentList, err := clientSet.AppsV1().Deployments("default").List(v1.ListOptions{})
if err != nil {
panic(err.Error())
}

// print list deployment name and replicas
for _, v := range deploymentList.Items {
fmt.Printf(" * %s (%d replicas)\n", v.Name, *v.Spec.Replicas)
}

}

View Code