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

Argo Rollouts 實現藍綠/金絲雀發布

云計算
Argo Rollouts 是一個 Kubernetes Operator 實現,它為 Kubernetes 提供更加高級的部署能力,如藍綠、金絲雀、金絲雀分析、實驗和漸進式交付功能,為云原生應用和服務實現自動化、基于 GitOps 的逐步交付。

[[410862]]

Argo Rollouts 是一個 Kubernetes Operator 實現,它為 Kubernetes 提供更加高級的部署能力,如藍綠、金絲雀、金絲雀分析、實驗和漸進式交付功能,為云原生應用和服務實現自動化、基于 GitOps 的逐步交付。

支持如下特性:

  • 藍綠更新策略
  • 金絲雀更新策略
  • 更加細粒度、加權流量拆分
  • 自動回滾
  • 手動判斷
  • 可定制的指標查詢和業務 KPI 分析
  • Ingress 控制器集成:NGINX,ALB
  • 服務網格集成:Istio,Linkerd,SMI
  • Metrics 指標集成:Prometheus、Wavefront、Kayenta、Web、Kubernetes Jobs、Datadog、New Relic

實現原理

與 Deployment 對象類似,Argo Rollouts 控制器將管理 ReplicaSets 的創建、縮放和刪除,這些 ReplicaSet 由 Rollout 資源中的 spec.template 定義,使用與 Deployment 對象相同的 pod 模板。

當 spec.template 變更時,這會向 Argo Rollouts 控制器發出信號,表示將引入新的 ReplicaSet,控制器將使用 spec.strategy 字段內的策略來確定從舊 ReplicaSet 到新 ReplicaSet 的 rollout 將如何進行,一旦這個新的 ReplicaSet 被放大(可以選擇通過一個 Analysis),控制器會將其標記為穩定。

如果在 spec.template 從穩定的 ReplicaSet 過渡到新的 ReplicaSet 的過程中發生了另一次變更(即在發布過程中更改了應用程序版本),那么之前的新 ReplicaSet 將縮小,并且控制器將嘗試發布反映更新 spec.template 字段的 ReplicasSet。

相關概念

在繼續之前我們先來了解一些基本的概念。

Rollout(滾動)

Rollout 是一個 Kubernetes 的 CRD 資源,相當于 Kubernetes Deployment 對象,在需要更高級的部署或漸進式交付功能的情況下,它旨在取代 Deployment 對象,Rollout 提供了 Kubernetes Deployment 所不能提供的功能。

  • 藍綠部署
  • 金絲雀部署
  • 與 Ingress 控制器和服務網格整合,實現高級流量路由
  • 與用于藍綠和金絲雀分析的指標提供者集成
  • 根據成功或失敗的指標,自動發布或回滾

漸進式交付

漸進式交付是以受控和漸進的方式發布產品更新的過程,從而降低發布的風險,通常將自動化和指標分析結合起來以驅動更新的自動升級或回滾。

漸進式交付通常被描述為持續交付的演變,將 CI/CD 中的速度優勢擴展到部署過程。通過將新版本限制在一部分用戶,觀察和分析正確的行為,然后逐漸增加更多的流量,同時不斷驗證其正確性。

部署策略

雖然業界使用了一致的術語來描述各種部署策略,但這些策略的實現往往因工具而異,為了明確 Argo Rollouts 的行為方式,以下是 Argo Rollouts 提供的各種部署策略實施的描述。

  • RollingUpdate(滾動更新):慢慢地用新版本替換舊版本,隨著新版本的出現,舊版本會慢慢縮減,以保持應用程序的總數量。這是 Deployment 對象的默認策略。
  • Recreate(重新創建):Recreate 會在啟動新版本之前刪除舊版本的應用程序,這可確保應用程序的兩個版本永遠不會同時運行,但在部署期間會出現停機時間。
  • Blue-Green(藍綠):藍綠發布(有時稱為紅黑)指同時部署了新舊兩個版本的應用程序,在此期間,只有舊版本的應用程序會收到生產流量,這允許開發人員在將實時流量切換到新版本之前針對新版本進行測試。

  • Canary(金絲雀):金絲雀發布指將一部分用戶暴露在新版本的應用程序中,而將其余流量提供給舊版本,一旦新版本被驗證是正確的,新版本可以逐漸取代舊版本。Ingress 控制器和服務網格,如 NGINX Ingress 和 Istio,可以使金絲雀的流量拆分模式比原生的更復雜(例如,實現非常細粒度的流量分割,或基于 HTTP 頭的分割)。

