news 2026/7/10 12:47:14

K8S-namespace资源对象

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
K8S-namespace资源对象

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

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

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

二、namespace资源管理
2.1 查看名称空间及其资源对象
k8s集群默认提供了几个名称空间用于特定目的,例如,kube-system主要用于运行系统级资源,存放k8s一些组件的。而default则为那些未指定名称空间的资源操作提供一个默认值。

##查看名称空间 kubectl get namespace ##查看特定的名称空间的详细信息 kubectl describe namespace NAME

2.2 管理namespace资源

namespace资源的名称仅能由字母、数字、下划线、连接线等字符组成。删除namespace资源会级联删除其包含的所有其他资源对象。

##创建名称空间 kubectl create namespace 名称 ##删除名称空间 kubectl delete namespace 名称

2.3 使用yaml文件创建namespace

apiVersion: v1 kind: Pod metadata: name: myns2

三、namespace使用案例

3.1 创建一个test命名空间

[root@k8s-master01 ~]# kubectl create ns test

3.2 切换默认查看命名空间

[root@k8s-master01 ~]# kubectl config set-context --current --namespace=kube-system #注意:切换命名空间后,kubectl get pods 如果不指定-n,查看的就是kube-system命名空间的资源了。

3.3 查看哪些资源属于命名空间级别的

[root@k8s-master01 ~]# kubectl api-resources --namespaced=true NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 true Binding configmaps cm v1 true ConfigMap endpoints ep v1 true Endpoints events ev v1 true Event limitranges limits v1 true LimitRange persistentvolumeclaims pvc v1 true PersistentVolumeClaim pods po v1 true Pod podtemplates v1 true PodTemplate replicationcontrollers rc v1 true ReplicationController resourcequotas quota v1 true ResourceQuota secrets v1 true Secret serviceaccounts sa v1 true ServiceAccount services svc v1 true Service controllerrevisions apps/v1 true ControllerRevision daemonsets ds apps/v1 true DaemonSet deployments deploy apps/v1 true Deployment replicasets rs apps/v1 true ReplicaSet statefulsets sts apps/v1 true StatefulSet localsubjectaccessreviews authorization.k8s.io/v1 true LocalSubjectAccessReview horizontalpodautoscalers hpa autoscaling/v2 true HorizontalPodAutoscaler cronjobs cj batch/v1 true CronJob jobs batch/v1 true Job leases coordination.k8s.io/v1 true Lease networkpolicies crd.projectcalico.org/v1 true NetworkPolicy networksets crd.projectcalico.org/v1 true NetworkSet endpointslices discovery.k8s.io/v1 true EndpointSlice events ev events.k8s.io/v1 true Event pods metrics.k8s.io/v1beta1 true PodMetrics ingresses ing networking.k8s.io/v1 true Ingress networkpolicies netpol networking.k8s.io/v1 true NetworkPolicy poddisruptionbudgets pdb policy/v1 true PodDisruptionBudget rolebindings rbac.authorization.k8s.io/v1 true RoleBinding roles rbac.authorization.k8s.io/v1 true Role csistoragecapacities storage.k8s.io/v1 true CSIStorageCapacity

3.4 namespace资源限额

namespace是命名空间,里面有很多资源,那么我们可以对命名空间资源做个限制,防止该命名空间部署的资源超过限制。

如何对namespace资源做限额呢?

