Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 防止kubectl删除包含资源的命名空间_Kubernetes_Kubectl - Fatal编程技术网

Kubernetes 防止kubectl删除包含资源的命名空间

Kubernetes 防止kubectl删除包含资源的命名空间,kubernetes,kubectl,Kubernetes,Kubectl,是否有方法配置Kubernetes(或kubectl),以便尝试删除具有Kubernetes资源的命名空间将导致错误 以下是一个例子: $ kubectl create ns testing namespace/testing created $ kubectl apply -n testing -f pod-nginx.yaml pod/example-pod created $ kubectl get -n testing pods NAME READY STATUS

是否有方法配置Kubernetes(或
kubectl
),以便尝试删除具有Kubernetes资源的命名空间将导致错误

以下是一个例子:

$ kubectl create ns testing
namespace/testing created
$ kubectl apply -n testing -f pod-nginx.yaml 
pod/example-pod created
$ kubectl get -n testing pods
NAME          READY   STATUS    RESTARTS   AGE
example-pod   1/1     Running   0          5s
$ kubectl delete ns testing
namespace "testing" deleted
$ kubectl get -n testing pods
No resources found in testing namespace.
我想要的是delete命令(
kubectl delete ns testing
)不删除任何内容,而是返回一个错误,错误形式为“无法删除命名空间,因为它包含资源”


这可能吗?

不幸的是,我不知道有什么方法可以按照您期望的方式来做。我能想到的最佳解决方案是使用RBAC防止用户删除名称空间。这不是你想要的,但它可能是你最接近的:

apiVersion:rbac.authorization.k8s.io/v1 种类:ClusterRole 元数据: 名称:受限用户 规则: -apiGroups:[“”] 资源:[“名称空间”] 动词:[“获取”、“列表”、“监视”、“创建”、“更新”、“修补程序”] [...] 然后,根据您是否希望按命名空间或集群范围应用此命名空间,您可以使用
ClusterRoleBinding
RoleBinding

apiVersion:rbac.authorization.k8s.io/v1 种类:RoleBinding 元数据: 名称:受限用户 名称空间:我的名称空间 学科: -种类:用户 姓名:简 apiGroup:rbac.authorization.k8s.io [...] roleRef: 种类:ClusterRole 名称:受限用户 [...] 或:

apiVersion:rbac.authorization.k8s.io/v1 种类:簇状卷边 元数据: 名称:受限用户 学科: -种类:用户 姓名:简 apiGroup:rbac.authorization.k8s.io [...] roleRef: 种类:ClusterRole 名称:受限用户 apiGroup:rbac.authorization.k8s.io [...]
这只是一个简单的例子。您通常会设置组和一组不同的[Cluster]角色和[Cluster]角色绑定。您可以找到更多示例

看看终结器。您可以向资源添加终结器,它将防止删除资源/命名空间。我不认为有什么方法可以真正防止名称空间被擦除,但是,您可以恢复资源