Namespace 就相当于租户的概念,起到资源隔离的作用,
namespace
在client.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)
}