|
1. 获取 Clientset
// GetClientSet get client set
func GetClientSet() (cclientset *kubernetes.Clientset, err error) {
if gClientset != nil {
return gClientset, nil
}
var kubeconfig *string
var clientset *kubernetes.Clientset
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", "~/.kube/config", "absolute path to the kubeconfig file")
}
flag.Parse()
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
if err != nil {
return clientset, err
}
clientset, err = kubernetes.NewForConfig(config)
if err != nil {
return clientset, err
}
gClientset = clientset
return clientset, nil
}
2. 获取 ConfigMap
func getConfigMap() {
configMaps, err := clientset.CoreV1().ConfigMaps("").List(metav1.ListOptions{})
if err != nil {
log.Fatalln("failed to get config map:", err)
}
for i, cm := range configMaps.Items {
fmt.Printf("[%d] %s\n", i, cm.GetName())
fmt.Printf("[%d] %s\n", i, cm.Data)
}
}
3. 获取Nodes
Nodeの取得
package main
import (
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"log"
"os"
"path/filepath"
)
func main() {
// kubernetesの設定ファイルのパスを組み立てる
kubeconfig := filepath.Join(os.Getenv("HOME"), ".kube", "config")
// BuildConfigFromFlags is a helper function that builds configs from a master url or
// a kubeconfig filepath.
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
if err != nil {
log.Fatal(err)
}
// NewForConfig creates a new Clientset for the given config.
// https://godoc.org/k8s.io/client-go/kubernetes#NewForConfig
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
log.Fatal(err)
}
// https://godoc.org/k8s.io/client-go/kubernetes/typed/core/v1
nodes, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{})
if err != nil {
log.Fatalln("failed to get nodes:", err)
}
for i, node := range nodes.Items {
fmt.Printf("[%d] %s\n", i, node.GetName())
}
}
4. 删减Nodes
func cleanUpNode(name string) (response int) {
clientset, err := scheduler.GetClientSet()
if err != nil {
fmt.Printf("CleanUp fail, error: %s\n", err)
return 0
}
if err := clientset.CoreV1().Nodes().Delete(name, &metav1.DeleteOptions{}); err != nil {
log.Printf("CleanUp fail, error: %s\n", err)
return 0
} else {
log.Printf("Outage Node Cleaned Up")
return 1
}
}
5. 生成Secret
Secretの作成
data := make(map[string][]byte)
data["user"] = []byte("admin")
data["password"] = []byte("password")
// https://godoc.org/k8s.io/api/core/v1
// https://godoc.org/k8s.io/client-go/kubernetes/typed/core/v1#SecretInterface
secrets, err := clientset.CoreV1().Secrets("default").Create(&v1.Secret{
TypeMeta: metav1.TypeMeta{
Kind: "Secret",
},
ObjectMeta: metav1.ObjectMeta{
Name: "generic-secret",
Namespace: "default",
},
Data: data,
})
fmt.Println(secrets)
6. Ingress 获取
Ingressの詳細を取得
ingress, err := clientset.ExtensionsV1beta1().Ingresses("jx").Get("docker-registry", metav1.GetOptions{})
if err != nil {
log.Fatalln("failed to get ingresses:", err)
}
fmt.Println(reflect.TypeOf(ingress)) // *v1beta1.Ingress
fmt.Println(ingress)
fmt.Println(ingress.ObjectMeta.Name) // docker-registry
7. Deployment 获取
Deploymentの取得
// https://godoc.org/k8s.io/client-go/kubernetes/typed/apps/v1#AppsV1Interface
deployments, err := clientset.AppsV1().Deployments("").List(metav1.ListOptions{})
if err != nil {
log.Fatalln("failed to get deployments:", err)
}
for i, deployment := range deployments.Items {
fmt.Printf("[%d] %s\n", i, deployment.GetName())
}
来源 : https://pizi.netlify.com/posts/kubernetes-client-go-example/
来源:https://www.cnblogs.com/jokerjason/p/11898428.html |