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

一色桃子一区二区| 亚洲va国产天堂va久久en| 国产精品入口福利| 欧美卡一卡二卡三| 视频小说一区二区| 777亚洲妇女| 日韩在线一级片| 免费大片黄在线观看视频网站| 国产成人高清在线| 国产精品久久久久久久天堂| 麻豆精品一区二区三区视频| 在线一级成人| 精品少妇一区二区三区视频免付费 | 欧洲s码亚洲m码精品一区| 超碰97av在线| 欧美亚洲色图校园春色| 884aa四虎影成人精品一区| 国产99久久九九精品无码| 免费在线观看黄| 久久久久久综合| 国产伦精品一区二区三区免费视频 | 国产美女99p| 91 中文字幕| 日韩精品免费专区| 97久久精品视频| 免费在线观看黄视频| 久久国产电影| 亚洲人成免费电影| 黄色av网址在线观看| 日本一区二区三区电影免费观看| 欧美中文字幕不卡| 夫妻免费无码v看片| 国产99re66在线视频| 中文字幕亚洲在| 热re99久久精品国99热蜜月| 四虎免费在线观看| 成人性生交大片免费看中文网站| 91精品在线影院| 亚洲综合精品国产一区二区三区| 免费看的黄色欧美网站| 91国产高清在线| 国产大片中文字幕在线观看| 你懂的一区二区| 久久国产精品久久久久久| а天堂中文在线资源| 精品免费视频| 正在播放亚洲1区| 国产熟女一区二区| 欧美一区电影| 日韩视频中文字幕| 91麻豆精品成人一区二区| 欧美aaaa视频| 两个人的视频www国产精品| 美国黄色片视频| 亚洲91视频| 欧美成人h版在线观看| 成人免费视频国产免费观看| 亚洲成人精品| 精品综合久久久久久97| 美女的奶胸大爽爽大片| 欧美日韩亚洲一区| 久久久久久久久久久人体| 伊人365影院| 国产视频一区在线观看一区免费| 91sao在线观看国产| 免费的毛片视频| 日本系列欧美系列| 成人黄色免费片| 高h调教冰块play男男双性文| 成人美女视频在线观看| 免费成人在线观看av| 精彩国产在线| 亚洲人成在线播放网站岛国| 欧美a级免费视频| 在线观看的黄色| 欧美三级电影在线观看| 在线一区二区不卡| 九色丨蝌蚪丨成人| 国产一区二区久久精品| 三级在线观看免费大全| 影音先锋日韩资源| 国产精品久久久久久久久久久久久久| 国产又粗又猛又爽| 成人h动漫精品一区二区| 欧美福利一区二区三区| 老司机午夜在线| 亚洲1区2区3区视频| 国产成人a亚洲精v品无码| 日本欧美韩国| 日韩欧美国产综合在线一区二区三区| 久久久午夜精品福利内容| 欧美美乳视频| 欧美激情免费看| 无码视频在线观看| 懂色av一区二区三区免费观看 | 国产精品免费视频xxxx| 国产99久久九九精品无码免费| 99久久精品99国产精品| 影音先锋欧美在线| 黑人巨大精品| 欧美大黄免费观看| 成人免费视频入口| 一区二区久久| 亚洲xxxxx性| 岛国在线大片| 午夜私人影院久久久久| 久久久久xxxx| 激情婷婷综合| 97精品在线观看| 国产色视频在线| 日本一区二区三区国色天香| 日本福利视频一区| 国产精品一区二区精品视频观看| 亚洲美女动态图120秒| 91在线播放观看| 青青草国产成人99久久| 久久精品午夜一区二区福利| 手机av在线播放| 欧美日韩高清一区二区不卡| 国产网站无遮挡| 欧美日韩亚洲国产精品| 91免费国产网站| 日本亚洲精品| 欧美在线视频不卡| 动漫精品一区二区三区| 亚洲经典三级| 国产亚洲欧美一区二区| jizzjizz亚洲| 91精品在线麻豆| 天堂а√在线中文在线鲁大师| 久久激情视频| 欧美高清视频一区二区三区在线观看| 暧暧视频在线免费观看| 日韩精品在线网站| 亚洲国产精品免费在线观看| 精品无码三级在线观看视频| 亚洲va久久久噜噜噜久久狠狠 | 亚洲一区不卡| 美国av一区二区三区| 中文字幕在线高清| 亚洲人成人99网站| 久久精品视频5| 久久久久久久久久久99999| 青青草综合在线| 亚洲乱码一区| 韩国福利视频一区| 天天摸天天干天天操| 午夜精品福利一区二区三区av| 日本泡妞xxxx免费视频软件| 欧美a级片一区| 99精品国产一区二区| 牛牛精品视频在线| 亚洲加勒比久久88色综合| 国产污片在线观看| 26uuu精品一区二区在线观看| 日韩av在线第一页| 欧美精品momsxxx| 国产精品一区久久| 成人福利在线观看视频| 日韩欧美在线1卡| 日本三级中文字幕| 久久综合九色综合欧美亚洲| 国产综合免费视频| 日韩久久视频| 亚洲xxxx视频| 黄色污网站在线观看| 亚洲欧美日韩精品久久亚洲区| 国产精品第六页| 日韩理论片在线| 天天躁日日躁狠狠躁av麻豆男男| 亚洲综合另类| 一区二区免费在线观看| 欧美久久一区二区三区| 久久免费高清视频| 国产精品四虎| 日韩欧美二区三区| 久久国产视频一区| 中文字幕日本不卡| 欧美夫妇交换xxx| 视频一区二区三区中文字幕| 国产91av视频在线观看| 国产欧美一区二区三区米奇| 国产精品69久久久久| 成人短视频在线| 国产韩日影视精品| 欧美高清无遮挡| 欧美日韩国产亚洲沙发| 欧美日韩国产片| 国产精品999久久久| 欧美国产精品一区二区| 女人扒开双腿让男人捅 | 精品一区av| 欧美韩日精品| 久久国产精品高清| 只有精品亚洲| 国产成人免费av| 国产网红在线观看| 尤物yw午夜国产精品视频| jlzzjlzz亚洲女人18| 色久优优欧美色久优优| 欧美黑吊大战白妞| 久久精品视频网| 最新中文字幕日本| 蜜臀av性久久久久蜜臀aⅴ| 国产一区二区三区小说| 欧美岛国激情| 日本福利一区二区三区| 97久久精品| 国产免费亚洲高清| 中文在线а√天堂| 97免费中文视频在线观看| h视频在线免费观看| 一区二区亚洲精品国产| 天堂中文在线观看视频| 欧美一级精品大片| 91在线观看喷潮| 在线欧美一区二区| 综合网在线观看| 婷婷久久综合九色综合绿巨人 | 亚洲一区二区三区三| 亚洲精品自拍视频在线观看| 91原创在线视频| 污网站免费观看| 国产精品一二二区| 一区二区三区四区毛片| 美女国产一区二区三区| 天天干在线影院| 久久精品日韩欧美| 欧美三级午夜理伦三级| 一本色道久久综合一区| 国产真实老熟女无套内射| 欧美va天堂| 视色,视色影院,视色影库,视色网| 日韩精品四区| 一区二区三区不卡在线| 日韩成人精品一区二区| 特级西西444www大精品视频| 人人狠狠综合久久亚洲婷婷| 日本一区二区精品视频| 欧美猛男做受videos| 日本不卡在线播放| 国产欧美日韩影院| 欧美重口乱码一区二区| 综合亚洲自拍| 欧美亚洲免费高清在线观看| 五月国产精品| 日本一区二区久久精品| 精品一区二区三区中文字幕老牛| 欧美一区二区视频17c| 国产精品中文字幕亚洲欧美| 欧美在线视频二区| 国产精品久久久久久| 最新中文字幕久久| 好看的av在线不卡观看| 日本午夜激情视频| 亚洲影院一区| 男女视频在线看| 精品一区二区日韩| 中国特级黄色片| 97久久超碰精品国产| mm131美女视频| 中文字幕制服丝袜一区二区三区| 中日韩一级黄色片| 一区二区三区精密机械公司| 黄色小说在线观看视频| 色综合av在线| 一区二区三区黄| 精品国产乱码久久| 嫩草在线播放| 久久久精品影院| www.综合网.com| 国产v综合v亚洲欧美久久| 欧美在线se| 国产精品一级久久久| 国产成人1区| 超碰97在线看| 久久中文在线| 亚洲熟女乱综合一区二区| 91视频在线观看免费| 任你操精品视频| 亚洲福利视频导航| 黄色av一区二区| 日韩欧美成人午夜| www 日韩| 国内精品久久久久久中文字幕| 欧美影视资讯| 丁香五月网久久综合| 国精一区二区| 野外做受又硬又粗又大视频√| 三级精品在线观看| 2025中文字幕| 亚洲国产精品99久久久久久久久| 免费看一级一片| 欧美私人免费视频| 无码精品人妻一区二区三区影院| 日韩视频―中文字幕| 亚洲性受xxx喷奶水| 成人综合国产精品| 国产一区二区在线| 91免费黄视频| 国产精品一区二区三区网站| 国产jk精品白丝av在线观看| 一区二区三区在线视频播放| 午夜一级黄色片| 日韩高清免费在线| 黄色羞羞视频在线观看| 91久久久久久国产精品| 国产伦一区二区三区| 欧美精品卡一卡二| 国产一区久久久| 天堂av免费在线| 色哟哟一区二区在线观看| 丁香花免费高清完整在线播放| 日韩亚洲一区二区| 人人鲁人人莫人人爱精品| 国产日韩精品一区观看| 欧美阿v一级看视频| 亚洲天堂2018av| 国产亚洲欧美一区在线观看| 免费在线不卡视频| 精品sm捆绑视频| 麻豆av在线免费观看| 91麻豆国产精品| 小小影院久久| 亚洲午夜激情影院| 国产精品日日摸夜夜摸av| 亚洲 欧美 中文字幕| 国产丝袜一区二区| 成人欧美大片| 欧美日韩高清免费| 丝袜诱惑制服诱惑色一区在线观看| 99热超碰在线| 亚洲www啪成人一区二区麻豆| 国产高清在线免费| 成人97在线观看视频| 99er精品视频| 日本xxxxx18| 国产精品影音先锋| 久久精品第一页| 欧美成人bangbros| 97人澡人人添人人爽欧美| 国产精品一区二区在线观看| 亚洲每日更新| 野花社区视频在线观看| 欧美日韩精品中文字幕| 青青九九免费视频在线| 日韩av免费在线播放| 国产精品探花在线观看| 国产精品自拍视频在线| 成人欧美一区二区三区白人 | 欧美成人aaaaⅴ片在线看| 亚洲福利视频久久| 自拍偷拍亚洲视频| 日本在线播放不卡| 美洲天堂一区二卡三卡四卡视频| 蜜桃av.com| 日韩欧美国产一区在线观看| a'aaa级片在线观看| 六月婷婷久久| 蜜桃av一区二区三区电影| 国产免费美女视频| 精品国产乱码久久久久久闺蜜| 在线观看v片| 在线视频精品一区| 粉嫩13p一区二区三区| 日韩欧美成人一区二区三区| 国产亚洲精品美女| 精品中文字幕一区二区三区| 成人av在线不卡| 91蜜桃视频在线| 91 中文字幕| 91国产美女在线观看| 日韩综合一区| 成人免费看片载| 欧美亚洲一区二区在线观看| 成人免费在线| 欧美日韩精品免费看| 九一久久久久久| 女人十八岁毛片| xvideos成人免费中文版| 久草精品视频| 午夜国产福利在线观看| 欧美日韩精品在线观看| 免费av不卡| 欧美不卡三区| 国产成a人亚洲精| 在线免费一区二区| 欧美激情在线观看视频| 成人高清电影网站| 亚洲自拍偷拍精品| 777奇米成人网| 自拍网站在线观看| 黄色片免费在线观看视频| 国产亚洲人成网站| 欧美自拍第一页| 91久久久在线| 秋霞午夜鲁丝一区二区老狼| 日本网站在线免费观看| 久久精品亚洲94久久精品| 国产精品午夜一区二区三区|