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

Argo Rollouts 基于 Analysis 的漸進式發布

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

[[411608]]

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

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

后臺分析

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

以下示例是每 10 分鐘逐漸將 Canary 權重增加 20%,直到達到 100%。在后臺,基于名為 success-rate 的 AnalysisTemplate 啟動 AnalysisRun,success-rate 模板查詢 Prometheus 服務器,以 5 分鐘間隔/樣本測量 HTTP 成功率,它沒有結束時間,一直持續到停止或失敗。如果測量到的指標小于 95%,并且有三個這樣的測量值,則分析被視為失敗。失敗的分析會導致 Rollout 中止,將 Canary 權重設置回零,并且 Rollout 將被視為降級。否則,如果 rollout 完成其所有 Canary 步驟,則認為 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.           )) 

內聯分析

分析也可以作為內嵌“分析”步驟來執行,當分析以 "內聯 "方式進行時,在到達該步驟時啟動 AnalysisRun,并在運行完成之前阻止其推進。分析運行的成功或失敗決定了部署是繼續進行下一步,還是完全中止部署。

如下所示的示例中我們將 Canary 權重設置為 20%,暫停 5 分鐘,然后運行分析。如果分析成功,則繼續發布,否則中止。

  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 作為一個步驟內聯到了 Rollout 步驟中,當20%流量暫停5分鐘后,開始執行 success-rate 這個分析模板。

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

  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 字段,可以在一個較長的時間段內進行多次測量。

  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 在構建 AnalysisRun 時可以引用多個 AnalysisTemplate。這樣我們就可以從多個 AnalysisTemplate 中來組成分析,如果引用了多個模板,那么控制器將把這些模板合并在一起,控制器會結合所有模板的指標和 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.           )) 

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

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

  • 模板中的多個指標具有相同的名稱
  • 兩個同名的參數都有值

分析模板參數

AnalysisTemplates 可以聲明一組參數,這些參數可以由 Rollouts 傳遞。然后,這些參數可以像在 metrics 配置中一樣使用,并在 AnalysisRun 創建時被實例化,參數占位符被定義為 {{ 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}" 

在創建 AnalysisRun 時,Rollout 中定義的參數與 AnalysisTemplate 的參數會合并,如下所示:

  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 

此外分析參數也支持 valueFrom,用于讀取 meta 數據并將其作為參數傳遞給 AnalysisTemplate,如下例子是引用元數據中的 env 和 region 標簽,并將它們傳遞給 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'

藍綠預發布分析

使用 BlueGreen 策略的 Rollout 可以在使用預發布將流量切換到新版本之前啟動一個 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 會創建一個預發布的 AnalysisRun,Rollout 不會將流量切換到新版本,而是會等到分析運行成功完成。

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

藍綠發布后分析

使用 BlueGreen 策略的 Rollout 還可以在流量切換到新版本后使用發布后分析。如果發布后分析失敗或出錯,Rollout 則進入中止狀態,并將流量切換回之前的穩定 Replicaset,當后分析成功時,Rollout 被認為是完全發布狀態,新的 ReplicaSet 將被標記為穩定,然后舊的 ReplicaSet 將根據 scaleDownDelaySeconds(默認為30秒)進行縮減。

  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分鐘持續輪詢 Prometheus 服務器來獲得錯誤總數,如果遇到10個或更多的錯誤,則認為分析運行失敗。

  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.         )) 

無結果的運行

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

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

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

  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 能夠自動執行分析運行,并收集測量結果,但仍然允許我們來判斷決定測量值是否可以接受,并決定繼續或中止。

延遲分析運行

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

如下所示延遲一個指定的分析指標:

  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(設定重量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 對象,這允許用戶安全地將認證信息傳遞給指標提供方,如登錄憑證或 API 令牌。

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

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

  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 }}" 

 【編輯推薦】

 

責任編輯:姜華 來源: k8s技術圈
相關推薦

2022-08-22 10:40:40

Kubernete部署分析運行

2023-09-28 07:34:33

2023-04-11 07:59:56

Kruise漸進式交付

2014-12-16 13:51:55

華為eSpace UC統一通信

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

自動駕駛數據人工智能

2021-01-13 13:49:29

漸進式網頁應用應用程序開發

2021-06-22 10:07:20

漸進式創新顛覆性創新二元方法

