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/

相关推荐
Nontee8 小时前
K3s vs K8s:差的不是功能,是交付方式
云原生·容器·kubernetes
朱包林8 小时前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算
小陈运维12 小时前
使用kubeadm初始化IPV4/IPV6集群
linux·docker·云原生·容器·kubernetes
笑洋仟13 小时前
k8s的Ingress配置问题
云原生·容器·kubernetes
垚垚学技术_聚焦云原生13 小时前
K8s OpenEBS LVM 动态存储 PVC Pending 排查记
云原生·容器·kubernetes
sbjdhjd1 天前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
谢亮_vipxieliang2 天前
Kubernetes 的“操作系统化”:从容器编排到 AI 基础设施控制平面
人工智能·平面·kubernetes
sbjdhjd2 天前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
热爱Liunx的丘丘人2 天前
1、什么是K8s
云原生·容器·kubernetes
小匠石钧知2 天前
07_在k8s集群中安装ingress-nginx
nginx·容器·kubernetes·ingress