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/

相关推荐
大熊程序猿2 小时前
K8s证书过期
云原生·容器·kubernetes
魏 无羡11 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
Karoku06612 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
凌虚13 小时前
Kubernetes APF(API 优先级和公平调度)简介
后端·程序员·kubernetes
探索云原生17 小时前
在 K8S 中创建 Pod 是如何使用到 GPU 的: nvidia device plugin 源码分析
ai·云原生·kubernetes·go·gpu
启明真纳17 小时前
elasticache备份
运维·elasticsearch·云原生·kubernetes
jwolf219 小时前
基于K8S的微服务:一、服务发现,负载均衡测试(附calico网络问题解决)
微服务·kubernetes·服务发现
nangonghen19 小时前
在华为云通过operator部署Doris v2.1集群
kubernetes·华为云·doris·operator
会飞的土拨鼠呀20 小时前
chart文件结构
运维·云原生·kubernetes
自在的LEE1 天前
当 Go 遇上 Windows:15.625ms 的时间更新困局
后端·kubernetes·go