2013-09-23 10:00:33

5G4G5G研究

2024-11-20 09:39:56

漸進式遷移云策略云支出

2016-01-05 16:07:17

2011-05-19 09:21:37

互聯網信息化

2021-02-02 10:22:48

Web應用程序架構

2021-07-22 09:00:00

SPAPWAWeb

2024-12-25 16:42:18

2021-06-24 08:25:38

flux2GitOps 云原生
點贊
收藏

51CTO技術棧公眾號

三区精品视频| 日韩中文在线视频| 国产午夜大地久久| 亚洲 欧美 精品| 日本欧美一区二区在线观看| 丝袜亚洲欧美日韩综合| 一级日本黄色片| heyzo在线欧美播放| 久久综合视频网| 91精品国产综合久久香蕉922| 日本妇女毛茸茸| 美女视频亚洲色图| 欧美视频在线观看一区| www.国产亚洲| 成人在线观看免费| 国产精品一二二区| 国产成人精品一区二区三区| 日韩三级在线观看视频| 久久婷婷国产| 制服丝袜亚洲色图| 欧美日韩激情视频在线观看| 在线观看免费黄色| 成人午夜精品一区二区三区| 国产精品中文字幕在线| 国产精品16p| 日韩av专区| 亚洲国产第一页| jizzzz日本| 美女视频在线免费| 亚洲日本va在线观看| 欧美日韩综合精品| а√天堂资源在线| 久久99国产精品免费| 8090成年在线看片午夜| 欧美在线视频第一页| 国产亚洲电影| 亚洲国产成人精品一区二区| 午夜激情视频网| 九九热线视频只有这里最精品| 亚洲综合999| 在线丝袜欧美日韩制服| 日韩a在线观看| 国产91精品精华液一区二区三区 | 亚洲女优在线| 欧美巨乳在线观看| 免费在线观看黄色小视频| 色婷婷狠狠五月综合天色拍| 欧美刺激午夜性久久久久久久| 国产一二三区av| 欧洲一区二区三区精品| 五月天视频一区| 日韩a级黄色片| 老司机福利在线视频| 欧美国产乱子伦 | 欧美精品无码一区二区三区| 激情网站在线| 专区另类欧美日韩| 亚洲日本欧美在线| аⅴ资源新版在线天堂| 国产婷婷色一区二区三区| 免费久久久一本精品久久区| 人妻精品无码一区二区| 懂色一区二区三区免费观看| 99国产超薄肉色丝袜交足的后果 | 视频在线观看91| 欧美一级片一区| 久久高清免费视频| 好吊一区二区三区| 久久国产精品影片| 青青草免费av| 伊人蜜桃色噜噜激情综合| 色综合视频一区中文字幕| www.色小姐com| 亚洲性视频h| 欧美一级bbbbb性bbbb喷潮片| av资源免费观看| 美女久久一区| 国产精品成人v| 中文字幕日本人妻久久久免费 | 极品国产人妖chinesets亚洲人妖 激情亚洲另类图片区小说区 | 欧美精品一二三四| 欧美视频国产视频| 日韩在线视频一区二区三区 | 蜜臀久久99精品久久久| 成人精品小蝌蚪| 欧美黑人xxxxx| 国产高清一级毛片在线不卡| 国产精品无圣光一区二区| 亚洲一区二区三区欧美| av在线官网| 亚洲成人1区2区| 久久人妻精品白浆国产| 成人网ww555视频免费看| 欧美日韩成人在线| 女同性αv亚洲女同志| 日韩电影不卡一区| 国产亚洲一级高清| 中文字幕手机在线观看| 妖精视频成人观看www| 日韩av免费在线播放| 亚洲视频中文字幕在线观看| 国产成人午夜视频| 鲁鲁视频www一区二区| 在线看黄色av| 午夜精品久久久久影视| 狠狠热免费视频| 国产高清日韩| 日韩国产欧美区| 久草福利资源在线| 中文日韩欧美| 国产日韩欧美视频在线| 日本黄视频在线观看| 国产欧美精品区一区二区三区 | 亚洲美女高潮久久久| 亚洲人成精品久久久 | 日本福利片在线| 亚洲日本乱码在线观看| 无码人妻丰满熟妇区毛片| 久久av网站| 亚洲人免费视频| 欧美片一区二区| 日本怡春院一区二区| 精品久久久久久中文字幕动漫| а天堂8中文最新版在线官网| 亚洲国产精品天堂| 国产免费中文字幕| 狠狠综合久久av一区二区蜜桃| 欧美精品18videos性欧美| 亚洲天堂狠狠干| 2020日本不卡一区二区视频| 国产成人精品一区二区三区免费| 日韩黄色在线观看| 亚洲综合在线播放| 青青草在线免费观看| 亚洲三级在线观看| 国产视频一区二区视频| gogo久久日韩裸体艺术| www.久久久久| 成人小视频在线播放| av电影在线观看完整版一区二区| 在线视频亚洲自拍| 日本h片久久| 日韩精品在线观看一区| 国产亚洲精品久久久久久无几年桃| 免费久久精品视频| 欧美在线视频二区| 麻豆免费版在线观看| 精品捆绑美女sm三区| 在线观看亚洲网站| 久久精品国产77777蜜臀| 日本一区网站| 欧美gay视频| 亚洲精品98久久久久久中文字幕| 青青草国产在线观看| 国产在线精品免费| 黄色高清视频网站| 日本美女久久| 深夜福利日韩在线看| 中文字幕777| 日本一区二区三区国色天香| 日韩免费高清在线| 中国av一区| 青青草成人在线| 精品乱码一区二区三四区视频| 欧美性69xxxx肥| 在线精品一区二区三区| 国产欧美三级| 久久综合一区二区三区| 日韩在线影院| 深夜福利一区二区| av免费观看网址| 亚洲人成小说网站色在线| 色噜噜狠狠一区二区三区狼国成人| 欧美freesextv| 亚洲综合色av| 99爱在线观看| 国产视频久久久| 中文字幕一区二区人妻视频| 日本一区二区三级电影在线观看| 国产又大又黄又粗又爽| 97久久视频| 99九九视频| 欧美freesex黑人又粗又大| 精品五月天久久| 中文在线最新版天堂| 亚洲蜜桃精久久久久久久| 中文字幕18页| 99视频+国产日韩欧美| 久久久久久久久久久久久久久久av| 亚洲天堂一区二区| 精品国内自产拍在线观看| 性一交一乱一伧老太| 黑人巨大精品欧美一区二区免费| 中文字幕av久久爽一区| 美日韩一区二区| 成人免费看片'免费看| 亚洲国产国产| 成人欧美在线视频| 蜜桃av在线| 北条麻妃在线一区二区| 婷婷伊人综合中文字幕| 欧美午夜影院一区| 精品99久久久久成人网站免费| 26uuu色噜噜精品一区二区| 午夜视频在线网站| 国产精品嫩草99av在线| 综合网五月天| 色愁久久久久久| 91网站免费看| 亚洲欧美电影| 久热精品视频在线观看| 国产三区四区在线观看| 日韩欧美在线1卡| 日本中文字幕在线观看视频| 一区二区三区在线看| 免费看裸体网站| av亚洲精华国产精华| 蜜臀一区二区三区精品免费视频| 136国产福利精品导航网址| 亚洲无玛一区| 丝袜连裤袜欧美激情日韩| 亚洲一区二区三区在线免费观看| 成人欧美大片| 欧美激情第6页| 日本在线免费| 国产亚洲激情在线| 天天干天天舔天天射| 欧美一区二区三区在线视频| 国产日韩久久久| 五月综合激情网| 九九热精彩视频| 国产精品水嫩水嫩| 免费观看av网站| 成人动漫精品一区二区| 免费人成视频在线播放| 免费成人美女在线观看.| 国内外成人激情视频| 国产精品观看| 超碰97免费观看| 99久久综合| 亚洲最大免费| 精品一区二区三| 欧美日韩在线不卡一区| 日韩理论电影中文字幕| 国模精品娜娜一二三区| 成人三级av在线| 不卡视频一区二区三区| 战狼4完整免费观看在线播放版| 韩国精品免费视频| 一区二区在线播放视频| 久久国产成人| 免费成人午夜视频| 在线精品一区二区| 少妇一晚三次一区二区三区| 亚洲高清资源在线观看| 一区二区三区在线视频111| 精品国产午夜| 天堂一区二区三区| 成人动漫免费在线观看| 先锋影音亚洲资源| 色综合色综合| 亚洲一区二区三区精品视频| 天天天综合网| 久久国产精品免费观看| 亚洲一区二区日韩| 黄色a级片免费看| 激情五月***国产精品| 大陆av在线播放| 夜夜爽av福利精品导航| www.玖玖玖| 久久美女性网| 精品一区二区中文字幕| 久久精品系列| 手机av在线网| 激情六月婷婷综合| 麻豆短视频在线观看| 97久久精品人人做人人爽50路| 久久久亚洲av波多野结衣| 国产欧美日韩精品a在线观看| 日韩女同一区二区三区 | 欧美残忍xxxx极端| 中文字幕精品在线播放| 黄色成人av网站| 欧美黄色免费影院| 久久99精品国产麻豆不卡| 伦伦影院午夜理论片| 99久久精品国产麻豆演员表| 泷泽萝拉在线播放| 国产精品久久久久久一区二区三区| 国产第一页浮力| 午夜精品久久久久久久99樱桃| 精品国产一区二区三区四| 精品视频色一区| 亚洲av无码国产精品永久一区| 亚洲国产精品字幕| 国产特黄在线| 欧美日韩第一视频| 色吧亚洲日本| 成人免费xxxxx在线观看| 国产精品任我爽爆在线播放| 天堂社区 天堂综合网 天堂资源最新版| 91综合久久一区二区| 日本在线xxx| 捆绑紧缚一区二区三区视频| 国产亚洲精品成人a| 国产丝袜欧美中文另类| 精品少妇theporn| 欧美在线免费播放| 精品国产无码一区二区| 亚洲视频777| av有码在线观看| 国产欧美中文字幕| 欧美激情极品| 国产又粗又大又爽的视频| 蘑菇福利视频一区播放| 小早川怜子一区二区三区| 26uuu色噜噜精品一区二区| 欧美日韩亚洲国产另类| 欧美三级电影在线观看| 桃花色综合影院| 久久91亚洲人成电影网站| 精品国模一区二区三区| 国产视频精品网| 亚洲九九在线| 国产一级做a爰片久久| 97久久超碰国产精品| 波多野结衣不卡视频| 欧美性色黄大片| 午夜影院免费视频| 欧美激情亚洲自拍| 99久久99九九99九九九| 午夜精品电影在线观看| 欧美亚洲专区| 中文字幕三级电影| 一区二区三区小说| 国产精品女同一区二区| 综合av色偷偷网| 欧美人体一区二区三区| 久久久久欧美| 99视频一区| 成人在线视频免费播放| 亚洲伊人色欲综合网| av手机免费看| 久久精品美女视频网站| 国产原创一区| 亚洲欧美电影在线观看| 蜜桃在线一区二区三区| 欧美成人国产精品一区二区| 欧美午夜性色大片在线观看| 视频在线不卡| 日韩av电影在线网| 一区二区美女| 老熟妇仑乱视频一区二区| 2020国产精品久久精品美国| 亚洲免费在线观看av| 精品小视频在线| 亚洲精华液一区二区三区| 久久精品人成| 性高湖久久久久久久久| 亚欧洲乱码视频| 欧美综合天天夜夜久久| 国产三级视频在线看| 国产精品久久一区主播| 日韩欧美视频| 中文字幕 欧美日韩| 日韩一区中文字幕| 精品欧美一区二区精品少妇| 欧美激情在线狂野欧美精品| 欧美变态挠脚心| www一区二区www免费| 久久精品亚洲精品国产欧美| 国产精华7777777| 久久久国产精品一区| 一区二区网站| 一区二区传媒有限公司| 久久婷婷久久一区二区三区| 99re热视频| 久久亚洲欧美日韩精品专区 | 亚洲黄页一区| 亚洲国产无码精品| 在线观看国产91| 黄色免费在线观看网站| 国产69精品久久久久9999apgf | 超碰精品在线观看| 欧美 日韩 国产 高清| 久久精品视频一区二区三区| 一级片免费观看视频| 欧美国产精品va在线观看| 日韩中文av| gai在线观看免费高清| 亚洲成人手机在线| 国产裸舞福利在线视频合集| 成人h视频在线观看播放| 亚洲性视频h| 国产又黄又粗的视频| 日韩一区二区精品| 韩日毛片在线观看| 午夜精品区一区二区三| 国产成人av资源| av片免费观看|