k8s-namespace
强制删除ns
kubectl get namespace monitor-sa -o json \ | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \ | kubectl replace --raw /api/v1/namespaces/monitor-sa/finalize -f -
什么是命名空间?
Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。
命名空间namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间,例如,可以为test、devlopment、production环境分别创建各自的命名空间。
namespace应用场景
命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间
删除namespace会同时删除对应ns下的所有资源
命名空间常用命令
#查看ns
[root@master01 test]# kubectl get ns
NAME STATUS AGE
default Active 32h
kube-node-lease Active 32h
kube-public Active 32h
kube-system Active 32h
kubernetes-dashboard Active 32h
#使用kubectl describe namespace $NAME可以查看特定的名称空间的详细信息。
[root@master01 ~]# kubectl describe ns kube-system
Name: kube-system
Labels: kubernetes.io/metadata.name=kube-system
Annotations: <none>
Status: Active
#创建ns
[root@master01 test]# kubectl create ns hwf
namespace/hwf created
#删除ns
[root@master01 ~]# kubectl delete ns hwf
namespace "hwf" deleted
#切换命名空间
[root@master01 ~]# kubectl config set-context --current --namespace=default
Context "kubernetes-admin@kubernetes" modified.
[root@master01 ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 32h
#查看哪些资源属于命名空间级别的[就是需要指定ns的有哪些]
[root@master01 ~]# kubectl api-resources --namespaced=true
namespace资源限额
namespace是命名空间,里面有很多资源,那么我们可以对命名空间资源做个限制,防止该命名空间部署的资源超过限制。
如何对namespace资源做限额呢?【ns指定命名空间资源限额yaml】
[root@master1~]# vim namespace-quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-quota
namespace: test
spec:
hwf:
requests.cpu: "2" #在hwf命名空间下,请求创建的pod总共资源不能超过cpu2核
requests.memory: 2Gi #在hwf命名空间下,请求创建的pod总共资源不能超过内存2G
limits.cpu: "4" #在hwf命名空间下,所有创建的pod总共资源不能超过cpu4核
limits.memory: 4Gi #在hwf命名空间下,所有创建的pod总共资源不能超过内存4G
这是一个简单的ResourceQuota类型,也就是针对Namespace的配额。它会针对Namespace做如下限额:
- 所有 CPU Requests 的总和不能超过 2 个内核
- 所有 RAM Requests 的总和不能超过 2GiB
- 所有 CPU Limits 的总和不能超过 4个内核
- 所有 RAM Limits 的总和不能超过 4GiB
继续阅读

我的微信
这是我的微信扫一扫
评论