client-go连接kubernetes集群-delete相关操作

2022-05-04 18:49:15 浏览数 (1)

背景

紧跟client-go连接kubernetes集群-connect and list,client-go连接kubernetes集群-create相关操作与client-go连接kubernetes集群-update相关操作。现在操作一下删除deployment 与namespace。当然了也想看一下操作集群crud的操作都有哪些动作!

client-go连接kubernetes集群-delete相关操作

删除deployment

main.go

代码语言:txt复制
package main

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

func main() {
	var kubeconfig *string
	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.Error())
	}

	// create the clientset
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		panic(err.Error())
	}
	DeploymentName := "nginx"
	if err = clientset.AppsV1().Deployments("zhangpeng").Delete(context.TODO(), DeploymentName, metav1.DeleteOptions{}); err != nil {
		fmt.Println(err)
		return
	}
}

image.pngimage.png

代码语言:txt复制
kubectl get deploymnt -n zhangpeng 
image.pngimage.png

删除namespace

main.go

代码语言:txt复制
package main

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

func main() {
	var kubeconfig *string
	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.Error())
	}

	// create the clientset
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		panic(err.Error())
	}
	NamespaceName := "zhangpeng"
	if err = clientset.CoreV1().Namespaces().Delete(context.TODO(), NamespaceName, metav1.DeleteOptions{}); err != nil {
		fmt.Println(err.Error())
		return
	} else {
		fmt.Printf("Deleted Namespaces %sn", NamespaceName)
	}
}
image.pngimage.png
代码语言:txt复制
kubectl get ns
image.pngimage.png

zhangpeng namespace删除成功!

其他的:

  1. 当然了除了常用的List delete update and create还有很多操作方法,比如namespace 与 deployment的一些其他操作:
8fedb4d5459537791525966359be5bc.jpg8fedb4d5459537791525966359be5bc.jpg
f48df2cf6b3a55950e473928d2fce89.jpgf48df2cf6b3a55950e473928d2fce89.jpg
  1. 接下来要做的:把客户端单独提取出来,跟gin整合做一些简单的crud操作......

0 人点赞