上面顯示了一個有兩個階段的金絲雀(10%和33%的流量進入新版本),通過使用 Argo Rollouts,我們可以根據實際的使用情況定義確切的階段數和流量百分比。

場景

  1. 用戶希望在新版本開始為生產環境提供服務之前對其進行最后一分鐘的功能測試,通過 BlueGreen 策略,Argo Rollouts 允許用戶指定預覽服務和活動服務,Rollout 將配置預覽服務以將流量發送到新版本,同時活動服務繼續接收生產流量。一旦達到要求,則可以將預覽服務提升為新的活動服務。
  2. 在新版本開始接收實時流量之前,需要預先執行一套通用步驟,通過使用 BlueGreen 策略,用戶可以在不接收來自活動服務的流量的情況下啟動新版本,一旦這些步驟執行完畢,就可以將流量切換到新版本了。
  3. 用戶希望在幾個小時內將一小部分生產流量提供給他們應用程序的新版本。之后,他們希望縮小新版本規模,并查看一些指標以確定新版本與舊版本相比是否具有性能問題,然后他們將決定是否為切換到新版本。使用金絲雀策略,rollout 可以用新版本擴大 ReplicaSet 的規模,以接收指定百分比的流量,等待指定的時間,然后將百分比設置回 0,然后等待用戶滿意后再發布,為所有的流量提供服務。
  4. 一個用戶想慢慢給新版增加生產流量,先給它一小部分的實時流量,然后等待一段時間再給新版本更多的流量,最終,新版本將接收所有生產流量。使用金絲雀策略,用戶指定他們希望新版本接收的百分比以及在百分比之間等待的時間。
  5. 用戶想要使用 Deployment 中的正常滾動更新策略,如果用戶使用沒有步驟的金絲雀策略,rollout 將使用 maxSurge 和最大不可用值來滾動到新版本。

架構

下面展示了由 Argo Rollouts 管理的 Deployment 的所有組件。

 

argo rollouts 架構

Rollout Controller

這是主控制器,用于監視集群的事件并在 Rollout 類型的資源發生更改時做出反應。控制器將讀取 rollout 的所有詳細信息,并使集群處于 rollout 定義中描述的相同狀態。

請注意,Argo Rollouts 不會篡改或響應正常 Deployment 資源上發生的任何變更,這意味著你可以在一個使用其他方法部署應用的集群中安裝 Argo Rollouts。

Rollout 資源

Rollout 資源是 Argo Rollouts 引入和管理的一種自定義 Kubernetes 資源,它與原生的 Kubernetes Deployment 資源基本兼容,但有額外的字段來控制更加高級的部署方法,如金絲雀和藍/綠部署。

Argo Rollouts 控制器將只對 Rollout 資源中的變化做出反應,不會對正常的 Deployment 資源做任何事情,所以如果你想用 Argo Rollouts 管理你的 Deployment,你需要將你的 Deployment 遷移到Rollouts。

舊版和新版的 ReplicaSets

這些是標準的 Kubernetes ReplicaSet 資源的實例,Argo Rollouts 給它們添加了一些額外的元數據,以便跟蹤屬于應用程序的不同版本。

還要注意的是,參加 Rollout 的 ReplicaSet 完全由控制器自動管理,你不應該用外部工具來篡改它們。

Ingress/Service

用戶的流量進入集群后,被重定向到合適的版本,Argo Rollouts 使用標準的 Kubernetes Service 資源,但有一些額外的元數據。

Argo Rollouts 在網絡配置上非常靈活,首先,可以在 Rollout 期間使用不同的服務,這些服務僅適用于新版本、僅適用于舊版本或兩者都適用。特別是對于 Canary 部署,Argo Rollouts 支持多種服務網格和 Ingress 解決方案,用于按特定百分比拆分流量,而不是基于 Pod 數量進行簡單的配置。

