k8s(一)namespace
目录介绍创建namespace创建namespace使用yaml创建查看namespace删除namespace资源配额限制pod创建数量限制配额cpu、内存限制配额容器资源限制默认cpu请求、使用限制默认内存请求、使用限制设置最小和最大内存限制设置最小和最大CPU限制介绍namespace用于资源隔离,不同环境下的资源可以放置到同一个集群下不同的namespace下,如dev、qc、uat、qa
目录
介绍
namespace用于资源隔离,不同环境下的资源可以放置到同一个集群下不同的namespace下,如dev、qc、uat、qa环境分别使用不同的namespace;还可以对namespace进行资源限制,如最多允许使用cpu、内存、创建多少个pod等。
创建namespace
创建namespace
# kubectl create namespace test1
# kubectl get namespace |grep test1
test1 Active 33m
使用yaml创建
# cat my-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: test1
查看namespace
# kubectl get ns
删除namespace
# kubectl delete namespaces test1
删除namespace,其下的所有资源将全部被删除,慎用!
资源配额限制
配额限制,指的是允许此namespace下创建的资源总量不得超过配额额度
pod创建数量限制配额
# cat quota-pod.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: pod-demo
spec:
hard:
pods: "2"
创建
# kubectl apply -f quota-pod.yaml -n test1
查看
# kubectl get resourcequota pod-demo -n test1
NAME AGE REQUEST LIMIT
pod-demo 12m pods: 0/2
yaml查看
# kubectl get resourcequota pod-demo -n test1 --output=yaml
cpu、内存限制配额
# cat quota-mem-cpu.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-demo
spec:
hard:
requests.cpu: "1"
requests.memory: 1Gi
limits.cpu: "2"
limits.memory: 2Gi
创建
# kubectl apply -f quota-mem-cpu.yaml -n test1
查看
# kubectl get resourcequotas -n test1 --output=yaml
# kubectl get resourcequotas -n test1
NAME AGE REQUEST LIMIT
mem-cpu-demo 100s requests.cpu: 500m/1, requests.memory: 512Mi/1Gi limits.cpu: 1/2, limits.memory: 512Mi/2Gi
- 每个容器必须设置内存请求(memory request),内存限额(memory limit),cpu请求(cpu request)和cpu限额(cpu limit)。
- 所有容器的内存请求总额不得超过1 GiB。
- 所有容器的内存限额总额不得超过2 GiB。
- 所有容器的CPU请求总额不得超过1 CPU。
- 所有容器的CPU限额总额不得超过2 CPU。
容器资源限制
默认cpu请求、使用限制
如果创建pod时未指定容器的cpu请求和限制,将使用默认cpu请求限制
# cat cpu-defaults.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-limit-range
spec:
limits:
- default:
cpu: 1
defaultRequest:
cpu: 0.5
type: Container
创建
# kubectl apply -f cpu-defaults.yaml -n test1
查看
# kubectl get limitrange -n test1 --output=yaml
默认内存请求、使用限制
如果创建pod时未指定容器的内存请求和限制,将使用默认内存请求限制
# cat memory-defaults.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
spec:
limits:
- default:
memory: 512Mi
defaultRequest:
memory: 256Mi
type: Container
创建
# kubectl apply -f memory-defaults.yaml -n test1
查看
# kubectl get limitrange -n test1 --output=yaml
设置最小和最大内存限制
与默认限制不同的是,这个设置将直接限制你能否创建成功pod,如大于限制或小于请求都将失败
# cat memory-constraints.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: mem-min-max-demo-lr
spec:
limits:
- max:
memory: 1Gi
min:
memory: 500Mi
type: Container
创建
# kubectl apply -f memory-constraints.yaml -n test1
查看
# kubectl get limitranges -n test1 --output=yaml
这里有一点:
如果此配置中没有设置默认请求和限制,则会自动加入,1G
name: mem-min-max-demo-lr
namespace: test1
spec:
limits:
- default:
memory: 1Gi
defaultRequest:
memory: 1Gi
max:
memory: 1Gi
min:
memory: 500Mi
type: Container
注意:
首先安装本文顺序执行,当执行到此步骤时会出现一个问题,当前给了一个默认值是1G,上面还创建了一个默认值256M和512M的请求和限制策略,那么我现在创建一个pod不指定内存请求和限制,会发生什么情况?
答案是不成功,你可能会觉得是因为上面的默认值和当前默认值不一致,请求256M达不到1G,其实是不满足min配置的500M;
# kubectl apply -f test-nginx.yaml -n test1
Error from server (Forbidden): error when creating "test-nginx.yaml": pods "constraints-mem-demo-4" is forbidden: minimum memory usage per Container is 500Mi, but request is 256Mi
如果上面配置了默认值,下面的默认值将不起作用,当然,下面的默认值的产生本身就不是我们的意愿。
设置最小和最大CPU限制
# cat cpu-constraints.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-min-max-demo-lr
spec:
limits:
- max:
cpu: "800m"
min:
cpu: "200m"
type: Container
创建
# kubectl apply -f cpu-constraints.yaml -n test1
查看
# kubectl get limitranges -n test1 --output=yaml
与内存一样也会自动创建默认值800m
更多推荐
所有评论(0)