更新时间:2024-12-06 GMT+08:00
分享

为Pod配置QoS

操作场景

部署在同一节点上的不同业务容器之间存在带宽抢占,容易造成业务抖动。您可以通过对Pod配置带宽限制来解决这个问题。

功能规格

Pod带宽限制功能规格如下:

功能规格

容器隧道网络模型

VPC网络模型

云原生网络2.0模型

支持的集群版本

所有集群版本均支持

v1.19.10以上集群版本

v1.19.10以上集群版本

Egress带宽限制

支持

支持

支持

Ingress带宽限制

支持

支持

支持

带宽限制不支持的场景

  • Pod访问100.125.0.0/16等云服务网段地址
  • Pod健康检查

带宽限制取值范围

仅支持单位M或G的限速配置,如100M,1G;最小取值1M,最大取值4.29G。

  • Pod带宽限制仅支持普通容器(容器运行时为runC),暂不支持安全容器(容器运行时为Kata)。
  • Pod带宽限制不支持HostNetwork类型Pod。

通过控制台设置

通过控制台创建工作负载时,您可在创建工作负载页面的“高级配置 > 网络配置”中设置Pod入/出口带宽限速。

图1 网络配置

通过kubectl命令行设置

您可以通过对工作负载添加annotations指定出口带宽和入口带宽,如下所示。
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或手动触发容器重启。

相关文档