K8S之Namespace的介绍和使用

Namespace理论说明

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

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

Namespace实操

创建、查看命名空间

创建一个Namespace为test

kubectl create ns test

查看Namespace

kubectl get ns

在这里插入图片描述

使用ResouceQuota 对Namespace做资源限额

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

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

示例说明:
创建ResouceQuota 对象,对 test 命名空间中添加以下限制:
只能建4个pod、每个容器必须设置内存请求、内存限额、cpu请求和cpu限额。
步骤:
1、创建ResouceQuota 对象
编写ResouceQuota 资源文件

vim namespace-quota.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

kubectl apply -f namespace-quota.yaml

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

kubectl get resourcequota -n test

在这里插入图片描述

2、创建Pod 对象

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

编写Pod 资源文件

vim pod-test.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

kubectl apply -f pod-test.yaml

再看命名空间下的资源

kubectl get resourcequota -n test

在这里插入图片描述

更多ResouceQuota 的使用

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

相关推荐

  1. 8.k8s名称空间namespace

    2024-02-06 06:28:02       28 阅读
  2. k8snamespace及创建方式

    2024-02-06 06:28:02       57 阅读
  3. k8s中同一个namespace作用

    2024-02-06 06:28:02       36 阅读
  4. k8sPVPVC存储介绍

    2024-02-06 06:28:02       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-06 06:28:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-06 06:28:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-06 06:28:02       82 阅读
  4. Python语言-面向对象

    2024-02-06 06:28:02       91 阅读

热门阅读

  1. 常见的Web前端开发框架推荐

    2024-02-06 06:28:02       51 阅读
  2. LRU缓存

    LRU缓存

    2024-02-06 06:28:02      44 阅读
  3. SSL和Kerberos身份验证的区别?

    2024-02-06 06:28:02       50 阅读
  4. 设计模式-单例模式(懒汉+饿汉+线程安全模式)

    2024-02-06 06:28:02       55 阅读
  5. C++单例模式详解

    2024-02-06 06:28:02       39 阅读
  6. 【ASP.NET Core 基础知识】--Web API--Swagger文档生成

    2024-02-06 06:28:02       45 阅读
  7. .NetCore 如何动态路由

    2024-02-06 06:28:02       50 阅读
  8. pytest+allure批量执行测试用例

    2024-02-06 06:28:02       53 阅读
  9. [Lucene]核心类和概念介绍

    2024-02-06 06:28:02       53 阅读
  10. CSS定位

    2024-02-06 06:28:02       57 阅读