精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

KEDA:基于事件驅動擴展K8S應用的深度實踐

云計算 云原生
KEDA 提供了一個類似于 FaaS 的事件感知擴展模型,在這種模型中,Kubernetes 部署可以基于需求和基于智能動態地從零擴展,而不會丟失數據和上下文。

為什么我們要自動擴展應用程序?

作為 SRE,需要保證應用彈性和高可用性。因此,自動縮放是我們需要的必須功能。通過自動縮放,我們能確保工作負載能夠高效的地處理業務流量。

在本文中,我們將詳細描述如何使用 KEDA 以事件驅動的方式自動擴展 Kubernetes 應用程序。

什么是KEDA?

KEDA 是一個輕量級的開源 Kubernetes 事件驅動的自動縮放器,DevOps、SRE 和 Ops 團隊使用它來根據外部事件或觸發器水平擴展 Pod。KEDA 有助于擴展本機 Kubernetes 自動縮放解決方案的功能,這些解決方案依賴于標準資源指標,如 CPU 或內存。我們可以將 KEDA 部署到 Kubernetes 集群中,并使用自定義資源定義 (CRD) 管理 Pod 的擴展。

KEDA 基于 Kubernetes HPA 構建,根據來自 AWS SQS、Kafka、RabbitMQ 等事件源的信息擴展 Pod。這些事件源使用縮放程序進行監視,縮放程序根據為其設置的規則激活或停用部署。KEDA 縮放器還可以為特定事件源提供自定義指標,幫助 DevOps 團隊觀察與其相關的指標

我們唯一要做的就是通過選擇要用于自動擴展應用程序的縮放器以及一些參數來配置 ScaledObject (KEDA CRD),KEDA 將完成剩下的工作:

  • 監視事件源
  • 創建和管理 HPA 生命周期

截至目前,有 62 個內置縮放器和 4 個外部縮放器可用。 KEDA 之所以好,是因為使用輕量級組件以及原生 Kubernetes 組件,例如 HorizontalPodAutoscaler ,更重要的是“即插即用”。

部署KEDA

那么,部署 KEDA 的最簡單方法是使用官方 Helm,安裝如下所示:

helm repo add kedacore 
helm repo update
helm install keda kedacore/keda --namespace keda --create-namespace

?? 如果使用 ArgoCD 部署 KEDA,您可能會遇到有關 CRD 注釋長度的問題。我們可以使用選項 ServerSideApply=true 來解決 template.sped.syncPolicy.syncOptions 。此外,還可以在 helm中設置參數,從而 禁用 CRD 部署,當然,這種情況下也必須找到另一種方法來部署 KEDA CRD。

基于本機Cron Scaler自動縮放Web應用

下面讓我們深度實踐一下KEDA!

部署我們的Web應用

對于demo,將使用一個建的 Golang Web 應用程序。使用以下清單部署:


---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: go-helloworld
  name: go-helloworld
spec:
  selector:
    matchLabels:
      app: go-helloworld
  template:
    metadata:
      labels:
        app: go-helloworld
    spec:
      containers:
        - image: rg.fr-par.scw.cloud/novigrad/go-helloworld:0.1.0
          name: go-helloworld
          resources:
            requests:
              cpu: "50m"
              memory: "64Mi"
            limits:
              memory: "128Mi"
              cpu: "100m"
---
apiVersion: v1
kind: Service
metadata:
  name: go-helloworld
spec:
  selector:
    app: go-helloworld
  ports:
    - protocol: TCP
      port: 8080
      name: http
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt
  name: go-helloworld
spec:
  rules:
  - host: helloworld.jourdain.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: go-helloworld
            port:
              number: 8080
  tls: # < placing a host in the TLS config will indicate a certificate should be created
  - hosts:
    - helloworld.jourdain.io
    secretName: go-helloworld-tls-cert

將KEDA配置為僅在工作時間自動擴展Web應用

