国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Argo Rollouts 基于 Analysis 的漸進(jìn)式發(fā)布

云計算
Rollout 是 Deployment 資源的直接替代品,它提供額外的 blueGreen 和 canary 更新策略,這些策略可以在更新期間創(chuàng)建 AnalysisRuns 和 Experiments,可以推進(jìn)更新,或中止更新。

[[411608]]

前面我們介紹了使用手動的方式來控制 Argo Rollouts 進(jìn)行應(yīng)用交付,此外我們還可以利用 Argo Rollouts 提供的分析(Analysis)來執(zhí)行自動交付。Argo Rollouts 提供了幾種執(zhí)行分析(Analysis)的方法來推動漸進(jìn)式交付,首先需要了解幾個 CRD 資源:

  • Rollout:Rollout 是 Deployment 資源的直接替代品,它提供額外的 blueGreen 和 canary 更新策略,這些策略可以在更新期間創(chuàng)建 AnalysisRuns 和 Experiments,可以推進(jìn)更新,或中止更新。
  • AnalysisTemplate:AnalysisTemplate 是一個模板,它定義了如何執(zhí)行金絲雀分析,例如它應(yīng)該執(zhí)行的指標(biāo)、頻率以及被視為成功或失敗的值,AnalysisTemplate 可以用輸入值進(jìn)行參數(shù)化。
  • ClusterAnalysisTemplate:ClusterAnalysisTemplate 和 AnalysisTemplate 類似,但它是全局范圍內(nèi)的,它可以被整個集群的任何 Rollout 使用。
  • AnalysisRun:AnalysisRun 是 AnalysisTemplate 的實例化。AnalysisRun 就像 Job 一樣,它們最終會完成,完成的運行被認(rèn)為是成功的、失敗的或不確定的,運行的結(jié)果分別影響 Rollout 的更新是否繼續(xù)、中止或暫停。

后臺分析

金絲雀正在執(zhí)行其部署步驟時,分析可以在后臺運行。

以下示例是每 10 分鐘逐漸將 Canary 權(quán)重增加 20%,直到達(dá)到 100%。在后臺,基于名為 success-rate 的 AnalysisTemplate 啟動 AnalysisRun,success-rate 模板查詢 Prometheus 服務(wù)器,以 5 分鐘間隔/樣本測量 HTTP 成功率,它沒有結(jié)束時間,一直持續(xù)到停止或失敗。如果測量到的指標(biāo)小于 95%,并且有三個這樣的測量值,則分析被視為失敗。失敗的分析會導(dǎo)致 Rollout 中止,將 Canary 權(quán)重設(shè)置回零,并且 Rollout 將被視為降級。否則,如果 rollout 完成其所有 Canary 步驟,則認(rèn)為 rollout 是成功的,并且控制器將停止運行分析。

如下所示的 Rollout 資源對象:

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: Rollout 
  3. metadata: 
  4.   name: guestbook 
  5. spec: 
  6. ... 
  7.   strategy: 
  8.     canary: 
  9.       analysis: 
  10.         templates: 
  11.         - templateName: success-rate 
  12.         startingStep: 2 # 延遲開始分析,到第3步開始 
  13.         args: 
  14.         - name: service-name 
  15.           value: guestbook-svc.default.svc.cluster.local 
  16.       steps: 
  17.       - setWeight: 20 
  18.       - pause: {duration: 10m} 
  19.       - setWeight: 40 
  20.       - pause: {duration: 10m} 
  21.       - setWeight: 60 
  22.       - pause: {duration: 10m} 
  23.       - setWeight: 80 
  24.       - pause: {duration: 10m} 