Analysis 與 AnalysisRun

Analysis 是一種自定義 Kubernetes 資源,它將 Rollout 連接到指標提供程序,并為某些指標定義特定閾值,這些閾值將決定 Rollout 是否成功。對于每個 Analysis,你可以定義一個或多個指標查詢及其預期結果,如果指標查詢正常,則 Rollout 將繼續操作;如果指標顯示失敗,則自動回滾;如果指標無法提供成功/失敗的答案,則暫停發布。

Analysis 只是關于要查詢哪些指標的模板。附加到 Rollout 的實際結果是 AnalysisRun 自定義資源,你可以在特定 Rollout 上或在集群上全局定義 Analysis 以供多個 rollout 共享。

請注意,在 Rollout 中使用 Analysis 和指標是完全可選的,你可以通過 API 或 CLI 手動暫停和促進發布或使用其他外部方法(例如冒煙測試)。你不需要僅使用 Argo Rollouts 的 Metrics 解決方案,你還可以在 Rollout 中混合自動(即基于 Analysis)和手動步驟。

除了指標之外,你還可以通過運行 Kubernetes Job 或運行 webhook 來決定發布的成功與否。

Metric Providers

Argo Rollouts 包括幾個流行的指標提供者的原生集成,你可以在 Analysis 資源中使用,來自動提升或回滾發布。

CLI 和 UI(圖中未顯示)

還可以使用 Argo Rollouts CLI 或集成 UI 查看和管理 Rollout,兩者都是可選的。

安裝

直接使用下面的命令安裝 Argo Rollouts:

  1. ➜  ~ kubectl create namespace argo-rollouts 
  2. ➜  ~ kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/download/v1.0.2/install.yaml 

這里會創建一個名為 argo-rollouts 的命名空間,Argo Rollouts 控制器運行在下面。

  1. ➜  ~ kubectl get pods -n argo-rollouts 
  2. NAME                             READY   STATUS    RESTARTS   AGE 
  3. argo-rollouts-6fdcf89f7c-7z2mh   1/1     Running   0          58s 

此外,我們還可以安裝一個 kubectl 插件,對于命令行管理和可視化發布非常方便。

我們這里是 Mac 系統,可以直接使用下面的命令進行安裝:

  1. ➜  ~ brew install argoproj/tap/kubectl-argo-rollouts 

當然也可以手動進行安裝,使用 curl 安裝 Argo Rollouts kubectl 插件:

  1. ➜  ~ curl -LO https://github.com/argoproj/argo-rollouts/releases/download/v1.0.2/kubectl-argo-rollouts-darwin-amd64 

然后賦予 kubectl-argo-rollouts 二進制文件可執行權限:

  1. ➜  ~ chmod +x ./kubectl-argo-rollouts-darwin-amd64 

將該二進制文件移動到你的 PATH 路徑下面去:

  1. ➜  ~ sudo mv ./kubectl-argo-rollouts-darwin-amd64 /usr/local/bin/kubectl-argo-rollouts 

執行下面的命令來驗證插件是否安裝成功:

  1. ➜  ~ kubectl argo rollouts version 
  2. kubectl-argo-rollouts: v1.0.2+7a23fe5 
  3.   BuildDate: 2021-06-15T19:36:10Z 
  4.   GitCommit: 7a23fe5dbf78181248c48af8e5224246434e7f99 
  5.   GitTreeState: clean 
  6.   GoVersion: go1.16.3 
  7.   Compiler: gc 
  8.   Platform: darwin/amd64 

使用

接下來我們通過幾個簡單的示例來說明 Rollout 的部署、升級、發布和中斷等操作,以此來展示 Rollouts 的各種功能。

1. 部署 Rollout

