client-go 操作 namespace

Namespace 就相当于租户的概念,起到资源隔离的作用,

namespaceclient.CoreV1() 方法中
这个方法中包含了一些接口和接口的实现

# 在236行左右
https://github.com/kubernetes/client-go/blob/master/kubernetes/clientset.go

https://github.com/kubernetes/client-go/blob/master/kubernetes/typed/core/v1/core_client.go

# 主要使用这个里面的一些方法
https://github.com/kubernetes/client-go/blob/master/kubernetes/typed/core/v1/namespace.go

获取k8s集群里面namespace列表

	// 获取所有 namespace
	namespaceList, err := clientset.CoreV1().Namespaces().List(metav1.ListOptions{})
	if err != nil {
		fmt.Println(err.Error())
	}else{
		for _,nsList := range namespaceList.Items {
			fmt.Printf("NsName: %s \n", nsList.Name)
		}
	}

获取指定namespace的详细信息

	// 获取指定namespace的详细信息
	result, err := clientset.CoreV1().Namespaces().Get("vc-test", metav1.GetOptions{})
	if err != nil {
		panic(err)
	}
	fmt.Printf("\n Name: %s \n Status: %s \n CreateTime: %s \n", result.ObjectMeta.Name, result.Status.Phase, result.CreationTimestamp)

创建namespace

	// 创建 namesapce
	// 通过实现 clientset 的 CoreV1Interface 接口列表中的 NamespacesGetter 接口方法 Namespaces 返回 NamespaceInterface
	// NamespaceInterface 接口拥有操作 Namespace 资源的方法,例如 Create、Update、Get、List 等方法
	name := "vc-test5"
	namespaceClient := clientset.CoreV1().Namespaces()
	namespace := &apiv1.Namespace{
		ObjectMeta: metav1.ObjectMeta{
			Name: name,
		},
	}
	// 创建 namespace
	result, err := namespaceClient.Create(namespace)
	if err != nil {
		fmt.Println(err.Error())
	}else{
		fmt.Printf("Create ns %s SuccessFul !", result.ObjectMeta.Name)
	}

删除namespace

	// 删除指定的 namespace
	name := "vc-test5"
	deletePolicy := metav1.DeletePropagationForeground
	err = clientset.CoreV1().Namespaces().Delete(name, &metav1.DeleteOptions{
		PropagationPolicy: &deletePolicy,
	})
	
	if err != nil {
		fmt.Println(err.Error())
	}else{
		fmt.Printf("Deleted Namespaces %s\n", name)
	}


猜你喜欢

转载自blog.csdn.net/u011327801/article/details/92148266