上面我們引用了一個 success-rate 的模板:

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: AnalysisTemplate 
  3. metadata: 
  4.   name: success-rate 
  5. spec: 
  6.   args: 
  7.   - name: service-name 
  8.   metrics: 
  9.   - name: success-rate 
  10.     interval: 5m 
  11.     # NOTE: prometheus queries return results in the form of a vector. 
  12.     # So it is common to access the index 0 of the returned array to obtain the value 
  13.     successCondition: result[0] >= 0.95 
  14.     failureLimit: 3 
  15.     provider: 
  16.       prometheus: 
  17.         address: http://prometheus.example.com:9090 
  18.         query: | 
  19.           sum(irate( 
  20.             istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}",response_code!~"5.*"}[5m] 
  21.           )) / 
  22.           sum(irate( 
  23.             istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}"}[5m] 
  24.           )) 

內(nèi)聯(lián)分析

分析也可以作為內(nèi)嵌“分析”步驟來執(zhí)行,當(dāng)分析以 "內(nèi)聯(lián) "方式進(jìn)行時,在到達(dá)該步驟時啟動 AnalysisRun,并在運行完成之前阻止其推進(jìn)。分析運行的成功或失敗決定了部署是繼續(xù)進(jìn)行下一步,還是完全中止部署。

如下所示的示例中我們將 Canary 權(quán)重設(shè)置為 20%,暫停 5 分鐘,然后運行分析。如果分析成功,則繼續(xù)發(fā)布,否則中止。

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: Rollout 
  3. metadata: 
  4.   name: guestbook 
  5. spec: 
  6. ... 
  7.   strategy: 
  8.     canary: 
  9.       steps: 
  10.       - setWeight: 20 
  11.       - pause: {duration: 5m} 
  12.       - analysis: 
  13.           templates: 
  14.           - templateName: success-rate 
  15.           args: 
  16.           - name: service-name 
  17.             value: guestbook-svc.default.svc.cluster.local 

上面的對象中我們將 analysis 作為一個步驟內(nèi)聯(lián)到了 Rollout 步驟中,當(dāng)20%流量暫停5分鐘后,開始執(zhí)行 success-rate 這個分析模板。

這里 AnalysisTemplate 與上面的后臺分析例子相同,但由于沒有指定間隔時間,分析將執(zhí)行一次測量就完成了。

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: AnalysisTemplate 
  3. metadata: 
  4.   name: success-rate 
  5. spec: 
  6.   args: 
  7.   - name: service-name 
  8.   - name: prometheus-port 
  9.     value: 9090 
  10.   metrics: 
  11.   - name: success-rate 
  12.     successCondition: result[0] >= 0.95 
  13.     provider: 
  14.       prometheus: 
  15.         address: "http://prometheus.example.com:{{args.prometheus-port}}" 
  16.         query: | 
  17.           sum(irate( 
  18.             istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}",response_code!~"5.*"}[5m] 
  19.           )) / 
  20.           sum(irate( 
  21.             istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}"}[5m] 
  22.           )) 

此外我們可以通過指定 count 和 interval 字段,可以在一個較長的時間段內(nèi)進(jìn)行多次測量。

  1. metrics: 
  2.   - name: success-rate 
  3.     successCondition: result[0] >= 0.95 
  4.     interval: 60s 
  5.     count: 5 
  6.     provider: 
  7.       prometheus: 
  8.         address: http://prometheus.example.com:9090 
  9.         query: ... 

多個模板的分析

