Namespace is equivalent to the concept of tenants, has played the role of resource isolation,
namespace
In the client.CoreV1()
method,
this method includes the implementation of a number of interfaces and interfaces
# 在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
Get inside the cluster namespace list k8s
// 获取所有 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)
}
}
For details of the specified 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)
Create a 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)
}
Delete 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)
}