如果,我們希望我們的應用程序僅在工作時間可用。至于為何有如此要求,下面是一些場景。例如,在開發環境中,不一定需要保持應用程序24小時啟動和運行。在云環境中,它可以為您節省大量成本,具體取決于用戶實際環境的應用程序/計算實例的數量。 為了實現這一點,我們將使用KEDA的原生Cron scaler。由于 Cron scaler 支持 Linux 格式的 cron,它甚至允許我們在工作日擴展我們的應用程序 要配置 Cron scaler,我們將按如下方式使用 [ScaledObject] CRD:


apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: go-helloworld
spec:
  scaleTargetRef:
    name: go-helloworld
  triggers:
  - type: cron
    metadata:
      timezone: Europe/Paris
      start: 00 08 * * 1-5
      end: 00 18 * * 1-5
      desiredReplicas: "2"

?? ScaledObject 必須與應用程序位于同一命名空間中!讓我們深入了解一下這個配置:

  • spec.scaleTargetRef 是 Kubernetes Deployment/StatefulSet 或其他自定義資源的引用

name (必填): Kubernetes 資源的名稱

kind (可選):Kubernetes 資源的種類,默認值為 Deployment

  • spec.triggers 是用于激活目標資源縮放的觸發器列表
  • type (必填):縮放器名稱
  • metadata (必需):Cron 縮放器所需的配置參數,使用此配置,我的應用程序將在周一到周五的一周中每天的 08:00 到 18:00 之間啟動并運行兩個副本。

基于HTTP事件自動縮放Web應用

(使用 KEDA HTTP 外部縮放器)

借助所有 KEDA 的縮放器,我們可以通過多種方式自動擴展 Web 應用程序,例如,基于 AMQP 隊列中的消息進行縮放應用。

目前,我們了解了 KEDA 的工作原理。我下面們將探討 KEDA 如何通過基于 HTTP 事件自動擴展應用程序來幫助我們處理流量高峰。為此,我們有兩個選擇:

  • 使用Prometheus scaler
  • 使用 KEDA HTTP 外部縮放器,它的工作方式類似于附加組件,由于演示集群上沒有安裝 Prometheus,因此我們將使用 KEDA HTTP 外部縮放器。

?? KEDA HTTP插件目前處于測試階段。它主要由KEDA團隊維護。

解決方案概述

KEDA HTTP scaler是構建在 KEDA 核心之上的附加組件,它擁有自己的組件:operator, scaler和 interceptor。如果你想進一步了解它們的作用,請閱讀官方文檔??傊?,為了幫助大家更好地理解它的工作原理,下面提供一個小案例:

圖片圖片

安裝KEDA HTTP附加組件

由于這個縮放器不是內置的,我們必須手工安裝。根據官方文檔的說明,我們可以使用 Helm 來進行安裝:

helm install http-add-on kedacore/keda-add-ons-http --namespace keda

如果安裝順利,我們應該會看到以下pod:

? k get pods -l app=keda-add-ons-http -o name
pod/keda-add-ons-http-controller-manager-5c8d895cff-7jsl8
pod/keda-add-ons-http-external-scaler-57889786cf-r45lj
pod/keda-add-ons-http-interceptor-5bf6756df9-wwff8
pod/keda-add-ons-http-interceptor-5bf6756df9-x8l58
pod/keda-add-ons-http-interceptor-5bf6756df9-zxvw

為我們的Web應用配置'HTTPScaledObject'

正如之前所說,KEDA HTTP 附加組件自帶組件,包括操作符,這也意味著它自帶 CRD。HTTPScaledObject 是由 KEDA HTTP 附加組件管理的 CRD。這就是我們在這里需要配置的。讓我們為 Web 應用程序創建 HTTPScaledObject 資源: ?? HTTPScaleObject 必須在與 Web 應用相同的命名空間中創建資源!

kind: HTTPScaledObject
apiVersion: http.keda.sh/v1alpha1
metadata:
    name: go-helloworld
spec:
    host: "helloworld.jourdain.io"
    targetPendingRequests: 10
    scaledownPeriod: 300
    scaleTargetRef:
        deployment: go-helloworld
        service: go-helloworld
        port: 8080
    replicas:
        min: 0
        max: 10

在這里,我們已經配置了我們的 HTTPScaledObject 應用程序,以便將我們的應用程序 Deployment 從 0 個副本擴展到 10 個副本。因為,如果攔截器上有 10 個請求處于掛起狀態(應用程序尚未接收的請求),則 KEDA 將添加一個 pod。