Rollout 在構(gòu)建 AnalysisRun 時可以引用多個 AnalysisTemplate。這樣我們就可以從多個 AnalysisTemplate 中來組成分析,如果引用了多個模板,那么控制器將把這些模板合并在一起,控制器會結(jié)合所有模板的指標(biāo)和 args 字段。如下所示:

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: Rollout 
  3. metadata: 
  4.   name: guestbook 
  5. spec: 
  6. ... 
  7.   strategy: 
  8.     canary: 
  9.       analysis: 
  10.         templates: 
  11.         - templateName: success-rate 
  12.         - templateName: error-rate 
  13.         args: 
  14.         - name: service-name 
  15.           value: guestbook-svc.default.svc.cluster.local 
  16.  
  17. --- 
  18.  
  19. apiVersion: argoproj.io/v1alpha1 
  20. kind: AnalysisTemplate 
  21. metadata: 
  22.   name: success-rate 
  23. spec: 
  24.   args: 
  25.   - name: service-name 
  26.   metrics: 
  27.   - name: success-rate 
  28.     interval: 5m 
  29.     successCondition: result[0] >= 0.95 
  30.     failureLimit: 3 
  31.     provider: 
  32.       prometheus: 
  33.         address: http://prometheus.example.com:9090 
  34.         query: | 
  35.           sum(irate( 
  36.             istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}",response_code!~"5.*"}[5m] 
  37.           )) / 
  38.           sum(irate( 
  39.             istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}"}[5m] 
  40.           )) 
  41. --- 
  42. apiVersion: argoproj.io/v1alpha1 
  43. kind: AnalysisTemplate 
  44. metadata: 
  45.   name: error-rate 
  46. spec: 
  47.   args: 
  48.   - name: service-name 
  49.   metrics: 
  50.   - name: error-rate 
  51.     interval: 5m 
  52.     successCondition: result[0] <= 0.95 
  53.     failureLimit: 3 
  54.     provider: 
  55.       prometheus: 
  56.         address: http://prometheus.example.com:9090 
  57.         query: | 
  58.           sum(irate( 
  59.             istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}",response_code=~"5.*"}[5m] 
  60.           )) / 
  61.           sum(irate( 
  62.             istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}"}[5m] 
  63.           )) 

當(dāng)執(zhí)行的分析的時候,控制器會將上面的 success-rate 和 error-rate 兩個模板合并到一個 AnalysisRun 對象中去。

需要注意的是如果出現(xiàn)以下情況,控制器在合并模板時將出錯:

  • 模板中的多個指標(biāo)具有相同的名稱
  • 兩個同名的參數(shù)都有值

分析模板參數(shù)

AnalysisTemplates 可以聲明一組參數(shù),這些參數(shù)可以由 Rollouts 傳遞。然后,這些參數(shù)可以像在 metrics 配置中一樣使用,并在 AnalysisRun 創(chuàng)建時被實例化,參數(shù)占位符被定義為 {{ args. }},如下所示:

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: AnalysisTemplate 
  3. metadata: 
  4.   name: args-example 
  5. spec: 
  6.   args: 
  7.   # required 
  8.   - name: service-name 
  9.   - name: stable-hash 
  10.   - name: latest-hash 
  11.   # optional 
  12.   - name: api-url 
  13.     value: http://example/measure 
  14.   # from secret 
  15.   - name: api-token 
  16.     valueFrom: 
  17.       secretKeyRef: 
  18.         name: token-secret 
  19.         key: apiToken 
  20.   metrics: 
  21.   - name: webmetric 
  22.     successCondition: result == 'true' 
  23.     provider: 
  24.       web: 
  25.         # placeholders are resolved when an AnalysisRun is created 
  26.         url: "{{ args.api-url }}?service={{ args.service-name }}" 
  27.         headers: 
  28.           - keyAuthorization 
  29.             value: "Bearer {{ args.api-token }}" 
  30.         jsonPath: "{$.results.ok}" 

在創(chuàng)建 AnalysisRun 時,Rollout 中定義的參數(shù)與 AnalysisTemplate 的參數(shù)會合并,如下所示:

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: Rollout 
  3. metadata: 
  4.   name: guestbook 
  5. spec: 
  6. ... 
  7.   strategy: 
  8.     canary: 
  9.       analysis: 
  10.         templates: 
  11.         - templateName: args-example 
  12.         args: 
  13.         # required value 
  14.         - name: service-name 
  15.           value: guestbook-svc.default.svc.cluster.local 
  16.         # override default value 
  17.         - name: api-url 
  18.           value: http://other-api 
  19.         # pod template hash from the stable ReplicaSet 
  20.         - name: stable-hash 
  21.           valueFrom: 
  22.             podTemplateHashValue: Stable 
  23.         # pod template hash from the latest ReplicaSet 
  24.         - name: latest-hash 
  25.           valueFrom: 
  26.             podTemplateHashValue: Latest 

