네임 자원 절연의 역할을하고, 거주자의 개념과 동일하다,
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
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的详细信息
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)
네임 스페이스 만들기
// 创建 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
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)
}