为Pod配置QoS
操作场景
部署在同一节点上的不同业务容器之间存在带宽抢占,容易造成业务抖动。您可以通过对Pod配置带宽限制来解决这个问题。
功能规格
功能规格 |
容器隧道网络模型 |
VPC网络模型 |
云原生网络2.0模型 |
---|---|---|---|
支持的集群版本 |
所有集群版本均支持 |
v1.19.10以上集群版本 |
v1.19.10以上集群版本 |
Egress带宽限制 |
支持 |
支持 |
支持 |
Ingress带宽限制 |
支持 |
支持 |
支持 |
带宽限制不支持的场景 |
无 |
无 |
|
带宽限制取值范围 |
仅支持单位M或G的限速配置,如100M,1G;最小取值1M,最大取值4.29G。 |
- Pod带宽限制仅支持普通容器(容器运行时为runC),暂不支持安全容器(容器运行时为Kata)。
- Pod带宽限制不支持HostNetwork类型Pod。
通过控制台设置
通过控制台创建工作负载时,您可在创建工作负载页面的“高级配置 > 网络配置”中设置Pod入/出口带宽限速。
通过kubectl命令行设置
apiVersion: apps/v1 kind: Deployment metadata: name: test namespace: default labels: app: test spec: replicas: 2 selector: matchLabels: app: test template: metadata: labels: app: test annotations: kubernetes.io/ingress-bandwidth: 100M kubernetes.io/egress-bandwidth: 100M spec: containers: - name: container-1 image: nginx:alpine imagePullPolicy: IfNotPresent imagePullSecrets: - name: default-secret
- kubernetes.io/ingress-bandwidth:Pod的入口带宽
- kubernetes.io/egress-bandwidth:Pod的出口带宽
如果不设置这两个参数,则表示不限制带宽。
修改Pod出/入口带宽限速后,需要重启容器才可生效。由于独立创建的Pod(不通过工作负载管理)修改annotations后不会触发容器重启,因此带宽限制不会生效,您可以重新创建Pod或手动触发容器重启。