【云原生 | Kubernetes 实战】04、k8s 名称空间和资源配额
创始人
2024-02-20 16:45:51
0

目录

一、什么是命名空间?

二、namespace 应用场景

三、namespacs 使用案例

四、namespace 资源限额


 

一、什么是命名空间?

        Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。

        命名空间namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间,例如,可以为 test、devlopment、production环境分别创建各自的命名空间。

二、namespace 应用场景

        命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间。默认在 default 这个命名空间。

三、namespacs 使用案例

# 创建一个test命名空间。namespace 可以简写为 ns
[root@k8s-master01 pod-yaml]# kubectl create ns test
namespace/test created# 查看命名空间
[root@k8s-master01 pod-yaml]# kubectl get ns
NAME                   STATUS   AGE
default                Active   36d
kube-node-lease        Active   36d
kube-public            Active   36d
kube-system            Active   36d
kubernetes-dashboard   Active   36d
test                   Active   16s

四、namespace 资源限额

给 test 这个名称空间做资源限额,即限制 test 名称空间下pod的资源。

#1. 查看帮助命令
[root@k8s-master01 pod-yaml]# kubectl explain resourcequota
[root@k8s-master01 pod-yaml]# kubectl explain resourcequota.metadata
[root@k8s-master01 pod-yaml]# kubectl explain resourcequota.spec#2. 编写 yaml 文件
[root@k8s-master01 pod-yaml]# vi namespace-quota.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:name: mem-cpu-quotanamespace: test
spec:hard:requests.cpu: "2"requests.memory: 2Gilimits.cpu: "4"limits.memory: 4Gi#3. 创建resourcequotas资源
[root@k8s-master01 pod-yaml]# kubectl get resourcequotas -n test
NAME            AGE   REQUEST                                     LIMIT
mem-cpu-quota   56s   requests.cpu: 0/2, requests.memory: 0/2Gi   limits.cpu: 0/4, limits.memory: 0/4Gi
  • spec.hard字段官网参考文档:资源配额 | Kubernetes

上面创建的 ResourceQuota 对象将在test名字空间中添加以下限制:

        每个容器必须设置内存请求(memory request),内存限额(memory limit),cpu请求(cpu request)和cpu限额(cpu limit)。

  • 所有容器的内存请求总额不得超过 2 GiB。
  • 所有容器的内存限额总额不得超过 4 GiB。
  • 所有容器的CPU请求总额不得超过 2 CPU。
  • 所有容器的CPU限额总额不得超过 4 CPU。 

        ResouceQuota 对象是在我们的名称空间中创建的,并准备好控制该名称空间中的所有容器的总请求和限制。

接下来我们创建pod的时候也必须设置资源限额(requests、limits 字段),否则创建pod资源失败:

[root@k8s-master01 pod-yaml]# vi pod-test.yaml 
apiVersion: v1
kind: Pod
metadata:name: pod-testnamespace: testlabels:app: tomcat-pod-test
spec:containers:- name:  tomcat-testports:- containerPort: 8080image: tomcat:latestimagePullPolicy: IfNotPresentresources:requests:memory: "100Mi"cpu: "500m"limits:memory: "2Gi"cpu: "2"# 创建pod资源
[root@k8s-master01 pod-yaml]# kubectl apply -f pod-test.yaml 
pod/pod-test created
您在 /var/spool/mail/root 中有新邮件[root@k8s-master01 pod-yaml]# kubectl get pods -n test 
NAME       READY   STATUS    RESTARTS   AGE
pod-test   1/1     Running   0          14s# 查看 test 名称空间的资源情况
[root@k8s-master01 pod-yaml]# kubectl get resourcequotas -n test 
NAME            AGE   REQUEST                                            LIMIT
mem-cpu-quota   45m   requests.cpu: 500m/2, requests.memory: 100Mi/2Gi   limits.cpu: 2/4, limits.memory: 2Gi/4Gi
  • pods.spec.containers.resources 字段官网参考文档:为 Pod 和容器管理资源 | Kubernetes

        上述 Pod 里的 tomcat-test 容器的请求为 0.5 CPU 和 100 MiB 内存, 该容器的资源限制为 2 CPU 和 2 GB 内存。 你也可以认为该 Pod 的资源请求为 0.5 CPU 和 100 MiB 内存,资源限制为 2 CPU 和 2 GB 内存。 

如果我们再更改下yaml文件,使其超出设置的资源额度:

[root@k8s-master01 pod-yaml]# vi pod-test.yaml 
apiVersion: v1
kind: Pod
metadata:name: pod-testnamespace: testlabels:app: tomcat-pod-test
spec:containers:- name:  tomcat-testports:- containerPort: 8080image: tomcat:latestimagePullPolicy: IfNotPresentresources:requests:memory: "100Mi"cpu: "500m"limits:memory: "5Gi"cpu: "5"[root@k8s-master01 pod-yaml]# kubectl delete pods -n test pod-test 
pod "pod-test" deleted[root@k8s-master01 pod-yaml]# kubectl get pods -n test 
No resources found in test namespace.
您在 /var/spool/mail/root 中有新邮件[root@k8s-master01 pod-yaml]# kubectl apply -f pod-test.yaml 
Error from server (Forbidden): error when creating "pod-test.yaml": pods "pod-test" is forbidden: exceeded quota: mem-cpu-quota, requested: limits.cpu=5,limits.memory=5Gi, used: limits.cpu=0,limits.memory=0, limited: limits.cpu=4,limits.memory=4Gi

 报错,超出了原来的资源限制(4 cpu,4 GB内存):

 上一篇文章:【云原生 | Kubernetes 实战】03、手把手教你基于YAML文件运行pod应用_Stars.Sky的博客-CSDN博客

相关内容

热门资讯

发挥政策合力促物价合理回升 近日举行的中央经济工作会议提出,“把促进经济稳定增长、物价合理回升作为货币政策的重要考量”,引发广泛...
澳大利亚国家内阁会议 同意加强... 新华社悉尼12月15日电(记者 齐紫剑 李晓渝)澳大利亚总理阿尔巴尼斯与澳各州、领地领导人15日举行...
亿利达[002686]关于诉讼... 本版导读 2025-12-16 2025-12-16 2025-12-16 2025...
重庆市地方金融条例 重庆市人民代表大会常务委员会公告 〔六届〕第103号 《重庆市地方金融条例》已于2025年11月28...
特朗普:可能会在未来“数小时内... 中新网12月16日电 据美国《新闻周刊》报道,当地时间12月15日,美国总统特朗普表示,可能会在未来...
律师成长的误区:忽视“被动”生... 我们小时候都学过“揠苗助长”的故事,学完会嘲笑这个农夫太过心急。我发现我们也不知不觉成为了这个“农夫...
中国电器科学研究院股份有限公司... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...
特朗普:拟于今日或明日起诉BB... 当地时间12月15日,美国总统特朗普表示,可能会在当日下午或16日早上对英国广播公司(BBC)提起诉...
欧盟外交与安全政策高级代表卡拉... 欧盟外交与安全政策高级代表卡拉斯:每个人都理解比利时的担忧,并愿意分担负担。 来源:金融界AI电报
美联储理事米兰:金融市场关注的... 美联储理事米兰:金融市场关注的是结果,而非政策制定者的动机。 来源:金融界AI电报