調整我們的Web應用程序的service和ingress

仔細觀察一下上面的圖,可以看到我們的 Web 應用程序 ingress 需要引用 KEDA HTTP 附加組件的攔截器服務,而不是 Web 應用程序的攔截器服務。由于 ingress 無法引用另一個命名空間中的服務,因此我們將在與 Web 應用相同的命名空間 external 中創建類型服務,該服務引用來自 keda 命名空間的攔截器服務:

kind: Service
apiVersion: v1
metadata:
  name: keda-add-ons-http-interceptor-proxy
spec:
  type: ExternalName
  externalName: keda-add-ons-http-interceptor-proxy.keda.svc.cluster.local

現在,我們需要重新配置 Web 應用的入口,使其引用新創建的服務:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt
  name: go-helloworld
spec:
  rules:
  - host: helloworld.jourdain.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: keda-add-ons-http-interceptor-proxy
            port:
              number: 8080
  tls: # < placing a host in the TLS config will indicate a certificate should be created
  - hosts:
    - helloworld.jourdain.io
    secretName: go-helloworld-tls-cert

?? 需要輸入新服務的名稱,但請注意端口,該端口也被攔截器的服務所取代

讓我們測試一下

為了保證我們的配置正常,本處將使用 [k6]工具 ,這是一個負載測試工具。如果想了解有關k6的更多信息,以下是Padok博客中的一些介紹:

  • [How to do distributed load testing using K6 & Kubernetes?] (https://www.padok.fr/en/blog/k6-load-testing)
  • [k6 description from the Padok tech radar] (https://www.padok.fr/en/tech-radar-resilient?category=resilient&rank=6)

下面本次使用的 k6 腳本,后續將使用它進行測試:


import { check } from 'k6';
import http from 'k6/http';

export const options = {
  scenarios: {
    constant_request_rate: {
      executor: 'constant-arrival-rate',
      rate: 100,
      timeUnit: '1s', // 100 iterations per second, i.e. 100 RPS
      duration: '30s',
      preAllocatedVUs: 50, // how large the initial pool of VUs would be
      maxVUs: 50, // if the preAllocatedVUs are not enough, we can initialize more
    },
  },
};

export function test(params) {
  const res = http.get('');
  check(res, {
    'is status 200': (r) => r.status === 200,
  });
}

export default function () {
  test();
}

首先,讓我們看看 100 個 RPS 會發生什么:


? k6 run k6/script.js

          /\\      | ̄ ̄| / ̄ ̄/   / ̄ ̄/
     /\\  /  \\     |  |/  /   /  /
    /  \\/    \\    |     (   /    ̄ ̄\\
   /          \\   |  |\\  \\ |  ( ̄)  |
  / __________ \\  |__| \\__\\ \\_____/ .io

  execution: local
     script: k6/script.js
     output: -

  scenarios: (100.00%) 1 scenario, 50 max VUs, 1m0s max duration (incl. graceful stop):
           * constant_request_rate: 100.00 iterations/s for 30s (maxVUs: 50, gracefulStop: 30s)


     ? is status 200

     checks.........................: 100.00% ? 3001      ? 0
     data_received..................: 845 kB  28 kB/s
     data_sent......................: 134 kB  4.5 kB/s
     http_req_blocked...............: avg=792.54μs min=0s     med=1μs     max=137.85ms p(90)=2μs     p(95)=2μs
     http_req_connecting............: avg=136.6μs  min=0s     med=0s      max=17.67ms  p(90)=0s      p(95)=0s
     http_req_duration..............: avg=11.38ms  min=7.68ms med=10.68ms max=100.96ms p(90)=12.78ms p(95)=14.33ms
       { expected_response:true }...: avg=11.38ms  min=7.68ms med=10.68ms max=100.96ms p(90)=12.78ms p(95)=14.33ms
     http_req_failed................: 0.00%   ? 0         ? 3001
     http_req_receiving.............: avg=89.68μs  min=8μs    med=64μs    max=6.35ms   p(90)=112μs   p(95)=134μs
     http_req_sending...............: avg=152.31μs min=14μs   med=137μs   max=2.57ms   p(90)=274μs   p(95)=313μs
     http_req_tls_handshaking.......: avg=587.62μs min=0s     med=0s      max=74.46ms  p(90)=0s      p(95)=0s
     http_req_waiting...............: avg=11.14ms  min=7.62ms med=10.48ms max=100.92ms p(90)=12.47ms p(95)=13.96ms
     http_reqs......................: 3001    99.983105/s
     iteration_duration.............: avg=12.37ms  min=7.73ms med=10.88ms max=194.89ms p(90)=13.07ms p(95)=14.99ms
     iterations.....................: 3001    99.983105/s
     vus............................: 1       min=1       max=1
     vus_max........................: 50      min=50      max=50


running (0m30.0s), 00/50 VUs, 3001 complete and 0 interrupted iterations
constant_request_rate ? [======================================] 00/50 VUs  30s  100.00 iters/s

?? 如果您想實時查看攔截器隊列中有多少請求,可以在兩個終端窗格中啟動以下命令:

? kubectl proxy
Starting to serve on 127.0.0.1:8001

以及:

? watch -n '1' curl --silent localhost:8001/api/v1/namespaces/keda/services/keda-add-ons-http-interceptor-admin:9090/proxy/queue
{"default/go-helloworld":0}

在 100 RPS 測試中,應用程序沒有縱向擴展,因為攔截器隊列中的掛起請求數不超過 1。提醒一下,我們配置為 targetPendingRequests 10 。所以一切都很正常 ??下面讓我們將 RPS x10 ,看看會發生什么:

? k6 run k6/script.js
          /\\      | ̄ ̄| / ̄ ̄/   / ̄ ̄/     /\\  /  \\     |  |/  /   /  /    /  \\/    \\    |     (   /    ̄ ̄\\   /          \\   |  |\\  \\ |  ( ̄)  |  / __________ \\  |__| \\__\\ \\_____/ .io
  execution: local     script: k6/script.js     output: -
  scenarios: (100.00%) 1 scenario, 50 max VUs, 1m0s max duration (incl. graceful stop):           * constant_request_rate: 1000.00 iterations/s for 30s (maxVUs: 50, gracefulStop: 30s)
     ? is status 200      ?  99% — ? 11642 / ? 2
     checks.........................: 99.98% ? 11642      ? 2     data_received..................: 2.6 MB 86 kB/s     data_sent......................: 446 kB 15 kB/s     dropped_iterations.............: 18356  611.028519/s     http_req_blocked...............: avg=1.07ms   min=0s     med=0s      max=408.06ms p(90)=1μs      p(95)=1μs     http_req_connecting............: avg=43.12μs  min=0s     med=0s      max=11.05ms  p(90)=0s       p(95)=0s     http_req_duration..............: avg=120.09ms min=8.14ms med=74.77ms max=6.87s    p(90)=189.49ms p(95)=250.21ms       { expected_response:true }...: avg=120.01ms min=8.14ms med=74.76ms max=6.87s    p(90)=189.41ms p(95)=249.97ms     http_req_failed................: 0.01%  ? 2          ? 11642     http_req_receiving.............: avg=377.61μs min=5μs    med=32μs    max=27.32ms  p(90)=758.1μs  p(95)=2.49ms     http_req_sending...............: avg=61.57μs  min=9μs    med=45μs    max=9.99ms   p(90)=102μs    p(95)=141μs     http_req_tls_handshaking.......: avg=626.79μs min=0s     med=0s      max=297.82ms p(90)=0s       p(95)=0s     http_req_waiting...............: avg=119.65ms min=7.95ms med=74.32ms max=6.87s    p(90)=188.95ms p(95)=249.76ms     http_reqs......................: 11644  387.60166/s     iteration_duration.............: avg=121.26ms min=8.32ms med=74.87ms max=7.07s    p(90)=189.62ms p(95)=250.28ms     iterations.....................: 11644  387.60166/s     vus............................: 44     min=25       max=50     vus_max........................: 50     min=50       max=50

running (0m30.0s), 00/50 VUs, 11644 complete and 0 interrupted iterationsconstant_request_rate ? [======================================] 00/50 VUs  30s  1000.00 iters/s

結果還不錯,我們有兩個請求 KO ,這是因為應用程序冷啟動(從 0 開始),每個請求等待的時間不超過 1/2 秒。以下是部署歷史記錄:

? k get deployments.apps -w
NAME            READY   UP-TO-DATE   AVAILABLE   AGE
go-helloworld   0/0     0            0           36m
go-helloworld   0/1     0            0           36m
go-helloworld   1/1     1            1           36m
go-helloworld   1/4     1            1           36m
go-helloworld   2/4     4            2           36m
go-helloworld   3/4     4            3           36m
go-helloworld   4/4     4            4           36m
go-helloworld   4/5     4            4           37m
go-helloworld   5/5     5            5           37m

應用程序從 0 個副本擴展到 5 個副本;直到 Web 應用程序的掛起請求數少于 10。

縮放指令非???,應用程序很快達到了 5 個副本。

以下是 100 RPS 和 1k RPS 測試之間 http_req_duration k6 指標的一些對比:

# 100 RPS
http_req_duration: avg=11.38ms  min=7.68ms med=10.68ms max=100.96ms p(90)=12.78ms p(95)=14.33ms

# 1k RPS
http_req_duration: avg=120.09ms min=8.14ms med=74.77ms max=6.87s    p(90)=189.49ms p(95)=250.21ms

根據我們的需求(SLO,SLA等),我們也許可以稍微調整一下 Web應用程序的 targetPendingRequestsHTTPScaledObject 參數 。

縮放到零!

通過本文介紹的兩個案例,我們已經驗證過了如何縮放到零的場景。但是,大家真的知道它是如何工作的嗎?

由于 KEDA 根據事件自動縮放應用程序,因此從收到事件的那一刻起,KEDA 會將應用程序縮放到其最小副本。例如,如果我們以 HTTP 附加組件為例,KEDA 將在第一次收到請求時擴展到最小副本。

總結

KEDA 提供了一個類似于 FaaS 的事件感知擴展模型,在這種模型中,Kubernetes 部署可以基于需求和基于智能動態地從零擴展,而不會丟失數據和上下文。在業務請求量上來后,應用程序將進行自動化的擴容,當業務低谷的時候,則會自動的縮容。這可以在緩解很多生產環境下的手動擴/縮容操作,以保障用戶的服務體驗。

KEDA 還為 Kubernetes 帶來了更多的事件源。隨著未來更多觸發器的加入,KEDA 有很大的潛力成為生產級 Kubernetes 部署的必需品,從而使應用程序自動縮放成為應用程序開發中的嵌入式組件。

責任編輯:武曉燕 來源: 新鈦云服
相關推薦

2022-09-15 08:04:54

k8skubernetes

2023-12-25 07:35:40

數據集成FlinkK8s

2023-08-31 08:21:42

KubernetesKADA驅動

2023-08-04 08:19:02

2023-09-06 08:12:04

k8s云原生

2012-06-27 14:40:57

事件驅動擴展

2017-11-21 10:11:19

陌陌K8sDocker

2021-11-04 07:49:58

K8SStatefulSetMySQL

2022-04-05 09:24:57

K8s安全網絡安全時間響應

2022-04-22 13:32:01

K8s容器引擎架構

2023-11-06 07:16:22

WasmK8s模塊

2022-04-02 09:57:51

技術京東實踐

2024-02-01 09:48:17

2023-09-07 08:58:36

K8s多集群

2024-01-04 08:31:22

k8sController自定義控制器

2020-02-04 16:37:17

k8s 相關應用

2022-04-07 10:17:18

云原生服務器優化

2022-09-14 10:49:30

微服務Kubernetes區塊鏈

2022-09-13 09:04:20

云計算移動辦公大數據
點贊
收藏

51CTO技術棧公眾號

中文字幕观看av| 黄色影院一级片| 精品国产乱码久久久久久蜜臀网站| 午夜久久黄色| 亚洲美女性视频| 日本久久久久久久久久久久| www免费视频观看在线| 成人一区二区三区| 国产精品久久久久99| 久久久精品视频在线| 精品国产中文字幕第一页| 欧美一区午夜视频在线观看| 国产美女三级视频| 日本在线观看大片免费视频| 欧美国产1区2区| 国产精品初高中精品久久| 一区二区乱子伦在线播放| 国内精品久久久久国产盗摄免费观看完整版| 日韩久久午夜影院| 亚洲精品一区二区18漫画| 日产精品一区| 午夜精品福利在线| av磁力番号网| av资源种子在线观看| 成人av免费观看| 91情侣偷在线精品国产| 波多野结衣爱爱| av成人毛片| 欧美激情亚洲另类| 国产探花在线视频| 日韩精品一卡| 一区二区av在线| 丰满少妇一区二区三区| swag国产精品一区二区| 91精品国产手机| 最新国产黄色网址| 成人h在线观看| 欧美日韩免费网站| 日韩免费视频播放| 999精品网| 亚洲成av人综合在线观看| 日本三级中文字幕在线观看| 欧美精品日韩少妇| 国产精品久久影院| 亚洲一区二区三区免费观看| 欧美3p视频在线观看| 91在线视频网址| 国产区日韩欧美| 日本激情视频网站| 99国产精品国产精品久久| 国产精品二区二区三区| 国 产 黄 色 大 片| 国产河南妇女毛片精品久久久 | 国产一区二区美女| 成人黄色免费看| 国产伦理吴梦梦伦理| 精品一区二区久久久| 91精品国产自产在线老师啪| 国产又粗又黄又爽的视频| 久久精品国产精品青草| 国产在线观看不卡| 国产美女三级无套内谢| 国产成人综合网| 国产精品三区在线| 三级在线观看| 国产亚洲欧美激情| 伊人狠狠色丁香综合尤物| 黄av在线播放| 亚洲曰韩产成在线| 3d动漫一区二区三区| 亚洲永久av| 欧美在线观看一区二区| 伊人成人222| 中文无码日韩欧| 亚洲激情视频网站| 级毛片内射视频| 99久久亚洲精品| 欧美激情一级欧美精品| 美女又爽又黄免费视频| 美国av一区二区| 9a蜜桃久久久久久免费| 五月婷婷六月丁香| 欧美国产精品一区二区| 天天想你在线观看完整版电影免费| 日本动漫同人动漫在线观看| 欧美日韩亚洲网| 超碰人人草人人| 国产欧美三级电影| 深夜精品寂寞黄网站在线观看| 午夜写真片福利电影网| 午夜亚洲性色福利视频| 国产一区二区在线免费视频| 亚洲精品中文字幕成人片 | 欧美mv和日韩mv国产网站| 日韩片在线观看| 日韩欧美三级| 97精品视频在线观看| 中文天堂在线资源| 成人免费视频国产在线观看| 亚洲欧洲中文| 欧美78videosex性欧美| 欧美日韩一区不卡| 在线免费观看污视频| 国产精品黑丝在线播放| 2021久久精品国产99国产精品| 亚洲天堂777| 2024国产精品| www成人免费| 亚洲综合伊人| 亚洲人线精品午夜| 中文字幕第28页| 精品亚洲成av人在线观看| 久久久久天天天天| 男女视频在线| 在线综合+亚洲+欧美中文字幕| 黄色性生活一级片| 欧美精品网站| 国产欧美一区二区三区四区 | ccyy激情综合| 久久这里有精品| 成人黄色免费网| 久久亚洲影视婷婷| 精品少妇在线视频| 国产一区二区三区免费观看在线| 亚洲最新在线视频| 欧美一级片免费在线观看| 国产精品亚洲午夜一区二区三区| 日韩激情视频| 向日葵视频成人app网址| 日韩av一区在线观看| 青青草在线观看视频| 国产在线精品不卡| 中文字幕中文字幕一区三区| 成人黄色毛片| 中文字幕综合一区| 久久午夜鲁丝片| 久久精品人人做人人综合| 男人操女人免费软件| 极品国产人妖chinesets亚洲人妖| 欧美成人激情在线| 99久久精品国产色欲| 1000部国产精品成人观看| 成人日韩在线视频| 欧美国产一区二区三区激情无套| 国产精品免费久久久久久| 国产福利在线看| 欧美日韩久久久一区| 国产又粗又猛又爽又黄的视频四季| 丝袜诱惑亚洲看片 | 欧美国内亚洲| av一区二区三区四区电影| 性爱视频在线播放| 欧美成人一级视频| 欧美成人aaaaⅴ片在线看| 成人免费视频播放| 欧美日韩在线视频一区二区三区| 亚洲免费专区| 国产精品美女久久久久av超清| 97在线观看免费观看高清 | 一二三区视频在线观看| 激情视频一区二区三区| 国产在线一区二区三区四区| 最近在线中文字幕| 一本色道久久综合狠狠躁篇的优点 | 亚洲麻豆精品| 欧美一区二区在线播放| 国产一级片免费观看| 99久久婷婷国产综合精品| 超碰影院在线观看| 天天影视欧美综合在线观看| 亚洲综合在线小说| 国模私拍一区二区国模曼安| 亚洲女成人图区| 亚洲在线观看av| 亚洲国产美女搞黄色| 女同毛片一区二区三区| 日韩国产高清影视| 国内自拍中文字幕| 日韩美女毛片| 成人黄色大片在线免费观看| h片在线观看| 国产一区二区三区在线免费观看| 97视频免费在线| 婷婷中文字幕一区三区| 一级二级黄色片| 成人手机在线视频| 看欧美ab黄色大片视频免费| 欧美精品日韩| 色999五月色| 岛国成人av| 国产精品一区专区欧美日韩| ririsao久久精品一区| 一区二区三区在线播放欧美| 国产综合视频在线| 精品婷婷伊人一区三区三| 久久中文字幕无码| 国产精品免费久久| 日本一区二区在线免费观看| 久久丁香综合五月国产三级网站| 免费不卡av在线| 亚洲精品二区三区| 欧美日韩亚洲综合一区二区三区激情在线| 亚洲电影二区| 国产成人97精品免费看片| 五月婷婷视频在线观看| 一区二区中文字幕| 日本在线丨区| 欧美va亚洲va| 国产精品久久久久精| 狠狠色香婷婷久久亚洲精品| 欧美日韩在线视频免费播放| 国产精品美女久久久久久久网站| 日本黄色录像片| 国产成人激情av| 一区二区久久精品| 青青草国产成人99久久| 免费成人午夜视频| 国产综合精品| 欧美精品久久96人妻无码| 成人羞羞视频播放网站| 美日韩精品免费| 九九热播视频在线精品6| 99国产盗摄| 国产美女视频一区二区| 国产精品丝袜一区二区三区| 羞羞影院欧美| 欧美中文字幕在线播放| 三妻四妾的电影电视剧在线观看| 欧美高清在线观看| 怡红院av在线| 欧美区二区三区| 91蜜桃在线视频| 欧美精品一区三区| 182tv在线播放| 欧美成人性生活| 调教一区二区| 欧美日韩高清区| 牛牛电影国产一区二区| 久久久久久久爱| yellow字幕网在线| 午夜精品久久久99热福利| 超碰中文在线| 97久久伊人激情网| 在线观看涩涩| 日本久久久久久| 写真福利精品福利在线观看| 国产精品久在线观看| 高清在线一区| 成人福利在线观看| 麻豆国产一区| 高清免费日韩| 精品久久ai| 欧美日韩视频在线一区二区观看视频| 一区二区美女| 亚州欧美一区三区三区在线| 欧美激情欧美| 奇米777四色影视在线看| 狠狠88综合久久久久综合网| 人体内射精一区二区三区| 一本久道综合久久精品| 日韩久久一级片| 免费看欧美女人艹b| 波多野结衣国产精品| 国产成人亚洲综合a∨猫咪| 国产污在线观看| 久久综合狠狠综合久久激情| b站大片免费直播| 欧美高清在线一区二区| 波多野结衣亚洲色图| 性欧美疯狂xxxxbbbb| www.国产毛片| 91精品国产91久久综合桃花| 免费成人在线看| 一本一本久久a久久精品综合小说| 日本中文字幕伦在线观看| 欧美美女操人视频| 九色porny自拍视频在线播放 | 久无码久无码av无码| 久久国产精品久久w女人spa| 污污动漫在线观看| 成人夜色视频网站在线观看| 一色道久久88加勒比一| 亚洲免费av在线| 在线观看精品国产| 欧美日本乱大交xxxxx| 丰满人妻妇伦又伦精品国产| 国产一区二区三区视频| 女子免费在线观看视频www| 热99精品只有里视频精品| 台湾天天综合人成在线| 精品国产一区二区三| 国产精品久久久久久久免费观看 | 欧美日韩亚洲国产另类| 色综合一区二区| 国产www免费观看| 亚洲精品小视频| 色yeye免费人成网站在线观看| 日韩免费观看在线观看| 精品视频在线一区| 日韩精品一区二区三区色偷偷| 欧美三级免费| 向日葵污视频在线观看| 91免费看片在线观看| 永久久久久久久| 在线看日韩精品电影| 殴美一级特黄aaaaaa| www日韩欧美| 日本高清不卡一区二区三区视频| www.av一区视频| 久久中文字幕av| 欧美精品第三页| 99精品视频在线播放观看| 欧美一区二区三区爽爽爽| 欧美无砖砖区免费| 欧美3p视频在线观看| 91国产一区在线| 99ri日韩精品视频| 福利在线小视频| 精品在线播放免费| 美国黑人一级大黄| 在线视频中文字幕一区二区| 香港三日本三级少妇66| 欧美大片网站在线观看| 粉嫩av国产一区二区三区| 五月天婷亚洲天综合网鲁鲁鲁| 免费一级欧美片在线播放| 国产一级免费片| 亚洲午夜久久久久久久久电影网| 国产乱人乱偷精品视频a人人澡| 在线观看欧美视频| 欧美片第一页| 欧美一卡2卡3卡4卡无卡免费观看水多多| 激情五月***国产精品| 亚洲最大视频网| 亚洲综合色区另类av| 超碰免费在线97| 九九热视频这里只有精品| 麻豆精品一区| 欧美成人精品免费| 成人在线视频一区二区| 青青草手机在线视频| 精品国产乱码91久久久久久网站| 91在线中字| 国产高清自拍一区| 一区视频在线| 小毛片在线观看| 欧美视频免费在线观看| 青春有你2免费观看完整版在线播放高清 | 成人在线黄色| 亚洲一二三区精品| 国产自产高清不卡| 青青操视频在线播放| 日韩精品在线网站| av资源在线| 美日韩精品免费| 毛片基地黄久久久久久天堂| 成人午夜免费影院| 91精品国产综合久久蜜臀| 香蕉久久aⅴ一区二区三区| 国产成人看片| 免费一级欧美片在线播放| 调教驯服丰满美艳麻麻在线视频 | 日韩中文字幕影院| 91福利视频在线观看| 精品美女视频| 精品国产鲁一鲁一区二区三区| 亚洲精品视频在线| 天天插天天干天天操| 国产精品99蜜臀久久不卡二区 | 久久成人18免费网站| 国产精品国产| 国产精品天天av精麻传媒| 亚洲天堂免费在线观看视频| 亚洲毛片欧洲毛片国产一品色| 91av在线视频观看| 成人中文视频| 成人欧美精品一区二区| 色综合久久综合网97色综合 | 天天干天天玩天天操| 亚洲一区在线观看免费观看电影高清 | 国产在线视频精品一区| 男女啊啊啊视频| 日韩小视频在线观看| 国产精品久久久久av蜜臀| 亚洲精品怡红院| 亚洲一区在线免费观看| 国产精品ⅴa有声小说| 99se婷婷在线视频观看| 久色成人在线| 欧美激情一区二区视频| 亚洲网站在线观看| 日韩中文字幕视频网| 可以免费在线看黄的网站| 亚洲制服欧美中文字幕中文字幕| 九色网友自拍视频手机在线| 999热视频| 蜜臀久久99精品久久久久宅男| 久视频在线观看| 久久久www成人免费精品张筱雨| 日韩精品导航|