K8S之Namespace的介绍和使用

Namespace的理论和实操

Namespace理论说明

命名空间定义

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

Namespace应用场景

Namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间。

例如,可以为devlopment、test、production环境分别创建各自的命名空间。

Namespace实操

创建、查看命名空间

创建一个Namespace为test

bash 复制代码
kubectl create ns test

查看Namespace

bash 复制代码
kubectl get ns

使用ResouceQuota 对Namespace做资源限额

在K8s集群中通过 ResouceQuota 对象定义每个Namespace的资源配额,从而实现资源消耗总量的限制。

ResouceQuota 有两个作用:

  • 可以按类型限制Namespace下所创建对象的数量
  • 限制所消耗计算资源的总量

示例说明:

创建ResouceQuota 对象,对 test 命名空间中添加以下限制:

只能建4个pod、每个容器必须设置内存请求、内存限额、cpu请求和cpu限额。

步骤:

1、创建ResouceQuota 对象

编写ResouceQuota 资源文件

bash 复制代码
vim namespace-quota.yaml
yaml 复制代码
apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-quota
  namespace: test  # 指定限制的命名空间名称
spec:
  hard:
    pods: "4"    
    requests.cpu: "2"    # 所有容器的CPU请求总额不得超过2 CPU
    requests.memory: 2Gi # 所有容器的内存请求总额不得超过2GiB
    limits.cpu: "4"      # 所有容器的CPU限额总额不得超过4CPU
    limits.memory: 4Gi   # 所有容器的内存限额总额不得超过4 GiB

创建ResouceQuota

bash 复制代码
kubectl apply -f namespace-quota.yaml

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

bash 复制代码
kubectl get resourcequota -n test

2、创建Pod 对象

创建Pod 时候必须设置资源限额,否则创建失败

编写Pod 资源文件

bash 复制代码
vim pod-test.yaml
yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: pod-test
  namespace: test
  labels:
    app: tomcat-pod-test
spec:
  containers:
  - name:  tomcat-test
    image: tomcat-8.5-jre8:v1
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 8080
    resources:
      requests:
        memory: "100Mi"
        cpu: "500m"
      limits:
        memory: "2Gi"
        cpu: "2"

创建Pod

bash 复制代码
kubectl apply -f pod-test.yaml

再看命名空间下的资源

bash 复制代码
kubectl get resourcequota -n test

更多ResouceQuota 的使用

官网文档:https://kubernetes.io/zh-cn/docs/concepts/policy/resource-quotas/

相关推荐
-L78 小时前
【Kubernetes】常见面试题汇总(十九)
云原生·容器·kubernetes
红尘客栈212 小时前
K8s-kubeadmin 1.28安装
java·网络·kubernetes
红尘客栈212 小时前
K8S基本命令操作
linux·容器·kubernetes
我好饿112 小时前
部署k8s集群+containerd+dashboard
云原生·容器·kubernetes
hello_25012 小时前
动手模拟k8s网络-vxlan模式
网络·容器·kubernetes
小马爱打代码13 小时前
Kubernetes:控制器 - ReplicaSet
容器·kubernetes
缘的猿15 小时前
云计算划分标准与Kubernetes NetworkPolicy深度解析
容器·kubernetes·云计算
matlab的学徒16 小时前
Kubernetes(K8S)全面解析:核心概念、架构与实践指南
linux·容器·架构·kubernetes
没有口袋啦18 小时前
K8s集群多节点部署(Ubuntu22.04)
docker·云原生·容器·kubernetes
荣光波比18 小时前
K8S(三)—— 基于kubeadm 1.20版本部署Kubernetes集群与Harbor私有仓库实战
云原生·容器·kubernetes