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

Linkerd 2.10(Step by Step)—Ingress 流量

網(wǎng)絡 通信技術
當 ingress controller 注入 linkerd.io/inject: enabled annotation 時, Linkerd 代理將遵守 ingress controller 做出的負載平衡決策, 而不是應用自己的 EWMA 負載平衡。

[[406692]]

 Linkerd 2.10 中文手冊持續(xù)修正更新中:

  • https://linkerd.hacker-linner.com

從 Linkerd 2.9 版開始,有兩種方式可以讓 Linkerd 代理 與您的 Ingress Controller 一起運行。

默認模式

當 ingress controller 注入 linkerd.io/inject: enabled annotation 時, Linkerd 代理將遵守 ingress controller 做出的負載平衡決策, 而不是應用自己的 EWMA 負載平衡。這也意味著 Linkerd 代理不會為此流量使用服務配置文件(Service Profiles), 因此不會公開每個路由的指標(per-route metrics)或進行流量拆分(traffic splitting)。

如果您的 Ingress controller 注入沒有特定于 Ingress 的額外配置, Linkerd 代理將在默認模式下運行。

代理 Ingress Mode

如果您需要 Linkerd 功能,如服務配置文件(Service Profiles)、流量拆分(Traffic Splits)等, 則需要進行額外的配置才能使 Ingress 控制器的 Linkerd 代理在入口模式下運行。這會導致 Linkerd 根據(jù)其 :authority、Host 或 l5d-dst-override headers 而不是原始目的地來路由請求,這允許 Linkerd 執(zhí)行自己的負載平衡 并使用服務配置文件(Service Profiles)來公開每個路由的指標并啟用流量拆分(traffic splitting)。

通過在 Ingress Controller 的 Pod Spec 中添加以下注釋, 即 linkerd.io/inject: ingress,可以使 Ingress 控制器 deployment 的代理 在 ingress 模式下運行。

同樣可以通過在注入命令中使用 --ingress 標志來完成。

  1. kubectl get deployment <ingress-controller> -n <ingress-namespace> -o yaml | linkerd inject --ingress - | kubectl apply -f - 

這可以通過檢查 Ingress 控制器的 pod 是否具有相關的 annotation 集來驗證。

  1. kubectl describe pod/<ingress-pod> | grep "linkerd.io/inject: ingress" 

對于 ingress,大多數(shù)控制器默認情況下不會將傳入 header (example.com) 重寫 為內(nèi)部服務名稱(example.default.svc.cluster.local)。在這種情況下,當 Linkerd 收到傳出請求時,它認為該請求的目的地 是 example.com 而不是 example.default.svc.cluster.local。這會造成一個非常令人沮喪的無限循環(huán)!

幸運的是,許多入口控制器允許您修改 Host header 或向傳出請求添加自定義標頭。以下是常見入口控制器的一些說明:

  • Nginx
  • Traefik
  • GCE
  • Ambassador
  • Gloo
  • Contour
  • Kong

如果您的 ingress controller 正在終止 HTTPS, Linkerd 將只為傳入請求提供 TCP 統(tǒng)計信息, 因為代理看到的所有流量都是加密的。它將提供從控制器到后端服務的傳出請求的完整統(tǒng)計信息, 因為這是從控制器到 Linkerd 的純文本。

如果請求在注入您的 ingress controller 后遇到 2-3 秒的延遲, 這可能是因為 type: LoadBalancer 的服務隱藏了客戶端源 IP。您可以通過在入口的服務定義中設置 externalTrafficPolicy: Local 來解決此問題。

雖然 Kubernetes Ingress API 定義允許 backend 的 servicePort 是字符串值, 但 Linkerd 只能使用數(shù)字 servicePort 值。如果遇到字符串值,Linkerd 將默認使用端口 80。

Nginx

這里以 emojivoto 為例

示例入口定義是:

  1. apiVersion: extensions/v1beta1 
  2. kind: Ingress 
  3. metadata: 
  4.   name: web-ingress 
  5.   namespace: emojivoto 
  6.   annotations: 
  7.     kubernetes.io/ingress.class: "nginx" 
  8.     nginx.ingress.kubernetes.io/configuration-snippet: | 
  9.       proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port; 
  10.       grpc_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port; 
  11.  
  12. spec: 
  13.   rules: 
  14.   - host: example.com 
  15.     http: 
  16.       paths: 
  17.       - backend: 
  18.           serviceName: web-svc 
  19.           servicePort: 80 

這里的重要 annotation 是:

  1. nginx.ingress.kubernetes.io/configuration-snippet: | 
  2.     proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port; 
  3.     grpc_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port; 

