Namespace的理论和实操
- Namespace理论说明
- Namespace实操
- 创建、查看命名空间
- 使用ResouceQuota 对Namespace做资源限额
- 更多ResouceQuota 的使用
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-quotanamespace: test # 指定限制的命名空间名称
spec:hard:pods: "4" requests.cpu: "2" # 所有容器的CPU请求总额不得超过2 CPUrequests.memory: 2Gi # 所有容器的内存请求总额不得超过2GiBlimits.cpu: "4" # 所有容器的CPU限额总额不得超过4CPUlimits.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-testnamespace: testlabels:app: tomcat-pod-test
spec:containers:- name: tomcat-testimage: tomcat-8.5-jre8:v1imagePullPolicy: IfNotPresentports:- containerPort: 8080resources: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/