[[root@k8s-master01 ~]# vim namespace-quota.yaml
apiVersion: v1 kind: ResourceQuota metadata: name: mem-cpu-quota namespace: test spec: hard: requests.cpu: '2' requests.memory: 2Gi limits.cpu: '4' limits.memory: 4Gi ####解析#### #创建的ResourceQuota对象将在test名字空间中添加以下限制: #每个容器必须设置内存请求(memory request),内存限额(memory limit),cpu请求(cpu request)和cpu限额(cpu limit)。 ##所有容器的内存请求总额不得超过2GiB。 ##所有容器的内存限额总额不得超过4GiB。 ##所有容器的CPU请求总额不得超过2CPU。 ##所有容器的CPU限额总额不得超过4CPU。 ##应用配额文件并查看命名空间是否收到了限制
[root@k8s-master01 ~]# kubectl apply -f namespace-quota.yaml [root@k8s-master01 ~]# kubectl describe ns test Name: test Resource Quotas Name: mem-cpu-quota Resource Used Hard -------- --- --- limits.cpu 0 4 limits.memory 0 4Gi requests.cpu 0 2 requests.memory 0 2Gi

3.5 创建资源限制Pod

创建pod时候可以不用设置资源限额,如下:

[root@k8s-master01 ~]# vim pod-test.yaml
apiVersion: v1 kind: Pod metadata: name: pod-test namespace: myns1 labels: app: nginx129 spec: containers: - name: nginx129 ports: - containerPort: 80 image: nginx:latest imagePullPolicy: IfNotPresent
[root@k8s-master01 ~]# kubectl apply -f pod-test.yaml Error from server (Forbidden): error when creating "pod-test.yaml": pods "pod-test" is forbidden: failed quota: mem-cpu-quota: must specify limits.cpu for: nginx1; limits.memory for: nginx1; requests.cpu for: nginx1; requests.memory for: nginx1 ##发现无法正常启动

修改一下资源配置清单

[root@k8s-master01 ~]# cat pod-test.yaml
apiVersion: v1 kind: Pod metadata: name: pod-test namespace: test labels: app: tomcat-pod-test spec: containers: - name: tomcat-test ports: - containerPort: 8080 image: tomcat:8.5-jre8-alpine imagePullPolicy: IfNotPresent resources: requests: cpu: 0.5 memory: 1024Mi limits: cpu: 0.5 memory: 1024Mi

再次执行

[root@k8s-master01 ~]# kubectl apply -f pod-test.yaml ##查看,pod正常运行了 [root@k8s-master01 ~]# kubectl get pod -n test NAME READY STATUS RESTARTS AGE pod-test 1/1 Running 0 15s
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 21:28:34

K8S-Statefulset控制器

一、Statefulset控制器:概念、原理解读StatefulSet是为了管理有状态服务的问题而设计的。有状态服务StatefulSet是有状态的集合,管理有状态的服务,它所管理的Pod的名称不能随意变化。数据持久化的目录也是不一样,每一个Pod都有自己…

作者头像 李华
网站建设 2026/7/10 11:59:00

NetSonar网络诊断专家:3步搞定专业级网络性能监控

NetSonar网络诊断专家:3步搞定专业级网络性能监控 【免费下载链接】NetSonar Network pings and other utilities 项目地址: https://gitcode.com/gh_mirrors/ne/NetSonar 还在为网络连接不稳定而烦恼吗?🤔 NetSonar作为一款强大的跨平…

作者头像 李华
网站建设 2026/7/9 16:32:57

终极指南:Wan2GP视频生成模型快速入门教程

终极指南:Wan2GP视频生成模型快速入门教程 【免费下载链接】Wan2GP Wan 2.1 for the GPU Poor 项目地址: https://gitcode.com/gh_mirrors/wa/Wan2GP 想要体验专业级视频生成却担心硬件配置不足?Wan2GP正是为你量身打造的解决方案!这个…

作者头像 李华
网站建设 2026/7/10 9:44:31

掌握OctoSQL数据流分析:可视化查询执行全流程

掌握OctoSQL数据流分析:可视化查询执行全流程 【免费下载链接】octosql octosql:这是一个SQL查询引擎,它允许您对存储在多个SQL数据库、NoSQL数据库和各种格式的文件中的数据编写标准SQL查询,尝试将尽可能多的工作压缩到源数据库&…

作者头像 李华
网站建设 2026/7/10 11:33:45

提升Maya创作效率的实用插件盘点

在影视动画、游戏制作等视觉创作领域,Maya始终以其扎实的基础功能占据标杆地位,成为行业从业者的必备工具。面对日益复杂的项目需求和紧张的交付周期,仅依靠软件原生功能往往难以实现高效创作。适配性强的Maya插件就成了提升效率的关键助力—…

作者头像 李华
网站建设 2026/7/10 3:52:09

终极指南:5分钟快速上手ArcGIS API for Python地理空间分析

想要轻松处理地图数据、进行地理编码和空间分析吗?🚀 ArcGIS API for Python 是一个强大的地理空间数据处理库,专门为Python开发者设计。这个由Esri开发的库不仅支持深度学习、复杂的向量与栅格分析,还能与Jupyter Notebook完美配…

作者头像 李华