如果您使用的是 auth-url, 則還需要添加以下代碼段。

  1. nginx.ingress.kubernetes.io/auth-snippet: | 
  2.    proxy_set_header l5d-dst-override authn-name.authn-namespace.svc.cluster.local:authn-port; 
  3.    grpc_set_header l5d-dst-override authn-name.authn-namespace.svc.cluster.local:authn-port; 

這個例子結合了 NGINX 用于代理 HTTP 和 gRPC 流量的兩個指令。實際上,根據(jù)服務使用的協(xié)議,只需要設置 proxy_set_header 或 grpc_set_header 指令, 但是 NGINX 將忽略任何不需要的指令。

此示例入口定義為具有使用不同端口的多個端點的應用程序使用單個入口。

  1. apiVersion: extensions/v1beta1 
  2. kind: Ingress 
  3. metadata: 
  4.   name: web-ingress 
  5.   namespace: emojivoto 
  6.   annotations: 
  7.     kubernetes.io/ingress.class: "nginx" 
  8.     nginx.ingress.kubernetes.io/configuration-snippet: | 
  9.       proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port; 
  10.       grpc_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port; 
  11. spec: 
  12.   rules: 
  13.   - host: example.com 
  14.     http: 
  15.       paths: 
  16.       - path: / 
  17.         backend: 
  18.           serviceName: web-svc 
  19.           servicePort: 80 
  20.       - path: /another-endpoint 
  21.         backend: 
  22.           serviceName: another-svc 
  23.           servicePort: 8080 

Nginx 將添加一個 l5d-dst-override header 來 指示 Linkerd 請求的目的地是什么服務。您需要同時包含 Kubernetes service FQDN (web-svc.emojivoto.svc.cluster.local) 和目標 servicePort。

要對此進行測試,您需要獲取控制器的外部 IP 地址。如果您通過 helm 安裝了 nginx-ingress,則可以通過運行以下命令獲取該 IP 地址:

  1. kubectl get svc --all-namespaces \ 
  2.   -l app=nginx-ingress,component=controller \ 
  3.   -o=custom-columns=EXTERNAL-IP:.status.loadBalancer.ingress[0].ip 

然后你可以通過 curl 使用這個 IP:

  1. curl -H "Host: example.com" http://external-ip 

如果您使用默認后端,則需要為該后端創(chuàng)建入口定義 以確保設置了 l5d-dst-override header。例如:

  1. apiVersion: extensions/v1beta1 
  2. kind: Ingress 
  3. metadata: 
  4.   namedefault-ingress 
  5.   namespace: backends 
  6.   annotations: 
  7.     kubernetes.io/ingress.class: "nginx" 
  8.     nginx.ingress.kubernetes.io/configuration-snippet: | 
  9.       proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port; 
  10.       grpc_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port; 
  11. spec: 
  12.   backend: 
  13.     serviceName: default-backend 
  14.     servicePort: 80 

Traefik

這里以 emojivoto 為例,看一下 getting started 以復習如何安裝它。

使用 Traefik 作為 Linkerd ingress 的最簡單方法是使用 ingress.kubernetes.io/custom-request-headers 配置 Kubernetes Ingress resource,如下所示:

  1. apiVersion: extensions/v1beta1 
  2. kind: Ingress 
  3. metadata: 
  4.   name: web-ingress 
  5.   namespace: emojivoto 
  6.   annotations: 
  7.     kubernetes.io/ingress.class: "traefik" 
  8.     ingress.kubernetes.io/custom-request-headers: l5d-dst-override:web-svc.emojivoto.svc.cluster.local:80 
  9. spec: 
  10.   rules: 
  11.   - host: example.com 
  12.     http: 
  13.       paths: 
  14.       - backend: 
  15.           serviceName: web-svc 
  16.           servicePort: 80 

這里的重要 annotation 是:

  1. ingress.kubernetes.io/custom-request-headers: l5d-dst-override:web-svc.emojivoto.svc.cluster.local:80 

Traefik 將添加一個 l5d-dst-override header 來指示 Linkerd 請求的目的地是什么服務。您需要同時包含 Kubernetes service FQDN (web-svc.emojivoto.svc.cluster.local) 和目標 servicePort。有關更多信息,請參閱 Traefik 網(wǎng)站。

要對此進行測試,您需要獲取控制器的外部 IP 地址。如果您通過 helm 安裝了 Traefik,則可以通過運行以下命令獲取該 IP 地址:

  1. kubectl get svc --all-namespaces \ 
  2.   -l app=traefik \ 
  3.   -o='custom-columns=EXTERNAL-IP:.status.loadBalancer.ingress[0].ip' 