首先我們部署一個 Rollout 資源和一個針對該資源的 Kubernetes Service 對象,這里我們示例中的 Rollout 采用了金絲雀的更新策略,將 20% 的流量發送到金絲雀上,然后手動發布,最后在升級的剩余時間內逐漸自動增大流量,可以通過如下所示的 Rollout 來描述這個策略:

  1. # basic-rollout.yaml 
  2. apiVersion: argoproj.io/v1alpha1 
  3. kind: Rollout 
  4. metadata: 
  5.   name: rollouts-demo 
  6. spec: 
  7.   replicas: 5  # 定義5個副本 
  8.   strategy:  # 定義升級策略 
  9.     canary:   # 金絲雀發布 
  10.       steps:  # 發布的節奏 
  11.       - setWeight: 20 
  12.       - pause: {}  # 會一直暫停 
  13.       - setWeight: 40 
  14.       - pause: {duration: 10} 
  15.       - setWeight: 60 
  16.       - pause: {duration: 10} 
  17.       - setWeight: 80 
  18.       - pause: {duration: 10} 
  19.   revisionHistoryLimit: 2  # 下面部分其實是和 Deployment 兼容的 
  20.   selector: 
  21.     matchLabels: 
  22.       app: rollouts-demo 
  23.   template: 
  24.     metadata: 
  25.       labels: 
  26.         app: rollouts-demo 
  27.     spec: 
  28.       containers: 
  29.       - name: rollouts-demo 
  30.         image: argoproj/rollouts-demo:blue 
  31.         ports: 
  32.         - name: http 
  33.           containerPort: 8080 
  34.           protocol: TCP 
  35.         resources: 
  36.           requests: 
  37.             memory: 32Mi 
  38.             cpu: 5m 

還包括一個如下所示的 Service 資源對象:

  1. # basic-service.yaml 
  2. apiVersion: v1 
  3. kind: Service 
  4. metadata: 
  5.   name: rollouts-demo 
  6. spec: 
  7.   ports: 
  8.   - port: 80 
  9.     targetPort: http 
  10.     protocol: TCP 
  11.     name: http 
  12.   selector: 
  13.     app: rollouts-demo 

直接創建上面的兩個資源對象:

  1. ➜  ~ kubectl apply -f basic-rollout.yaml 
  2. ➜  ~ kubectl apply -f basic-service.yaml 

任何 Rollout 的初始創建都會立即將副本擴展到100%(跳過任何金絲雀升級步驟、分析等...),因為還沒有發生升級。

Argo Rollouts 的 kubectl 插件允許我們可視化 Rollout 以及相關資源對象,并展示實時狀態變化,要在部署過程中觀察 Rollout,可以通過運行插件的 get rollout --watch 命令,比如:

  1. ➜  ~ kubectl argo rollouts get rollout rollouts-demo --watch 

 

2. 更新 Rollout

上面已經部署完成,接下來就需要執行更新了,和 Deployment 類似,對 Pod 模板字段的任何變更都會導致新的版本(即 ReplicaSet)被部署,更新 Rollout 通常是修改容器鏡像的版本,然后執行 kubectl apply ,為了方便,rollouts 插件還單獨提供了一個 set image 的命令,比如這里我們運行以下所示命令,用 yellow 版本的容器更新上面的 Rollout:

  1. ➜  ~ kubectl argo rollouts set image rollouts-demo \ 
  2.   rollouts-demo=argoproj/rollouts-demo:yellow 

在 rollout 更新期間,控制器將通過 Rollout 更新策略中定義的步驟進行。這個示例的 rollout 為金絲雀設置了20%的流量權重,并一直暫停 rollout,直到用戶取消或促進發布。在更新鏡像后,再次觀察rollout,直到它達到暫停狀態。

  1. ➜  ~ kubectl argo rollouts get rollout rollouts-demo --watch 

 圖片

當 demo rollout 到達第二步時,我們可以從插件中看到,Rollout 處于暫停狀態,現在有5個副本中的1個運行新版本的 pod,其余4個仍然運行舊版本,這相當于 setWeight: 20 步驟所定義的20%的金絲雀權重。

3. Promote Rollout

經過上面的更新后,Rollout 現在處于暫停狀態,當一個 Rollout 到達一個沒有持續時間的暫停步驟時,它將一直保持在暫停狀態,直到它被恢復/提升。要手動將 Rollout 切換到下一個步驟,請運行插件的 promotion 命令。

  1. ➜  ~ kubectl argo rollouts promote rollouts-demo 

