精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

人体久久天天| 咪咪网在线视频| 国产精品69毛片高清亚洲| 色综合老司机第九色激情| 中国一级特黄录像播放| 粉嫩一区二区| 亚洲视频一区二区在线| 国产精品亚洲综合| 亚洲婷婷久久综合| 狠狠综合久久av一区二区老牛| 日韩av影院在线观看| 香蕉视频网站入口| 欧美videos另类精品| 91免费看片在线观看| 成人黄色免费在线观看| 日本在线视频免费| 99精品全国免费观看视频软件| 欧美精品一区二区在线播放| 亚洲无吗一区二区三区| h片视频在线观看| 国产精品嫩草久久久久| 久久久久久久久久久久久9999| 亚洲综合五月天婷婷丁香| 99热这里只有成人精品国产| 日韩有码在线视频| 99久久久久久久久久| 亚洲超碰在线观看| 欧美日韩精品欧美日韩精品一综合| 波多野结衣av一区二区全免费观看| 国产高清在线观看| 99热99精品| 不卡的av一区| 国产又黄又粗又长| 青青草原综合久久大伊人精品优势| 国模精品一区二区三区色天香| 亚洲一级理论片| 欧美日韩爱爱| 日韩黄在线观看| 任你躁av一区二区三区| 国产精品欧美一区二区三区不卡| 色偷偷久久人人79超碰人人澡| 农民人伦一区二区三区| 中文字幕资源网在线观看| 中文字幕一区av| 亚洲高清精品中出| youjizz在线播放| 国产亚洲欧美色| 蜜桃久久影院| 亚洲色图欧美视频| 99久久精品99国产精品| 国产一区精品视频| 色婷婷综合视频| 成人激情av网| 国产日韩欧美精品| 天堂网在线播放| 99久久精品免费看国产| 精品国产福利| 天堂91在线| 久久蜜桃一区二区| 日本不卡在线播放| 成全电影播放在线观看国语| 国产视频911| 视频在线99| 黄黄的网站在线观看| 亚洲人成网站在线| 国产成人在线小视频| 亚洲卡一卡二| 亚洲一区二区av电影| 成年人视频观看| 惠美惠精品网| 欧美日韩在线一区二区| 激情在线观看视频| 国产精品天天看天天狠| 日韩精品免费视频| 91资源在线播放| 国产精品伦理久久久久久| 久久99久久99精品中文字幕| 亚洲国产精一区二区三区性色| aa国产精品| 国产精品久久久久久五月尺| 国产毛片毛片毛片毛片| 成人动漫一区二区在线| 欧洲一区二区日韩在线视频观看免费 | 亚洲mm色国产网站| 丰满大乳国产精品| 久久久99精品免费观看| 在线免费一区| 电影在线观看一区| 欧美日韩精品欧美日韩精品一综合| 中文字幕avav| 外国成人在线视频| 日韩天堂在线视频| 日韩精品一卡二卡| 秋霞电影网一区二区| 99理论电影网| 成年网站在线| 亚洲成av人片在线| 日韩一级免费片| 久久资源综合| 久久精品99国产精品酒店日本| 精品小视频在线观看| 久久婷婷亚洲| 96成人在线视频| 国产精品麻豆一区二区三区| 亚洲午夜激情av| 手机视频在线观看| 欧美网色网址| 久久精品国产综合| aaa在线视频| 成人免费黄色大片| 一级二级三级欧美| 在线中文字幕播放| 欧美成va人片在线观看| 中国美女黄色一级片| 亚洲一区二区三区高清| 亚洲淫片在线视频| 91在线高清| 欧美日韩在线视频首页| 亚洲天堂小视频| 日韩www.| 日本精品va在线观看| 国内毛片毛片毛片毛片| 国产精品三级在线观看| 哪个网站能看毛片| 欧美人与动xxxxz0oz| 欧美成人免费一级人片100| 男操女视频网站| 99久久免费国产| 精品人妻大屁股白浆无码| 人人精品久久| 在线看欧美日韩| 天码人妻一区二区三区在线看| 成人精品一区二区三区四区| 在线一区亚洲| 精品176极品一区| 国产性猛交xxxx免费看久久| 全部毛片永久免费看| 岛国一区二区三区| 国产欧美久久久久| 一区二区三区国产好| 久久久精品国产亚洲| 亚洲天堂中文字幕在线| 国产精品天天摸av网| 成人3d动漫一区二区三区| 日本亚洲不卡| 69**夜色精品国产69乱| 午夜性色福利影院| 欧美日韩国产一区二区三区| 中文字幕a在线观看| 亚洲国产99| 精品国产一二| 中文字幕影音在线| 亚洲美女性视频| 国产午夜精品久久久久| 久久久国产精华| 狠狠操精品视频| 国内精品视频在线观看| 国产精品入口日韩视频大尺度| 福利视频在线看| 欧美卡1卡2卡| 久久精品视频免费在线观看| 国产精品资源在线观看| 久久精品xxx| 国产精品毛片av| 欧美一级bbbbb性bbbb喷潮片| 日本一级在线观看| 欧美色倩网站大全免费| 欧美成人777| 成人综合婷婷国产精品久久蜜臀| 国产v片免费观看| 中文有码一区| 91精品久久久久久久久久| 黄色在线免费网站| 亚洲精品一区二区三区福利| 日韩手机在线视频| 亚洲欧洲日产国码二区| 黑人无套内谢中国美女| 99在线观看免费视频精品观看| 欧美一区二区三区四区在线观看地址 | 99精品99久久久久久宅男| 欧美激情成人动漫| 亚洲九九九在线观看| 伊人网视频在线| 亚洲一区中文日韩| 最近中文字幕在线mv视频在线| 六月婷婷色综合| 日韩av新片网| 欧美一级淫片| 成人三级在线| av日韩电影| 超碰97人人做人人爱少妇| 色婷婷在线视频| 欧美日韩久久久一区| 久久精品国产亚洲av香蕉| 久久女同性恋中文字幕| 亚洲一区二区三区四区精品| 国产欧美日韩综合一区在线播放 | 成人精品久久一区二区三区| 美女尤物在线视频| 一区二区三区日韩在线| 亚洲高清在线观看视频| 欧美三级韩国三级日本三斤 | 一本久道久久综合中文字幕| 国产又粗又硬又长又爽| 91在线精品一区二区| 日韩a一级欧美一级| 丝袜诱惑制服诱惑色一区在线观看 | 9色在线视频网站| 欧美精品一区二区三区高清aⅴ | 国产精品一区二区果冻传媒| jizzjizzxxxx| 欧美视频福利| 在线视频欧美一区| 国产毛片一区二区三区| 国产成人免费观看| www欧美在线观看| 国产成人欧美在线观看| sm久久捆绑调教精品一区| 久久中文字幕在线| 香港伦理在线| 国产午夜精品免费一区二区三区| 天堂网在线中文| 日韩欧美一区中文| 亚洲综合免费视频| 欧美性xxxxx极品少妇| 国产99久久久| 亚洲成人综合在线| 69av视频在线| 亚洲欧美日韩系列| 成人做爰视频网站| 中文一区在线播放| 中文字幕在线观看免费高清| 91在线播放网址| 亚洲欧美日韩色| 高清久久久久久| 在线a免费观看| 国产在线一区观看| 国产精品嫩草影院8vv8| 蜜桃视频在线观看一区| 亚洲 中文字幕 日韩 无码| 中文一区二区| 俄罗斯av网站| 亚洲欧美久久| 无码aⅴ精品一区二区三区浪潮 | 亚洲第一区色| 黄色a级片免费看| 激情欧美日韩| 97视频久久久| 国产精品亚洲欧美| av免费中文字幕| 日日夜夜精品视频天天综合网| 国产熟女高潮视频| 日韩激情av在线| 久久撸在线视频| 国内一区二区在线| 乱码一区二区三区| a在线欧美一区| 在线免费观看黄色小视频| 久久久高清一区二区三区| 91视频免费在观看| 国产精品伦理一区二区| 日本黄色免费片| 亚洲精品成a人| 国产一级片免费观看| 欧美日韩免费看| www.久久网| 91精品国产高清一区二区三区| 朝桐光av在线一区二区三区| 亚洲精品一区二区三区在线观看| 完全免费av在线播放| 欧美性猛交xx| 不卡的av网站| 免费观看a级片| 亚洲人成网站影音先锋播放| 黄色小视频在线免费看| 色偷偷成人一区二区三区91 | sis001欧美| 国产欧美精品久久久| 国产亚洲观看| 麻豆成人小视频| 99成人在线视频| 国产精品一线二线三线| 丝袜诱惑制服诱惑色一区在线观看 | 国产日产精品一区二区三区的介绍 | 日韩一区国产在线观看| 亚洲九九在线| av免费播放网址| 久久99深爱久久99精品| 中文字幕一区二区三区乱码不卡| 久久先锋资源网| 青青草原在线免费观看| 懂色av影视一区二区三区| 在线观看毛片视频| 亚洲国产成人久久综合| 成年人在线看| 久久久久久中文| 精品176极品一区| 精品国产一区二区三区麻豆免费观看完整版 | 国产三级三级在线观看| 亚洲精品久久久久久久久| 日本中文字幕电影在线免费观看| 久久久之久亚州精品露出| 国产成人久久精品麻豆二区| 精品久久久久久乱码天堂| 99精品网站| 日本男人操女人| 波多野结衣视频一区| 国产精品视频看看| 欧美性猛交xxxx偷拍洗澡| 国产精品久久综合青草亚洲AV| 亚洲成人精品视频| www视频在线免费观看| 国产精品99一区| 福利片在线一区二区| 黄色免费高清视频| 久久婷婷影院| 欧美在线一级片| 一级精品视频在线观看宜春院 | 永久免费毛片在线播放| 92看片淫黄大片看国产片| 精品久久久久中文字幕小说| av免费观看大全| 国产69精品一区二区亚洲孕妇| 亚洲欧洲综合网| 在线视频欧美精品| 五月婷婷开心中文字幕| 欧美福利视频在线| 99视频有精品高清视频| 亚洲乱码国产乱码精品天美传媒| 亚洲综合二区| 中文字幕无码人妻少妇免费| 一区二区三区高清不卡| 国产巨乳在线观看| 色伦专区97中文字幕| 亚洲精品一区三区三区在线观看| 久久久com| 国产精品女主播一区二区三区| 最新国产精品自拍| 一区二区三区在线免费视频| 国产精品国产一区二区三区四区| 在线播放国产一区二区三区| 亚洲少妇视频| 久久精品综合一区| 香蕉视频成人在线观看| 国产传媒第一页| 日韩欧美视频一区二区三区| 婷婷开心激情网| 欧美综合一区第一页| 日日狠狠久久偷偷综合色| 国产午夜福利在线播放| 99re免费视频精品全部| 好吊操这里只有精品| 日韩电影网在线| 都市激情综合| 亚洲看片网站| 国产一区福利在线| 欧洲猛交xxxx乱大交3| 精品国产免费久久| 成人免费网站观看| 欧美三级网色| 免费日本视频一区| 国产成人av免费在线观看| 日韩一区二区在线观看视频| 日韩三级电影视频| 国产在线精品日韩| 久久av一区二区三区| 国产不卡在线观看视频| 欧美精品粉嫩高潮一区二区| 成人在线影视| 精品国产一区二区三区麻豆小说 | 杨幂一区二区国产精品| 亚洲综合色网站| 亚洲欧美日韩精品永久在线| 国产精品扒开腿做| 亚洲高清资源在线观看| 无码国产精品一区二区免费式直播 | 亚洲在线观看av| 九九九久久国产免费| 里番精品3d一二三区| 国产又大又黄又猛| 一区二区三区精品在线观看| 日韩a在线观看| 国产精品一区二区久久久久| 欧美伊人久久| 精品人妻少妇嫩草av无码| 欧美日韩亚州综合| 黄色污污视频在线观看| 三区精品视频观看| 国产精品1区2区| 91在线视频免费播放| 久久久精品免费| 偷拍视屏一区| 欧美69精品久久久久久不卡| 色88888久久久久久影院按摩| 欧美a免费在线| 久久国产精品高清| 久久99久久久久| 影音先锋亚洲天堂| 中文字幕亚洲无线码在线一区| 天堂va在线高清一区|