1. 程式人生 > 其它 >|NO.Z.00357|——————————|CloudNative|——|KuberNetes&運維.V73|-----------------------------------------------------------|IngressNginx.v09|速率限制|

|NO.Z.00357|——————————|CloudNative|——|KuberNetes&運維.V73|-----------------------------------------------------------|IngressNginx.v09|速率限制|



[CloudNative:KuberNetes&運維.V73]                                                                      [Applications.KuberNetes] [|DevOps|k8s|k8s運維|**3節點.V1**|IngressNginx速率限制|]








一、IngressNginx速率限制概述
### --- 限制單個IP

~~~     限制單個IP的連線數或者每秒的併發數
### --- 官網地址:

~~~     https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#whitelist-source-range
### --- 定義連線和傳輸速率的限制

nginx.ingress.kubernetes.io/limit-connections:      // 單個 IP 地址允許的併發連線數。超過此限制時將返回 503 錯誤。
nginx.ingress.kubernetes.io/limit-rps:              // 每秒從給定 IP 接受的請求數。突發限制設定為此限制乘以突發倍數,預設倍數為5。當客戶端超過此限制時,返回limit-req-status-code default: 503。
nginx.ingress.kubernetes.io/limit-rpm:              // 每分鐘從給定 IP 接受的請求數。突發限制設定為此限制乘以突發倍數,預設倍數為5。當客戶端超過此限制時,返回limit-req-status-code default: 503。
nginx.ingress.kubernetes.io/limit-burst-multiplier: // 突發大小限制速率的乘數。預設突發乘數為 5,此註釋覆蓋預設乘數。當客戶端超過此限制時,將 返回limit-req-status-code default: 503。
nginx.ingress.kubernetes.io/limit-rate-after:        // 初始千位元組數,之後對給定連線的響應的進一步傳輸將受到速率限制。此功能必須在啟用代理緩衝的情況下使用。
nginx.ingress.kubernetes.io/limit-rate:             // 每秒允許傳送到給定連線的千位元組數。零值禁用速率限制。此功能必須在啟用代理緩衝的情況下使用。
nginx.ingress.kubernetes.io/limit-whitelist:        // 要從速率限制中排除的客戶端 IP 源範圍。該值是逗號分隔的 CIDR 列表。
二、速率限制
### --- nginx.ingress.kubernetes.io/limit-connections:單個 IP 地址允許的併發連線數。
~~~     超過此限制時將返回 503 錯誤

[root@k8s-master01 ~]# vim prom-ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:                       # 此行下新增如下引數
  annotations:                                          
    nginx.ingress.kubernetes.io/limit-connections: "1"
  name: prom-ingresses          # 此行上新增如下引數
三、訪問請求:prom.test.com        :報錯503 四、nginx.ingress.kubernetes.io/limit-rps:每秒從給定 IP 接受的請求數。
### --- nginx.ingress.kubernetes.io/limit-rps:每秒從給定 IP 接受的請求數。
~~~     突發限制設定為此限制乘以突發倍數,預設倍數為5。
~~~     當客戶端超過此限制時,返回limit-req-status-code default: 503

[root@k8s-master01 ~]# vim prom-ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:                   # 此行下新增如下引數
  annotations:                                          
    nginx.ingress.kubernetes.io/limit-rps: "1"
  name: prom-ingresses      # 此行上新增如下引數
五、訪問請求:prom.test.com:報錯503:    
### --- 訪問請求:prom.test.com:報錯503:   

~~~     當每秒請求數設定為1時,連續重新整理報錯503
~~~     ——>當每秒請求數設定為5時,重新整理正常
六、白名單配置:nginx.ingress.kubernetes.io/limit-whitelist
### --- 白名單配置:nginx.ingress.kubernetes.io/limit-whitelist:

~~~     要從速率限制中排除的客戶端 IP 源範圍。
~~~     該值是逗號分隔的 CIDR 列表
~~~     ——>通過本地訪問http://prom.test.com/graph:報錯503
~~~     ——>通過白名單主機訪問
[root@k8s-master01 ~]# vim prom-ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:                       # 此行下新增如下引數
  annotations:                                          
    nginx.ingress.kubernetes.io/limit-connections: "1"
    nginx.ingress.kubernetes.io/limit-whitelist: 192.168.1.11
  creationTimestamp: null
  name: prom-ingresses          # 此行上新增如下引數

### --- 通過192.168.1.11訪問
~~~     注:顯示405,說明正常

[root@k8s-master01 ~]# curl http://prom.test.com/graph -I
HTTP/1.1 405 Method Not Allowed 
### --- 併發請求

[root@k8s-master01 ~]# for i in `seq 1 100`; do curl http://prom.test.com -I ;done
HTTP/1.1 405 Method Not Allowed
X-Content-Type-Options: nosniff

HTTP/1.1 405 Method Not Allowed
X-Content-Type-Options: nosniff

HTTP/1.1 405 Method Not Allowed
X-Content-Type-Options: nosniff








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)