切換后 Rollout 將繼續執行剩余的步驟。在我們的例子中,剩余的步驟是完全自動化的,所以 Rollout 最終會完成步驟,直到它已經完全過渡到新版本。再次觀察 Rollout,直到它完成所有步驟。

  1. ➜  ~ kubectl argo rollouts get rollout rollouts-demo --watch 

 圖片

  • promote 命令還支持用 --full 標志跳過所有剩余步驟和分析。

可以看到 stable 版本已經切換到 revision:2 這個 ReplicaSet 了。在更新過程中,無論何時,無論是通過失敗的金絲雀分析自動中止,還是由用戶手動中止,Rollout 都會退回到 stable 版本。

4. 中斷 Rollout

接下來我們來了解如何在更新過程中手動中止 Rollout,首先,使用 set image 命令部署一個新的 red 版本的容器,并等待 rollout 再次達到暫停的步驟。

  1. ➜  ~ kubectl argo rollouts set image rollouts-demo \ 
  2.   rollouts-demo=argoproj/rollouts-demo:red 
圖片

這一次我們將中止更新,而不是將滾動切換到下一步,這樣它就回到了 stable 版本,該插件同樣提供了一個 abort 命令,可以在更新過程中的任何時候手動中止 Rollout。

  1. ➜  ~ kubectl argo rollouts abort rollouts-demo 

當中止滾動時,它將擴大 ReplicaSet 的 stable 版本(在本例中是 yellow 版本),并縮小任何其他版本。盡管 ReplicaSet 的穩定版本可能正在運行,并且是健康的,但整個 Rollout 仍然被認為是退化的,因為期望的版本(red 版本)不是實際運行的版本。

圖片

為了使 Rollout 再次被認為是健康的而不是有問題的版本,有必要將所需的狀態改回以前的穩定版本。在我們的例子中,我們可以簡單地使用之前的 yellow 鏡像重新運行 set image 命令即可。

  1. ➜  ~ kubectl argo rollouts set image rollouts-demo \ 
  2.   rollouts-demo=argoproj/rollouts-demo:yellow 

運行這個命令后,可以看到 Rollout 立即變成了 health 狀態,而且沒有任何關于創建新 ReplicaSets 的動態。

當 Rollout 還沒有達到預期狀態(例如,它被中止了,或者正在更新中),而穩定版本的資源清單被重新應用,Rollout 檢測到這是一個回滾,而不是一個更新,并將通過跳過分析和步驟快速部署穩定的 ReplicaSet。

上面例子中的 Rollout 沒有使用 Ingress 控制器或服務網格來控制流量。相反,它使用正常的 Kubernetes Service 來實現近似的金絲雀權重,基于新舊副本數量的比例來實現。所以,這個 Rollout 有一個限制,即它只能實現 20% 的最小加權,通過擴展5個pod中的一個來運行新版本。為了實現更細粒度的金絲雀,這就需要一個 Ingress 控制器或服務網格了,這部分我們可以在后續服務網格的學習中來介紹。

Dashboard

Argo Rollouts Kubectl 插件可以提供一個本地 Dashboard,來可視化你的 Rollouts。

要啟動這個 Dashboard,需要在包含 Rollouts 資源對象的命名空間中運行 kubectl argo rollouts dashboard 命令,然后訪問localhost:3100 即可。

點擊 Rollout 可以進行詳細頁面,在詳細頁面可以看到 Rollout 的配置信息,還可以直接在 UI 界面上執行一些常用的操作,比如重啟、重啟、中斷等。

 

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

2023-10-08 07:34:04

2022-02-17 13:09:55

金絲雀部署服務集群測試

2022-11-30 08:00:00

金絲雀部署IT測試

2021-07-29 05:09:54

Linkerd金絲雀部署Flagger

2021-10-08 20:12:22

微服務架構Service

2022-08-22 10:40:40

Kubernete部署分析運行

2021-06-15 05:52:33

Linkerd canary網絡技術

2023-09-28 07:34:33

2024-04-01 13:04:01

停機部署滾動部署藍綠部署

2024-01-18 08:24:08

2021-07-16 06:40:19

Argo RollouAnalysis云原生

2021-02-28 07:52:24

蠕蟲數據金絲雀

2021-06-03 05:48:58

GitOps 云原生Kubernetes

2023-09-05 07:24:33

Traefik加權輪詢

2021-12-27 15:01:21

KubernetesLinux命令