然后你可以通過 curl 使用這個 IP:

  1. curl -H "Host: example.com" http://external-ip 

如果您使用 Traefik 的 service weights,此解決方案將不起作用, 因為 Linkerd 將始終向 l5d-dst-override 中的服務名稱發(fā)送請求。一種解決方法是使用 traefik.frontend.passHostHeader: "false" 代替。請注意,如果您使用 TLS,Traefik 和后端服務之間的連接將不會被加密。有一個open issue 可以跟蹤此問題的解決方案。

Traefik 2.x

Traefik 2.x 通過名為 IngressRoute 的 Custom Resource Definition (CRD) 添加了 對基于路徑(path)的請求路由的支持。

如果您選擇使用 IngressRoute 而不是默認的 Kubernetes Ingress resource, 那么您還需要使用 Traefik 的 Middleware Custom Resource Definition 來添加 l5d-dst-override header。

下面的 YAML 使用 Traefik CRD 為 emojivoto 應用程序生成相同的結果,如上所述。

  1. apiVersion: traefik.containo.us/v1alpha1 
  2. kind: Middleware 
  3. metadata: 
  4.   name: l5d-header-middleware 
  5.   namespace: traefik 
  6. spec: 
  7.   headers: 
  8.     customRequestHeaders: 
  9.       l5d-dst-override: "web-svc.emojivoto.svc.cluster.local:80" 
  10. --- 
  11. apiVersion: traefik.containo.us/v1alpha1 
  12. kind: IngressRoute 
  13. metadata: 
  14.   annotations: 
  15.     kubernetes.io/ingress.class: traefik 
  16.   creationTimestamp: null 
  17.   name: emojivoto-web-ingress-route 
  18.   namespace: emojivoto 
  19. spec: 
  20.   entryPoints: [] 
  21.   routes: 
  22.   - kind: Rule 
  23.     match: PathPrefix(`/`) 
  24.     priority: 0 
  25.     middlewares: 
  26.     - name: l5d-header-middleware 
  27.     services: 
  28.     - kind: Service 
  29.       name: web-svc 
  30.       port: 80 

GCE

這個例子和 Traefik 類似,也以 emojivoto 為例。查看 getting started 以復習如何安裝它。

除了在 Traefik 示例中找到的自定義 headers 之外, 它還展示了如何將 Google Cloud Static External IP Address 和 TLS 與 Google-managed certificate 一起使用。

示例入口定義是:

  1. apiVersion: extensions/v1beta1 
  2. kind: Ingress 
  3. metadata: 
  4.   name: web-ingress 
  5.   namespace: emojivoto 
  6.   annotations: 
  7.     kubernetes.io/ingress.class: "gce" 
  8.     ingress.kubernetes.io/custom-request-headers: "l5d-dst-override: web-svc.emojivoto.svc.cluster.local:80" 
  9.     ingress.gcp.kubernetes.io/pre-shared-cert: "managed-cert-name" 
  10.     kubernetes.io/ingress.global-static-ip-name"static-ip-name" 
  11. spec: 
  12.   rules: 
  13.   - host: example.com 
  14.     http: 
  15.       paths: 
  16.       - backend: 
  17.           serviceName: web-svc 
  18.           servicePort: 80 

要使用此示例定義,請將 managed-cert-name 和 static-ip-name 替換為您項目中定義的短名稱(n.b. 使用 IP 地址的名稱,而不是地址本身)。

托管證書將需要大約 30-60 分鐘來提供,但 ingress 的狀態(tài)應該在幾分鐘內(nèi)是健康的。提供托管證書后,ingress 應該對 Internet 可見。

Ambassador

這里以 emojivoto 為例, 看一下 getting started 以復習如何安裝它。

Ambassador 不使用 Ingress 資源,而是依賴 Service。示例服務定義是:

  1. apiVersion: v1 
  2. kind: Service 
  3. metadata: 
  4.   name: web-ambassador 
  5.   namespace: emojivoto 
  6.   annotations: 
  7.     getambassador.io/config: | 
  8.       --- 
  9.       apiVersion: ambassador/v1 
  10.       kind: Mapping 
  11.       name: web-ambassador-mapping 
  12.       service: http://web-svc.emojivoto.svc.cluster.local:80 
  13.       host: example.com 
  14.       prefix: / 
  15.       add_linkerd_headers: true 
  16. spec: 
  17.   selector: 
  18.     app: web-svc 
  19.   ports: 
  20.   - name: http 
  21.     port: 80 
  22.     targetPort: http 

這里的重要 annotation 是:

  1. add_linkerd_headers: true 

