Kubernetes 防止kubectl删除包含资源的命名空间
是否有方法配置Kubernetes(或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
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]角色绑定。您可以找到更多示例看看终结器。您可以向资源添加终结器,它将防止删除资源/命名空间。我不认为有什么方法可以真正防止名称空间被擦除,但是,您可以恢复资源