Kubernetes ResourceQuota实战:按Namespace限制对象数量

来自AI助手的总结
通过ResourceQuota为Namespace限制Pod和RS数量,避免异常创建影响集群。
Kubernetes ResourceQuota实战:按Namespace限制对象数量

一、基于命名空间的资源限制

通常情况下,出于稳定性和安全性考虑,应该对每个 Namespace 不受控制的资源进行限制,比如 Pod 和 ReplicaSet,防止异常创建导致集群故障。

1.1 环境准备

创建测试应用


[root@k8s-master01 ]# kubectl create deploy test-01 --image=registry.cn-hangzhou.aliyuncs.com/zq-demo/nginx:1.14.2 

验证,观察到已创建成功


[root@k8s-master01 ~]# kgp 

NAME                       READY   STATUS    RESTARTS   AGE

test-01-584fc4ff48-75wnv   1/1     Running   0          31s

1.2 演示不配命名空间限制的危害

1、在 Pod 内设置内核参数

[root@k8s-master01 ]# kubectl edit deploy test-01 
...
...
# 在第46行内容添加如下内容
 46       securityContext: 
 47         sysctls:
 48         - name: net.core.somaxconn
 49           value: "1024"
...
...

2、设置完成后,一直会创建pod,如果不加阻止,会让集群出现卡死现象


[root@k8s-master01 ~]# kgp | grep test-01 | wc -l 

215

3、复原环境

[root@k8s-master01 ]# kubectl edit deploy test-01 
...
...
# 删除如下内容
 46       securityContext: 
 47         sysctls:
 48         - name: net.core.somaxconn
 49           value: "1024"
...
...

删除多余生成的pod


[root@k8s-master01 ~]# k delete po -l app=test-01

[root@k8s-master01 ~]# kgp

NAME                       READY   STATUS    RESTARTS   AGE

test-01-584fc4ff48-b54p7   1/1     Running   0          41s

1.3 演示配命名空间限制

1、给default命名空间添加命名空间限制

[root@k8s-master01 ~]# vim default-resourcequota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: default-quota
spec:
  hard:
    count/pods: "100"
    count/replicasets.apps: 200

相关参数说明:

  • count/pods: 限制当前命名空间内的pod总数

  • count/replicasets.apps:限制当前命名空间内 rs的总数

2、应用


[root@k8s-master01 ~]# kaf default-resourcequota.yaml

查看resourcequota


[root@k8s-master01 ~]# kg resourcequota

NAME            AGE     REQUEST                                            LIMIT

default-quota   3m15s   count/pods: 1/100, count/replicasets.apps: 2/200   

3、在 Pod 内设置内核参数

[root@k8s-master01 ]# kubectl edit deploy test-01 
...
...
# 在第46行内容添加如下内容
 46       securityContext: 
 47         sysctls:
 48         - name: net.core.somaxconn
 49           value: "1024"
...
...

4、设置完成后,一直会创建pod,观察到最多只能创建100


[root@k8s-master01 ~]# kg resourcequota

NAME            AGE    REQUEST                                              LIMIT

default-quota   5m3s   count/pods: 100/100, count/replicasets.apps: 2/200   

5、复原环境


[root@k8s-master01 ]# kubectl delete deploy test-01 

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容