Ambassador 將添加一個 l5d-dst-override header 來指示 Linkerd 的請求是為什么服務。這將包含 Kubernetes service FQDN (web-svc.emojivoto.svc.cluster.local) 和 目標 servicePort。

要使其全局化,請將 add_linkerd_headers 添加到您的 Module 配置中。

要對此進行測試,您需要獲取控制器的外部 IP 地址。如果您通過 helm 安裝了 Ambassador,則可以通過運行以下命令獲取該 IP 地址:

  1. kubectl get svc --all-namespaces \ 
  2.   -l "app.kubernetes.io/name=ambassador" \ 
  3.   -o='custom-columns=EXTERNAL-IP:.status.loadBalancer.ingress[0].ip' 

如果您已經(jīng)安裝了管理界面,這將返回兩個 IP,其中之一是 。只需忽略那個并使用實際的 IP 地址。

然后你可以通過 curl 使用這個 IP:

  1. curl -H "Host: example.com" http://external-ip 

您還可以在此處 從 Buoyant 的人們那里找到有關將 Linkerd 與 Emissary Ingress(又名Ambassador)結合使用的更詳細指南。

Gloo

這里以 books 為例,查看 Demo: Books 了解如何運行它。

如果您使用 Gateway method(gloo install gateway)安裝了 Gloo, 那么您將需要一個 VirtualService 才能將流量路由到您的 Books 應用程序。

要將 Gloo 與 Linkerd 一起使用,您可以選擇兩個選項之一。

自動的

從 Gloo v0.13.20 開始,Gloo 與 Linkerd 進行了原生集成, 因此會自動添加所需的 Linkerd header。

假設您將 gloo 安裝到默認位置,您可以通過運行以下命令啟用本機集成:

  1. kubectl patch settings -n gloo-system default \ 
  2.   -p '{"spec":{"linkerd":true}}' --type=merge 

Gloo 現(xiàn)在會自動向上游的每個 kubernetes 添加 l5d-dst-override header。

現(xiàn)在只需添加一條到上游 books app 的路由:

  1. glooctl add route --path-prefix=/ --dest-name booksapp-webapp-7000 

手動的

如本文檔開頭所述,您需要指示 Gloo 添加一個 header,以允許 Linkerd 識別將流量發(fā)送到何處。

  1. apiVersion: gateway.solo.io/v1 
  2. kind: VirtualService 
  3. metadata: 
  4.   name: books 
  5.   namespace: gloo-system 
  6. spec: 
  7.   virtualHost: 
  8.     domains: 
  9.     - '*' 
  10.     name: gloo-system.books 
  11.     routes: 
  12.     - matcher: 
  13.         prefix: / 
  14.       routeAction: 
  15.         single: 
  16.           upstream: 
  17.             name: booksapp-webapp-7000 
  18.             namespace: gloo-system 
  19.       routePlugins: 
  20.         transformations: 
  21.           requestTransformation: 
  22.             transformationTemplate: 
  23.               headers: 
  24.                 l5d-dst-override: 
  25.                   text: webapp.booksapp.svc.cluster.local:7000 
  26.                 passthrough: {} 

這里的重要 annotation 是:

  1. routePlugins: 
  2.    transformations: 
  3.      requestTransformation: 
  4.        transformationTemplate: 
  5.          headers: 
  6.            l5d-dst-override: 
  7.              text: webapp.booksapp.svc.cluster.local:7000 
  8.            passthrough: {} 

使用 Gloo 中內(nèi)置的內(nèi)容轉換引擎,您可以指示它添加所需的 l5d-dst-override header, 該 header 在上面的示例中指向服務的 FDQN 和端口:webapp.booksapp.svc.cluster.local:7000

Test

為了輕松測試這一點,您可以通過運行以下命令獲取 Gloo 代理的 URL:

  1. glooctl proxy URL 

這將返回類似于:

  1. $ glooctl proxy url 
  2. http://192.168.99.132:30969 