此外分析參數(shù)也支持 valueFrom,用于讀取 meta 數(shù)據(jù)并將其作為參數(shù)傳遞給 AnalysisTemplate,如下例子是引用元數(shù)據(jù)中的 env 和 region 標(biāo)簽,并將它們傳遞給 AnalysisTemplate。

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: Rollout 
  3. metadata: 
  4.   name: guestbook 
  5.   labels: 
  6.     appType: demo-app 
  7.     buildType: nginx-app 
  8.     ... 
  9.     env: dev 
  10.     region: us-west-2 
  11. spec: 
  12. ... 
  13.   strategy: 
  14.     canary: 
  15.       analysis: 
  16.         templates: 
  17.         - templateName: args-example 
  18.         args: 
  19.         ... 
  20.         - name: env 
  21.           valueFrom: 
  22.             fieldRef: 
  23.               fieldPath: metadata.labels['env'
  24.         # region where this app is deployed 
  25.         - name: region 
  26.           valueFrom: 
  27.             fieldRef: 
  28.               fieldPath: metadata.labels['region'

藍(lán)綠預(yù)發(fā)布分析

使用 BlueGreen 策略的 Rollout 可以在使用預(yù)發(fā)布將流量切換到新版本之前啟動一個 AnalysisRun。分析運行的成功或失敗決定 Rollout 是否切換流量,或完全中止 Rollout,如下所示:

  1. kind: Rollout 
  2. metadata: 
  3.   name: guestbook 
  4. spec: 
  5. ... 
  6.   strategy: 
  7.     blueGreen: 
  8.       activeService: active-svc 
  9.       previewService: preview-svc 
  10.       prePromotionAnalysis: 
  11.         templates: 
  12.         - templateName: smoke-tests 
  13.         args: 
  14.         - name: service-name 
  15.           value: preview-svc.default.svc.cluster.local 

上面我們的示例中一旦新的 ReplicaSet 完全可用,Rollout 會創(chuàng)建一個預(yù)發(fā)布的 AnalysisRun,Rollout 不會將流量切換到新版本,而是會等到分析運行成功完成。

注意:如果指定了 autoPromotionSeconds 字段,并且 Rollout 已經(jīng)等待了 auto promotion seconds 的時間,Rollout 會標(biāo)記 AnalysisRun 成功,并自動將流量切換到新版本。如果 AnalysisRun 在此之前完成,Rollout 將不會創(chuàng)建另一個 AnalysisRun,并等待 autoPromotionSeconds 的剩余時間。

藍(lán)綠發(fā)布后分析

使用 BlueGreen 策略的 Rollout 還可以在流量切換到新版本后使用發(fā)布后分析。如果發(fā)布后分析失敗或出錯,Rollout 則進(jìn)入中止?fàn)顟B(tài),并將流量切換回之前的穩(wěn)定 Replicaset,當(dāng)后分析成功時,Rollout 被認(rèn)為是完全發(fā)布狀態(tài),新的 ReplicaSet 將被標(biāo)記為穩(wěn)定,然后舊的 ReplicaSet 將根據(jù) scaleDownDelaySeconds(默認(rèn)為30秒)進(jìn)行縮減。

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: Rollout 
  3. metadata: 
  4.   name: guestbook 
  5. spec: 
  6. ... 
  7.   strategy: 
  8.     blueGreen: 
  9.       activeService: active-svc 
  10.       previewService: preview-svc 
  11.       scaleDownDelaySeconds: 600 # 10 minutes 
  12.       postPromotionAnalysis: 
  13.         templates: 
  14.         - templateName: smoke-tests 
  15.         args: 
  16.         - name: service-name 
  17.           value: preview-svc.default.svc.cluster.local 

失敗條件

failureCondition 可以用來配置分析運行失敗,下面的例子是每隔5分鐘持續(xù)輪詢 Prometheus 服務(wù)器來獲得錯誤總數(shù),如果遇到10個或更多的錯誤,則認(rèn)為分析運行失敗。

  1. metrics: 
  2. name: total-errors 
  3.   interval: 5m 
  4.   failureCondition: result[0] >= 10 
  5.   failureLimit: 3 
  6.   provider: 
  7.     prometheus: 
  8.       address: http://prometheus.example.com:9090 
  9.       query: | 
  10.         sum(irate( 
  11.           istio_requests_total{reporter="source",destination_service=~"{{args.service-name}}",response_code~"5.*"}[5m] 
  12.         )) 

無結(jié)果的運行

分析運行j結(jié)果也可以被認(rèn)為是不確定的,這表明運行既不成功,也不失敗。無結(jié)果的運行會導(dǎo)致發(fā)布在當(dāng)前步驟上暫停。這時需要人工干預(yù),以恢復(fù)運行,或中止運行。當(dāng)一個指標(biāo)沒有定義成功或失敗的條件時,分析運行可能成為無結(jié)果的一個例子。

  1. metrics: 
  2.  - name: my-query 
  3.    provider: 
  4.      prometheus: 
  5.        address: http://prometheus.example.com:9090 
  6.        query: ... 

此外當(dāng)同時指定了成功和失敗的條件,但測量值沒有滿足任何一個條件時,也可能發(fā)生不確定的分析運行。

  1. metrics: 
  2. name: success-rate 
  3.   successCondition: result[0] >= 0.90 
  4.   failureCondition: result[0] < 0.50 
  5.   provider: 
  6.     prometheus: 
  7.       address: http://prometheus.example.com:9090 
  8.       query: ... 

不確定的分析運行的一個場景是使 Argo Rollouts 能夠自動執(zhí)行分析運行,并收集測量結(jié)果,但仍然允許我們來判斷決定測量值是否可以接受,并決定繼續(xù)或中止。

延遲分析運行

如果分析運行不需要立即開始(即給指標(biāo)提供者時間來收集金絲雀版本的指標(biāo)),分析運行可以延遲特定的指標(biāo)分析。每個指標(biāo)可以被配置為有不同的延遲,除了特定指標(biāo)的延遲之外,具有后臺分析的發(fā)布可以延遲創(chuàng)建分析運行,直到達(dá)到某個步驟為止

如下所示延遲一個指定的分析指標(biāo):

  1. metrics: 
  2. name: success-rate 
  3.   # Do not start this analysis until 5 minutes after the analysis run starts 
  4.   initialDelay: 5m 
  5.   successCondition: result[0] >= 0.90 
  6.   provider: 
  7.     prometheus: 
  8.       address: http://prometheus.example.com:9090 
  9.       query: ... 

延遲開始后臺分析運行,直到步驟3(設(shè)定重量40%)。

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: Rollout 
  3. metadata: 
  4.   name: guestbook 
  5. spec: 
  6.   strategy: 
  7.     canary: 
  8.       analysis: 
  9.         templates: 
  10.         - templateName: success-rate 
  11.         startingStep: 2 
  12.       steps: 
  13.       - setWeight: 20 
  14.       - pause: {duration: 10m} 
  15.       - setWeight: 40 
  16.       - pause: {duration: 10m} 

引用 Secret

AnalysisTemplate 和 AnalysisRun 可以在 .spec.args 中引用 Secret 對象,這允許用戶安全地將認(rèn)證信息傳遞給指標(biāo)提供方,如登錄憑證或 API 令牌。

需要注意一個 AnalysisRun 只能引用它所運行的同一命名空間的 Secret。

如下所示的例子中,一個 AnalysisTemplate 引用了一個 API 令牌,并把它傳遞給一個Web 指標(biāo)提供者。

  1. apiVersion: argoproj.io/v1alpha1 
  2. kind: AnalysisTemplate 
  3. spec: 
  4.   args: 
  5.   - name: api-token 
  6.     valueFrom: 
  7.       secretKeyRef: 
  8.         name: token-secret 
  9.         key: apiToken 
  10.   metrics: 
  11.   - name: webmetric 
  12.     provider: 
  13.       web: 
  14.         headers: 
  15.         - keyAuthorization 
  16.           value: "Bearer {{ args.api-token }}" 

 【編輯推薦】

 

責(zé)任編輯:姜華 來源: k8s技術(shù)圈
相關(guān)推薦

2022-08-22 10:40:40

Kubernete部署分析運行

2023-09-28 07:34:33

2023-04-11 07:59:56

Kruise漸進(jìn)式交付

2014-12-16 13:51:55

華為eSpace UC統(tǒng)一通信

2021-07-13 06:35:11

Argo Rollou GitOpsKubernetes

2010-04-27 13:41:42

云計算

2024-11-04 16:04:06

2025-09-28 01:50:00

2021-12-21 11:01:30

自動駕駛數(shù)據(jù)人工智能

2021-01-13 13:49:29

漸進(jìn)式網(wǎng)頁應(yīng)用應(yīng)用程序開發(fā)

2021-06-22 10:07:20

漸進(jìn)式創(chuàng)新顛覆性創(chuàng)新二元方法

2013-09-23 10:00:33

5G4G5G研究

2024-11-20 09:39:56

漸進(jìn)式遷移云策略云支出

2011-05-19 09:21:37

互聯(lián)網(wǎng)信息化

2016-01-05 16:07:17

2021-02-02 10:22:48

Web應(yīng)用程序架構(gòu)

2021-07-22 09:00:00

SPAPWAWeb

2024-12-25 16:42:18

2021-06-24 08:25:38

flux2GitOps 云原生
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品青青在线观看爽香蕉| 国产午夜在线| 日韩最新av在线| 色姑娘综合网| 国产成人精品免费看在线播放| 亚洲精品国产suv一区88| 亚洲三区在线观看| 中文字幕日韩精品无码内射| 91精品久久久久久久久久入口| 2025国产精品视频| caoporm免费视频在线| 高清国产一区二区| 成人午夜两性视频| 亚洲欧洲另类精品久久综合| 久久爱.com| 亚洲区中文字幕| 日韩中文字幕在线一区| 亚洲精品中文字幕有码专区| 97久久精品一区二区三区的观看方式| 亚洲成人www| 一二三四社区在线视频| 欧美成人精精品一区二区频| 在线欧美三级| 自拍偷拍欧美精品| 亚洲色图自拍| 美女诱惑黄网站一区| 国产精品自拍首页| 综合视频在线| 日韩精品福利在线| 91精品久久| 欧美香蕉大胸在线视频观看 | 国产一区在线视频| 国产精品久久久久免费a∨大胸| 日本黄色成人| 亚洲区一区二区三区| eeuss国产一区二区三区四区| 最新日韩中文字幕| 91pron在线| 深夜成人在线| 免费精品99久久国产综合精品| 欧美主播一区二区三区美女| 97婷婷涩涩精品一区| 欧美 日韩精品| 午夜影院免费在线| 亚洲色图欧美| 亚洲国产精品yw在线观看| 网址你懂得在线观看| 色天天综合色天天久久| 淫片在线观看| 国产免费拔擦拔擦8x高清在线人| 精品国免费一区二区三区| 波多野结衣在线观看| 久久资源免费视频| av成人天堂| 免费国产成人av| 欧美日本在线看| 国产精品国内免费一区二区三区| 日韩av电影免费观看| 在线能看的av网址| 精品少妇一区二区三区在线播放| www555久久| 九九精品视频在线观看| 我要色综合中文字幕| 欧美第一淫aaasss性| 亚洲日产av中文字幕| 92福利视频午夜1000合集在线观看| 日韩精品一区二区三区中文在线| 人人爽久久涩噜噜噜网站| 国产午夜一区| 国产精品主播视频| 欧美影视一区| www.av中文字幕| 中文字幕亚洲无线码a| 亚洲无线观看| 日韩三级精品电影久久久| 我要色综合中文字幕| 亚洲高清免费视频| 久热这里只精品99re8久| 免费看一区二区三区| 精品国产一区二区亚洲人成毛片| 亚欧精品一区| 中文字幕精品一区久久久久| 欧美激情第8页| 国产无遮挡又黄又爽免费网站| 亚洲日韩视频| 欧美日韩视频免费| 正在播放欧美视频| 中文字幕免费不卡在线| 欧美美乳视频| 在线观看视频免费| www.久久艹| 欧美va亚洲va国产综合| 91网站最新网址| 亚洲日本三级| 国产在线色视频| 欧洲一区二区视频| 久久人人爽人人爽| 电影在线观看一区| 久久99精品久久久久久秒播放器 | 久久久人成影片一区二区三区观看 | 国产内射老熟女aaaa| 成人精品国产免费网站| 亚洲精品中字| 精品国产一区二区三区久久狼黑人 | 99久久久久国产精品| 一区国产精品视频| 伊人成年综合电影网| 国产三级伦理在线| 中文字幕视频在线免费观看| 亚洲精品久久久久中文字幕欢迎你| 久久久久久久欧美精品| 久久久久97| 欧美一级淫片丝袜脚交| 91精品国产综合久久久久久漫画 | 香港成人在线视频| 蜜桃传媒在线观看免费进入| 久久久亚洲综合网站| 五月天一区二区三区| 成人3d动漫在线观看| 中文字幕伊人| 成人免费淫片aa视频免费| 亚洲国产视频在线| 女同一区二区三区| 三级短视频在线| 999视频在线免费观看| 日本高清成人免费播放| 极品少妇一区二区三区| 韩日成人av| 午夜精品视频| 6699嫩草久久久精品影院| 久久一夜天堂av一区二区三区| sese一区| 91网站在线看| 99re6这里只有精品视频在线观看| 国产喷水theporn| 欧美激情18p| 精品美女一区二区| 在线观看亚洲成人| 一本色道a无线码一区v| 亚洲高清视频的网址| 亚洲国产aⅴ成人精品无吗| 亚洲欧美日韩一级| 国产av天堂无码一区二区三区| 色片在线免费观看| 久草亚洲一区| 国内福利写真片视频在线| 影音先锋导航| 毛片免费在线| 国产高清一区在线观看| 成人超碰在线| 加勒比视频一区| 欧美一区高清| 韩日精品在线| 天堂蜜桃91精品| 亚洲午夜精品久久久久久app| 中文在线播放一区二区 | 欧洲亚洲两性| 日本一二三区在线视频| 中文字幕毛片| 亚洲字幕成人中文在线观看| 丁香花高清电影在线观看完整版| 免费看污污网站| 午夜视频久久久| 精品午夜一区二区| 8090成年在线看片午夜| 国产精品黄色影片导航在线观看| 日本三级中文字幕在线观看| 国产精品一区二区小说| 午夜精品区一区二区三| 国产日韩一区二区| 国产欧美综合一区| 樱桃视频免费看| gogogo高清在线观看免费完整版| 中文字幕伦理免费在线视频 | 亚洲欧美一区二区三区情侣bbw| 国产91在线观看| 欧美电影《睫毛膏》| 蜜桃tv在线播放| 亚洲中文字幕无码专区| 国产精品麻豆免费版| 日韩在线视频网站| 日韩一区二区在线视频| 国产精品av在线播放| 欧洲亚洲一区| 大地资源高清播放在线观看 | 精品视频在线免费观看| 精品视频一区在线视频| 国产伦精品一区二区三区视频孕妇| 超碰在线97免费| 国产精品探花在线| 午夜激情一区| 欧美性猛交xxxxx免费看| 国产97在线|日韩| 久久99999| 欧美aaaaaaaa牛牛影院| 久久99深爱久久99精品| 一区二区三区视频在线观看| 亚洲色图17p| 国产三级中文字幕| 91社区在线观看|