2021-10-14 18:21:52

架構IstioService

2025-03-04 08:53:10

2015-08-20 10:49:39

Windows 10版本

2022-08-15 20:48:28

Chrome安卓網頁

2023-03-15 18:37:43

點贊
收藏

51CTO技術棧公眾號

欧美大片在线看| 91福利在线看| 国产伦精品一区二区三区四区视频| 国产一级二级毛片| 偷拍自拍一区| 91高清在线观看| 亚洲小说欧美另类激情| 人妻精品一区二区三区| 日韩福利电影在线| 欧美精品在线极品| 日韩视频免费大全中文字幕| 久久久久久久久四区三区| 少妇久久久久久久| 97国产精品| 色综合久久中文综合久久97| 亚洲国产精品影视| 五月激情婷婷网| 美女性感视频久久| 久久久最新网址| 538精品视频| 国产 日韩 欧美 综合 一区| 欧美曰成人黄网| 日本一级淫片演员| 免费一级在线观看| 久久五月激情| 久久久爽爽爽美女图片| 美女网站视频色| 老牛影视av一区二区在线观看| 一区二区三区精密机械公司| 手机看片福利永久国产日韩| 色欲av永久无码精品无码蜜桃| 久久成人精品无人区| 91chinesevideo永久地址| 在线观看黄网址| 国产欧美日韩| 国产视频久久久久久久| 师生出轨h灌满了1v1| 日本亚洲欧洲无免费码在线| 91国在线观看| 成人综合视频在线| heyzo高清中文字幕在线| 亚洲天天做日日做天天谢日日欢| 日本高清不卡一区二区三| 三区在线观看| 成人亚洲一区二区一| 成人福利视频在线观看| 中文无码av一区二区三区| 香蕉亚洲视频| 91国内产香蕉| 日本熟女一区二区| 亚洲激情偷拍| 久久久久久亚洲精品不卡| 久久久91视频| 欧美激情91| 精品国产欧美一区二区三区成人| 蜜桃av乱码一区二区三区| 欧美猛男男男激情videos| 日韩精品丝袜在线| 搡老熟女老女人一区二区| 成人看片黄a免费看视频| 欧美不卡激情三级在线观看| 中文字幕第六页| 日本在线成人| 精品久久久久久久久久久久久久久久久 | 亚洲精品国产a| 好色先生视频污| 污污片在线免费视频| 亚洲精品成人精品456| 日韩极品视频在线观看| 国产乱码午夜在线视频| 丁香五六月婷婷久久激情| 免费在线激情视频| 精品无人乱码一区二区三区| 欧美色中文字幕| 九九热免费在线观看| 日韩欧洲国产| 亚洲国产99精品国自产| 男生草女生视频| 日本高清免费电影一区| 欧美精品在线观看| 日韩在线视频免费播放| 日本免费新一区视频| 91系列在线播放| 你懂的网站在线| 久久久影院官网| 亚洲福利av| 亚洲资源一区| 欧美视频第一页| 小明看看成人免费视频| 超碰精品在线观看| 国产亚洲精品久久久久久777| 三级黄色在线观看| 亚洲福利精品| 国产精品偷伦一区二区 | 亚洲第一网中文字幕| 国产精品815.cc红桃| 午夜av一区| 欧美性受xxxx黑人猛交| 一级做a爰片久久毛片16| 成人性视频免费网站| 视频一区三区| 3344国产永久在线观看视频| 欧美性色黄大片| 亚洲日本久久久| 色综合咪咪久久网| 97在线视频免费| 国产精品久久久久久久免费看 | 国产精品毛片在线| 国产噜噜噜噜久久久久久久久| 韩国av永久免费| 国产精品萝li| 国产欧美高清在线| 999久久久久久久久6666| 国产一区二区av| 日本三级免费看| 国产最新精品精品你懂的| 麻豆传媒一区二区| 日韩av官网| 欧美理论电影在线| 韩国三级hd中文字幕| 91久久夜色精品国产九色| 成人精品网站在线观看| 狠狠色伊人亚洲综合网站l| 亚洲一区二区av在线| 亚洲三级在线观看视频| 欧美最新另类人妖| 欧美怡春院一区二区三区| 国产黄色大片网站| 国产精品伦理在线| 亚州精品一二三区| 美日韩中文字幕| 97精品一区二区三区| 亚洲国产精品久久久久久久| 中文字幕一区二区三区色视频| 免费av网址在线| 久久精品国产亚洲5555| 久久国产精彩视频| 国产精品久久欧美久久一区| 国产精品网站一区| 中文久久久久久| 国语产色综合| 日产精品久久久一区二区福利| 香蕉国产在线视频| 午夜伊人狠狠久久| 欧产日产国产精品98| 极品日韩av| 国产美女精品在线观看| 国产黄a三级三级三级av在线看| 欧美视频一二三区| 在线观看天堂av| 蜜乳av一区二区三区| 五月天国产一区| 久久野战av| 一区二区欧美日韩视频| 中文字幕视频免费观看| 国产日韩欧美在线一区| 丁香婷婷激情网| 欧美日韩一区二区三区视频播放| 国产999精品久久久| 国产精品一级伦理| 欧美四级电影在线观看| 蜜桃av.com| 国产精品综合久久| 2019日韩中文字幕mv| 欧美变态网站| 日本中文字幕不卡免费| 午夜激情视频在线观看| 欧美老人xxxx18| 免费毛片在线播放免费| www.66久久| 99re在线视频免费观看| 凹凸成人精品亚洲精品密奴| 国产日韩精品综合网站| 新版中文在线官网| 日韩成人激情在线| 黄色一区二区视频| 亚洲卡通动漫在线| 91视频啊啊啊| 日韩国产欧美在线观看| 中文字幕一区二区三区精彩视频 | 6080日韩午夜伦伦午夜伦| 欧美激情图片小说| 91香蕉视频mp4| www午夜视频| 国内视频精品| 视频在线一区二区三区| www国产精品| 国产精品福利在线观看网址| www在线视频| 日韩电影中文字幕在线| 亚洲影院一区二区三区| 亚洲成年人影院| 婷婷综合在线视频| 粉嫩一区二区三区性色av| 国产1区2区在线| 亚洲精品国产首次亮相| 久久99导航| 国产精品麻豆| 日本国产高清不卡| 丝袜国产在线| 最近的2019中文字幕免费一页| 精品人妻无码一区二区| 91成人国产精品| 久久香蕉精品视频| 日韩毛片在线免费观看| 亚洲欧美在线不卡| 国产精品亚洲人在线观看| av动漫免费看| 欧美日韩亚洲三区| 亚洲精品不卡| 日韩欧美天堂| 99久久一区三区四区免费| 国产91亚洲精品久久久| 91精品国产91久久久久久| a级片国产精品自在拍在线播放| 亚洲视频国产视频| 黄色aaa毛片| 欧美久久一区二区| 日本黄色中文字幕| 精品女厕一区二区三区| 深夜福利影院在线观看| 欧美国产日本韩| 免费a级黄色片| 成人va在线观看| 91精产国品一二三| 韩国v欧美v日本v亚洲v| 嫩草影院国产精品| 老司机午夜精品视频在线观看| 久久久久久免费看| 亚洲天堂久久| 成人小视频在线观看免费| 日韩一区三区| 一级二级三级欧美| 色999日韩| 亚洲黄色成人久久久| 精品国产一区二区三区噜噜噜| 久久精彩视频| 精品视频高潮| 国产精品中出一区二区三区| 欧美激情三级| 99久热re在线精品视频| 国产亚洲精aa在线看| 成人午夜在线观看| 日韩三区四区| 91精品久久久久久久久不口人| 成人黄色毛片| 国产精品综合不卡av| 粉嫩av一区二区三区四区五区| 国产成人精品视频在线观看| 涩涩视频网站在线观看| 欧美做受高潮电影o| 成人勉费视频| 国产精品激情av在线播放| 精品无人乱码一区二区三区| 国产欧美在线看| 国产精区一区二区| 97人人香蕉| 国产女人18毛片水真多18精品| 国产福利不卡| 欧美精品国产白浆久久久久| 精品卡一卡二| 九热爱视频精品视频| 亚洲成人午夜在线| 91日韩视频| 国内少妇毛片视频| 欧美资源在线| 色播五月综合网| 国产乱码精品一区二区三区忘忧草| 少妇极品熟妇人妻无码| 99久久久久免费精品国产| 欧美多人猛交狂配| 国产精品久久久久婷婷二区次| 性色av无码久久一区二区三区| 夜夜嗨av一区二区三区| 亚洲男人的天堂在线视频| 色婷婷综合久久久| 国产尤物在线观看| 精品日韩欧美一区二区| 欧美少妇另类| 久久国产精品偷| 99久久精品免费看国产小宝寻花| 欧洲亚洲妇女av| 亚洲免费一区| 久久伊人资源站| 91精品观看| 中国丰满人妻videoshd | 香蕉久久国产av一区二区| 国产午夜精品视频| www国产在线观看| 91av在线免费观看| 国产欧美日韩电影| 美国av一区二区三区| 91精品国产成人观看| 欧美 日韩 国产 高清| 卡一卡二国产精品| 亚洲av成人精品一区二区三区| 中文成人av在线| 国产无遮挡又黄又爽又色| 欧美午夜精品久久久久久超碰| 亚洲av无码国产综合专区| 亚洲香蕉伊综合在人在线视看| 三级福利片在线观看| 国产精品对白刺激| 久久久免费毛片| 国产一级黄色录像片| 久久久999| 在线播放第一页| 国产精品久久看| 天天干天天干天天干天天| 日韩一区二区精品| 在线播放日本| 国产经典一区二区| 日韩超碰人人爽人人做人人添| 在线观看一区二区三区三州| 久久国产日本精品| 中文字幕人妻一区二区三区| 亚洲乱码中文字幕综合| 在线观看国产一区二区三区| 日韩国产欧美精品一区二区三区| av在线app| 国产欧美日韩亚洲精品| 深夜福利久久| 欧美性大战久久久久xxx| 风间由美一区二区三区在线观看| 波多野结衣在线网址| 欧美丝袜丝nylons| 国产高清在线| 国产极品精品在线观看| 久久99免费视频| 97国产在线播放| 成人av在线播放网址| 青娱乐国产在线| 欧美一区2区视频在线观看| 天堂а√在线官网| 国产美女搞久久| 日韩成人三级| 男女视频在线看| 国产精品午夜免费| 亚洲男人天堂网址| 国产亚洲精品美女久久久| 日本综合字幕| 品久久久久久久久久96高清| 老司机久久99久久精品播放免费| 国产吞精囗交久久久| 日韩欧美在线一区| 黄色在线免费观看大全| 国产成人精品国内自产拍免费看| 日韩极品少妇| 国产免费成人在线| 2022国产精品视频| 成人av网站在线播放| 国产亚洲一区精品| 亚洲高清国产拍精品26u| 一个色的综合| 国产成人综合在线播放| 久久国产在线视频| 日韩高清a**址| 神马久久资源| 亚洲精品日韩精品| 国内精品伊人久久久久av一坑| av激情在线观看| 精品国产免费视频| 中文av在线全新| 五月天亚洲综合| 国产在线精品免费| 黄网站免费在线| 亚洲男人av在线| 99亚洲伊人久久精品影院| 精品一区二区成人免费视频 | 欧美午夜www高清视频| 国产天堂素人系列在线视频| 国产欧美欧洲在线观看| 在线中文一区| 亚洲精品乱码久久| 欧洲一区二区三区免费视频| 日韩免费网站| 国产91社区| 日韩中文字幕区一区有砖一区| 成人性视频免费看| 精品少妇一区二区三区日产乱码 | 亚洲综合在线做性| 亚洲国内自拍| 久久视频精品在线观看| 欧美一区二区久久| 亚洲女同志freevdieo| 亚洲一卡二卡| 成人免费视频一区| 国产裸体美女永久免费无遮挡| 免费不卡在线观看av| 亚洲三级网页| 永久免费黄色片| 欧美午夜精品在线| 97超碰在线公开在线看免费| 黄色一区三区| 国产真实乱对白精彩久久| 91在线看视频| 久热99视频在线观看| 亚洲区小说区图片区qvod按摩| 国产无遮挡猛进猛出免费软件 | 国产午夜无码视频在线观看|