對于上面的示例 VirtualService,它偵聽任何域(domain)和路徑(path), 在瀏覽器中訪問代理 URL (http://192.168.99.132:30969) 應該會打開 Books 應用程序。

Contour

Contour 不支持自動設置 l5d-dst-override header。以下示例使用 Contour getting started 來演示如何手動設置所需的 header:

首先,將 Linkerd 注入您的 Contour 安裝:

  1. linkerd inject https://projectcontour.io/quickstart/contour.yaml | kubectl apply -f - 

Envoy 不會自動掛載 service account token。要解決此問題,您需要設置 automountServiceAccountToken: true。您可以選擇創(chuàng)建一個專用 service account 以避免使用 default。

  1. create a service account (optional) 
  2. kubectl apply -f - << EOF 
  3. apiVersion: v1 
  4. kind: ServiceAccount 
  5. metadata: 
  6.   name: envoy 
  7.   namespace: projectcontour 
  8. EOF 
  9.  
  10. add service account to envoy (optional) 
  11. kubectl patch daemonset envoy -n projectcontour --type json -p='[{"op": "add", "path": "/spec/template/spec/serviceAccount", "value": "envoy"}]' 
  12.  
  13. # auto mount the service account token (required) 
  14. kubectl patch daemonset envoy -n projectcontour --type json -p='[{"op": "replace", "path": "/spec/template/spec/automountServiceAccountToken", "value": true}]' 

驗證您的 Contour 和 Envoy 安裝有一個正在運行的 Linkerd sidecar。

接下來我們將部署一個 demo service:

  1. linkerd inject https://projectcontour.io/examples/kuard.yaml | kubectl apply -f - 

要將外部流量路由到您的服務,您需要提供一個 HTTPProxy:

  1. apiVersion: projectcontour.io/v1 
  2. kind: HTTPProxy 
  3. metadata: 
  4.   name: kuard 
  5.   namespace: default 
  6. spec: 
  7.   routes: 
  8.   - requestHeadersPolicy: 
  9.       set
  10.       - name: l5d-dst-override 
  11.         value: kuard.default.svc.cluster.local:80 
  12.     services: 
  13.     - name: kuard 
  14.       namespace: default 
  15.       port: 80 
  16.   virtualhost: 
  17.     fqdn: 127.0.0.1.xip.io 

請注意,l5d-dst-override header 顯式設置為目標 service。

最后,您可以測試您的 working service mesh :

  1. kubectl port-forward svc/envoy -n projectcontour 3200:80 
  2. http://127.0.0.1.xip.io:3200 

如果您將 Contour 與 flagger 一起使用, l5d-dst-override 請求頭將自動設置。

Kong

Kong 不自動支持標頭 l5d-dst-override。本文檔將使用以下元素:

  • Kong
  • Emojivoto

在安裝 Emojivoto demo 應用程序之前,請在您的集群上安裝 Linkerd 和 Kong。記得在注入 Kong 部署時使用 上面 提到的 --ingress 標志(或注解)!

我們還需要聲明這些對象:

  • KongPlugin,Kong 提供的 CRD
  • Ingress
  1. apiVersion: configuration.konghq.com/v1 
  2. kind: KongPlugin 
  3. metadata: 
  4.   nameset-l5d-header 
  5.   namespace: emojivoto 
  6. plugin: request-transformer 
  7. config: 
  8.   add
  9.     headers: 
  10.     - l5d-dst-override:$(headers.host).svc.cluster.local 
  11. --- 
  12. apiVersion: extensions/v1beta1 
  13. kind: Ingress 
  14. metadata: 
  15.   name: web-ingress 
  16.   namespace: emojivoto 
  17.   annotations: 
  18.     kubernetes.io/ingress.class: "kong" 
  19.     konghq.com/plugins: set-l5d-header 
  20. spec: 
  21.   rules: 
  22.     - http: 
  23.         paths: 
  24.           - path: /api/vote 
  25.             backend: 
  26.               serviceName: web-svc 
  27.               servicePort: http 
  28.           - path: /api/list 
  29.             backend: 
  30.               serviceName: web-svc 
  31.               servicePort: http 

我們在 KongPlugin 中明確設置了 l5d-dst-override。使用 templates as values, 我們可以使用來自請求的 host header,并基于此設置 l5d-dst-override 值。

最后,讓我們安裝 Emojivoto,以便它的 deploy/vote-bot 以 ingress 為目標, 并包含 web-svc.emojivoto 服務的 host header。

在應用注入的(injected) Emojivoto 應用程序之前,對 vote-bot 部署進行以下更改:

  1. env: 
  2. # Target the Kong ingress instead of the Emojivoto web service 
  3. name: WEB_HOST 
  4.   value: kong-proxy.kong:80 
  5. # Override the host header on requests so that it can be used to set the l5d-dst-override header 
  6. name: HOST_OVERRIDE 
  7.   value: web-svc.emojivoto 

 【編輯推薦】

 

責任編輯:姜華 來源: 黑客下午茶
相關推薦

2021-06-16 17:42:48

Linkerd 配置CPU

2021-06-22 06:41:38

Linkerd 安裝多集群組件網(wǎng)絡技術

2021-06-22 06:16:24

Linkerd books webapp

2021-06-17 14:29:39

Linkerd 分布式跟蹤Linkerd 2.1

2021-06-17 06:20:43

Linkerd Kustomize網(wǎng)絡技術

2021-06-17 06:13:29

Linkerd Prometheus 網(wǎng)絡技術

2021-06-15 05:45:56

Linkerd annotations網(wǎng)絡技術

2021-06-24 07:20:21

Linked GitOps Argo CD

2021-06-15 05:52:33

Linkerd canary網(wǎng)絡技術

2021-06-16 06:31:55

Linkerd 2.1Step by SteWebhook TLS

2011-04-19 14:02:09

SSAS

2010-09-08 09:41:03

私有云部署

2009-04-22 17:18:29

Vxworks驅動加載step by ste

2021-06-29 13:09:07

服務配置文件

2024-01-25 11:38:11

AI數(shù)據(jù)

2022-09-01 21:56:34

KubernetesLinkerd

2022-09-09 20:55:38

LinkerdKubernetes

2022-08-30 22:22:23

developerArchitectu

2023-01-06 13:48:21

自然語言推理算法

2023-05-15 09:43:49

模型數(shù)據(jù)
點贊
收藏

51CTO技術棧公眾號

亚洲一区二区三区四区在线播放| 在线成人免费视频| 欧美激情导航| 国产精品人人妻人人爽| 亚洲精品资源| 最近2019好看的中文字幕免费| 国产男女无遮挡猛进猛出| www.综合| 中文字幕在线不卡| 久久久综合亚洲91久久98| 国产精品熟女久久久久久| 1024日韩| 久热精品视频在线| 久久av无码精品人妻系列试探| 成人午夜888| 色屁屁一区二区| 黄色一级片国产| 91视频在线观看| 91亚洲男人天堂| 91国产在线免费观看| 天天综合久久综合| 99精品国产99久久久久久福利| 中文字幕亚洲综合| 网站免费在线观看| 中文字幕一区二区三区中文字幕| 欧美丝袜丝交足nylons图片| 激情深爱综合网| 神马午夜伦理不卡 | www国产视频| 久久人体av| 日本高清成人免费播放| 国产va亚洲va在线va| 精品美女在线观看视频在线观看 | 日韩国产欧美区| 日本黄色的视频| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲一区二区欧美日韩| 亚洲小视频在线播放| 婷婷视频在线| 国产精品嫩草久久久久| 日本午夜精品一区二区三区| 亚洲av成人精品一区二区三区在线播放| 国产麻豆9l精品三级站| 91网站在线免费观看| 伊人网免费视频| 免费欧美日韩国产三级电影| 国产成人精品久久| 波多野结衣二区三区| 一本久道久久综合狠狠爱| 97色在线观看| 日本一级淫片色费放| 国产专区一区| 性欧美在线看片a免费观看 | 欧美日韩国产高清一区二区| 五月婷婷激情久久| 日韩欧美专区| 日韩一区二区三区高清免费看看| 91香蕉视频免费看| 亚洲精品福利| 亚洲精品一区二区三区蜜桃下载 | 亚洲国产精品二十页| 日韩欧美在线电影| av一本在线| 亚洲欧美区自拍先锋| 最新黄色av网站| 中文字幕有码在线视频| 亚洲国产乱码最新视频| 欧美丰满熟妇bbbbbb百度| free欧美| 91精品麻豆日日躁夜夜躁| 美女被爆操网站| 久久亚州av| 中日韩午夜理伦电影免费| 欧美xxxooo| 亚洲五月婷婷| 日韩av大片在线| 亚洲天堂网视频| 国产一区二区伦理| 国产一区二区久久久| 久香视频在线观看| 亚洲丝袜自拍清纯另类| 国产在线播放观看| 亚洲欧美小说色综合小说一区| 91国产丝袜在线播放| 免费黄频在线观看| 国产精品毛片久久久| 一夜七次郎国产精品亚洲| 大地资源高清在线视频观看| 欧美亚韩一区| 国产精品精品视频一区二区三区| 精品国产区一区二| 久久人人97超碰com| 自拍偷拍亚洲色图欧美| 男人av在线播放| 67194成人在线观看| 久久午夜夜伦鲁鲁片| 97视频热人人精品免费| 午夜精品福利视频| 国产麻豆91视频| 91天堂素人约啪| 樱空桃在线播放| 偷拍中文亚洲欧美动漫| 日韩免费福利电影在线观看| 日韩中文字幕有码| 尤物精品在线| 92裸体在线视频网站| 美丽的姑娘在线观看免费动漫| 一区二区三区在线免费视频| 99免费视频观看| 免费观看成人www动漫视频| 日韩一区二区欧美| 国产成人无码一区二区在线播放| 国产成人一区在线| 亚洲欧美电影在线观看| 欧美freesex| 亚洲成人999| 午夜写真片福利电影网| 麻豆成人免费电影| 蜜桃成人免费视频| aa视频在线观看| 日韩视频免费观看高清在线视频| 日韩精品电影一区二区三区| 亚洲综合好骚| 国产精品手机视频| 五月天激情在线| 欧美日韩国产乱码电影| 中文字幕黄色网址| 午夜亚洲性色福利视频| 精品免费国产| 色yeye免费人成网站在线观看| 精品视频一区 二区 三区| 播金莲一级淫片aaaaaaa| 亚洲三级影院| 成人h在线播放| 日韩精品亚洲人成在线观看| 91精品一区二区三区久久久久久| 国产白丝一区二区三区| 美日韩一区二区| 视频一区视频二区视频三区高| 天堂中文最新版在线中文| 精品99999| 成人午夜视频精品一区| 北条麻妃国产九九精品视频| 日本福利视频网站| 91欧美极品| 欧美巨乳美女视频| 亚洲第一视频在线播放| 亚洲综合久久av| 亚洲天堂av网站| 亚洲人成毛片在线播放女女| 国产伦精品一区二区三区视频孕妇 | 久久久精品天堂| avav在线看| 亚洲小说图片| 国产精品美女久久久久久免费| 搞黄视频在线观看| 欧美精品在线一区二区| 精品无码久久久久成人漫画| 国产精选一区二区三区| wwwjizzjizzcom| 成午夜精品一区二区三区软件| 欧美激情亚洲国产| 日韩一级片免费看| 狠狠综合久久av一区二区小说| 国产精品无码一区二区三区免费 | 亚洲高清视频在线| 国产精品久久久久久亚洲色| 亚洲一区网站| 一区二区三区国| 视频在线亚洲| 欧美亚洲在线观看| 国产精品视频二区三区| 91精品蜜臀在线一区尤物| 粉嫩aⅴ一区二区三区| 国产欧美日韩视频在线观看| 91丝袜超薄交口足| 国产欧美大片| 一区二区三区久久网| 999精品视频在这里| 青青久久av北条麻妃海外网| 天堂а√在线官网| 亚洲成av人乱码色午夜| 亚洲图片欧美日韩| 亚洲激情图片一区| 小早川怜子久久精品中文字幕| 韩国精品在线观看| 春日野结衣av| 久久久久久久久久久久久久久久久久| 精品产品国产在线不卡| 国产亚洲欧美日韩精品一区二区三区 | 欧洲国产精品| 亚洲日本一区二区三区在线| 热久久美女精品天天吊色| 国产原创视频在线观看| 日韩精品久久久久久久玫瑰园| 一级久久久久久久| 欧美日韩国产影院| 国产高清在线免费观看| 久久久不卡影院| 久久精品无码专区| 麻豆91精品视频| 无码人妻精品一区二区三区在线| 天堂美国久久| 日韩激情视频| 欧美sss在线视频| 999国内精品视频在线| 8av国产精品爽爽ⅴa在线观看 | 久久国产黄色片| 亚洲欧美激情在线| 免费成人深夜天涯网站| 91一区二区在线| 久久久久亚洲AV成人网人人小说| 久久精品国产在热久久| 777米奇影视第四色| 今天的高清视频免费播放成人| 在线成人av电影| 精品一区av| 就去色蜜桃综合| 国产图片一区| 97人人香蕉| 日韩有吗在线观看| 成人女保姆的销魂服务| 成人h在线观看| 国产精品久久久久av| 天堂网在线最新版www中文网| 午夜精品福利在线观看| 国产在线xxx| 欧美丰满少妇xxxxx做受| 国产日产一区二区| 久久久黄色av| 成人a在线视频免费观看| 自拍偷拍亚洲一区| 欧美天天影院| 美日韩在线视频| 米奇精品一区二区三区| 日韩中文字幕免费| 欧美96在线| 精品国产美女在线| 韩国av网站在线| 欧美日韩成人在线观看| 久久一卡二卡| 777777777亚洲妇女| 性国裸体高清亚洲| 欧美一级淫片aaaaaaa视频| av日韩亚洲| 国产成人在线视频| 国产精品无码久久久久| 国产日韩欧美中文在线播放| 日韩一级视频| 99re国产视频| 欧美高清视频看片在线观看| 蜜桃成人在线| 日韩一区二区三区免费播放| 中日韩在线视频| 午夜视频精品| 精品久久一二三| 香蕉国产精品偷在线观看不卡| wwwxxx黄色片| 蜜臀av亚洲一区中文字幕| 日韩中文字幕a| 国产成人在线电影| 美女又爽又黄视频毛茸茸| 欧美日韩免费观看视频| 97国产suv精品一区二区62| 操人在线观看| 国产va免费精品高清在线| 最新日韩一区| 亚洲一区二区三区视频播放| 极品一区美女高清| 日韩精品无码一区二区三区| 国产大片一区| 欧美日韩成人免费视频| 青草av.久久免费一区| 51自拍视频在线观看| caoporen国产精品视频| 国产jizz18女人高潮| 一区二区三区欧美视频| 欧美激情黑白配| 在线成人午夜影院| 完全免费av在线播放| 网站在线你懂的| 波多野结衣中文一区| 一道本在线观看| 亚洲另类在线制服丝袜| 国产性猛交╳xxx乱大交| 欧美日韩一区二区三区四区五区 | 精品国产一区二区三区性色av| 国产一区免费在线观看| 欧美成人激情| 久色视频在线播放| 精品一区二区影视| 成人h动漫精品一区| 亚洲视频你懂的| 无码人妻丰满熟妇区bbbbxxxx| 日韩一级高清毛片| 国产中文字幕在线看| 色综合久久88色综合天天看泰| 成人av三级| 999视频在线免费观看| 国产亚洲一卡2卡3卡4卡新区| 日韩精品福利片午夜免费观看| 久久福利精品| 中国xxxx性xxxx产国| 亚洲视频综合在线| www.久久网| 日韩av在线免播放器| 午夜dj在线观看高清视频完整版| 国产精品99久久久久久久久久久久| eeuss国产一区二区三区四区| 亚洲制服欧美久久| 日韩精品久久理论片| www.日本高清| 亚洲一区二区三区四区五区中文| 国产又粗又猛又爽| 亚洲一区二区久久久| 色多多在线观看| 国产精品毛片一区视频| 一区二区三区国产精华| 岛国av在线免费| 亚洲国产精品激情在线观看| 天天干天天色综合| 亚洲精品国产精品久久清纯直播| 日韩伦理av| 999视频在线观看| 在线观看免费一区二区| 拔插拔插华人永久免费| 欧美国产成人精品| 日韩免费av网站| 亚洲视频在线观看| 成人性教育av免费网址| 国产专区一区二区| 99精品热6080yy久久| 怡红院一区二区| 午夜精品福利视频网站| 日本波多野结衣在线| 久久免费视频这里只有精品| 一区二区中文字幕在线观看| 50度灰在线观看| 国产91精品免费| 日韩手机在线观看| 日韩电视剧在线观看免费网站 | 成人中文字幕在线观看 | 国产中文字幕视频在线观看| 成人精品免费看| 国产精品一区二区6| 日韩高清中文字幕| 在线免费日韩片| 日韩aⅴ视频一区二区三区| 免费看欧美女人艹b| 国产精品麻豆免费版现看视频| 欧美日韩一区二区三区不卡 | 日韩中文首页| 最新国产黄色网址| 亚洲精品一二三| 亚洲国产成人精品一区二区三区| 国内精久久久久久久久久人| 日本在线中文字幕一区| 中文字幕第21页| 亚洲丝袜精品丝袜在线| 丰满人妻一区二区| 91国内产香蕉| 日韩一区电影| 精品人妻无码中文字幕18禁| 午夜激情一区二区| 超碰97在线免费观看| 91视频免费网站| 亚洲欧美清纯在线制服| 亚洲毛片亚洲毛片亚洲毛片| 欧美一区日韩一区| 英国三级经典在线观看| 亚洲va韩国va欧美va精四季| 国产乱子伦一区二区三区国色天香| 久久久久久久久99| 亚洲无限av看| 2020国产精品极品色在线观看| 啊啊啊一区二区| 国产精品久久久久久久第一福利 | 岛国av中文字幕| www.欧美免费| 欧美天堂影院| 色婷婷.com| 婷婷六月综合亚洲| 一级毛片视频在线观看| 古典武侠综合av第一页| 日韩二区三区在线观看| 欧美日韩国产精品综合 | 国产精品国精产品一二| 欧美日韩亚洲在线| 国产成人免费视频| 337p粉嫩色噜噜噜大肥臀| 欧美日韩爱爱视频| 日韩片欧美片| 色呦呦一区二区| 日韩欧美精品三级| 久久福利在线| 日韩av片在线看| 一区二区三区影院| 91官网在线| 欧美黑人3p| youjizz久久|