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/

相关推荐
昌sit!5 小时前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes
A ?Charis8 小时前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
北漂IT民工_程序员_ZG9 小时前
k8s集群安装(minikube)
云原生·容器·kubernetes
2301_8061313615 小时前
Kubernetes的基本构建块和最小可调度单元pod-0
云原生·容器·kubernetes
SilentCodeY16 小时前
containerd配置私有仓库registry
容器·kubernetes·containerd·镜像·crictl
binqian1 天前
【k8s】ClusterIP能http访问,但是不能ping 的原因
http·容器·kubernetes
探索云原生1 天前
GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU
ai·云原生·kubernetes·go·gpu
是垚不是土1 天前
Istio流量镜像测试
运维·kubernetes·云计算·istio
蚊子不吸吸1 天前
DevOps开发运维简述
linux·运维·ci/cd·oracle·kubernetes·gitlab·devops
林小果11 天前
K8S搭建
云原生·容器·kubernetes