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

Kubernetes 官方出品調試工具上手指南(無需安裝,開箱即用)

系統 Linux
本文介紹了 Kubectl debug 和臨時容器等調試方法。一起來看看吧。

[[408037]]

 調試容器化工作負載和 Pod 是每位使用 Kubernetes 的開發人員和 DevOps 工程師的日常任務。通常情況下,我們簡單地使用 kubectl logs 或者 kubectl describe pod 便足以找到問題所在,但有時候,一些問題會特別難查。這種情況下,大家可能會嘗試使用 kubectl exec,但有時候這樣也還不行,因為 Distroless 等容器甚至不允許通過 SSH 進入 shell。那么,如果以上所有方法都失敗了,我們要怎么辦?

更好的方法

其實我們只需要使用更合適的工具。如果在 Kubernetes 上調試工作負載,那么合適的工具就是 kubectl debug。 這是不久前添加的一個新命令(v1.18),允許調試正在運行的 pod。它會將名為 EphemeralContainer(臨時容器)的特殊容器注入到問題 Pod 中,讓我們查看并排除故障。kubectl debug 看起來非常不錯,但要使用它需要臨時容器,臨時容器到底是什么?

臨時容器其實是 Pod 中的子資源,類似普通 container。但與普通容器不同的是,臨時容器不用于構建應用程序,而是用于檢查。 我們不會在創建 Pod 時定義它們,而使用特殊的 API 將其注入到運的行 Pod 中,來運行命令并檢查 Pod 環境。除了這些不同,臨時容器還缺少一些基本容器的字段,例如 ports、resources。

那么我們為什么不直接使用基本容器?這是因為我們不能向 Pod 添加基本容器,它們應該是一次性的(需要隨時刪除或重新創建),這會導致難以重現問題 Pod 的錯誤,排除故障也會很麻煩。這就是將臨時容器添加到 API 的原因——它們允許我們將臨時容器添加到現有 Pod,從而檢查正在運行的 Pod。

雖然臨時容器是作為 Kubernetes 核心的 Pod 規范的一部分,但很多人可能還沒有聽說過。這是因為臨時容器處于早期 Alpha 階段,這意味著默認情況下不啟用。Alpha 階段的資源和功能可能會出現重大變化,或者在 Kubernetes 的某個未來版本中被完全刪除。因此,要使用它們必須在 kubelet 中使用Feature Gate(功能門)顯式啟用。

Configuring Feature Gates

現在如果確定要試用 kubectl debug,那么如何啟用臨時容器的功能門?這取決于集群設置。 例如,現在使用kubeadm啟動創建集群,那么可以使用以下集群配置來啟用臨時容器: 

  1. apiVersion: kubeadm.k8s.io/v1beta2  
  2. kind: ClusterConfiguration  
  3. kubernetesVersion: v1.20.2  
  4. apiServer:  
  5.   extraArgs:  
  6.     feature-gates: EphemeralContainers=true 

在以下示例中,為了簡單和測試目的,我們使用 KinD(Docker 中的 Kubernetes)集群,這允許我們指定要啟用的功能門。創建我們的測試集群: 

  1. # File: config.yaml  
  2. # Run:  kind create cluster --config ./config.yaml --name kind --image=kindest/node:v1.20.2  
  3. kind: Cluster  
  4. apiVersion: kind.x-k8s.io/v1alpha4  
  5. featureGates:  
  6.   EphemeralContainers: true  
  7. nodes: 
  8.  - role: control-plane 

隨著集群的運行,我們需要驗證其有效性。最簡單方法是檢查 Pod API,它現在應該包含臨時容器部分以及通常容器: 

  1. ~ $ kubectl explain pod.spec.ephemeralContainers  
  2. KIND:     Pod 
  3. VERSION:  v1  
  4. RESOURCE: ephemeralContainers <[]Object>  
  5. DESCRIPTION: 
  6.       List of ephemeral containers run in this pod.... 
  7.  ... 

現在都有了,可以開始使用 kubectl debug。從簡單的例子開始: 

  1. ~ $ kubectl run some-app --image=k8s.gcr.io/pause:3.1 --restart=Never  
  2. ~ $ kubectl debug -it some-app --image=busybox --target=some-app  
  3. Defaulting debug container name to debugger-tfqvh. 
  4. If you don't see a command prompt, try pressing enter.  
  5. / #  
  6. # From other terminal...  
  7. ~ $ kubectl describe pod some-app  
  8. ...  
  9. Containers:  
  10.   some-app:  
  11.     Container ID:   containerd://60cc537eee843cb38a1ba295baaa172db8344eea59de4d75311400436d4a5083
  12.     Image:          k8s.gcr.io/pause:3.1  
  13.     Image ID:       k8s.gcr.io/pause@sha256:f78411e19d84a252e53bff71a4407a5686c46983a2c2eeed83929b888179acea 
  14. ...  
  15. Ephemeral Containers:  
  16.   debugger-tfqvh:  
  17.     Container ID:   containerd://12efbbf2e46bb523ae0546b2369801b51a61e1367dda839ce0e02f0e5c1a49d6  
  18.     Image:          busybox 
  19.     Image ID:       docker.io/library/busybox@sha256:ce2360d5189a033012fbad1635e037be86f23b65cfd676b436d0931af390a2ac  
  20.     Port:           <none>  
  21.     Host Port:      <none>  
  22.     State:          Running  
  23.       Started:      Mon, 15 Mar 2021 20:33:51 +0100  
  24.     Ready:          False  
  25.     Restart Count:  0  
  26.     Environment:    <none>  
  27.     Mounts:         <none> 

我們首先啟動一個名為 some-app 的 Pod 來進行“調試”。然后針對這個 Pod 運行 kubectl debug,指定 busybox 為臨時容器的鏡像,并作為原始容器的目標。此外,還需要包括 -it 參數,以便我們立即附加到容器獲得 shell 會話。

在上面的代碼中可以看到,如果我們在 Pod 上運行 kubectl debug 后對其進行描述,那么它的描述將包括具有之前指定為命令選項值的臨時容器部分。

Process Namespace Sharing

kubectl debug 是非常強大的工具,但有時向 Pod 添加一個容器還不足以獲取 Pod 的另一個容器中運行的應用程序相關信息。當故障容器不包括必要的調試工具甚至 shell 時,可能就是這種情況。在這種情況下,我們可以使用 Process Sharing(進程共享)來使用注入的臨時容器檢查 Pod 的原有容器。

進程共享的一個問題是它不能應用于現有的 Pod,因此我們必須創建一個新 Pod,將其 spec.shareProcessNamespace 設置為 true,并將一個臨時容器注入其中。這樣有點麻煩,尤其是需要調試多個 Pod 或容器,亦或者需要重復執行該操作時。幸運的是,kubectl debug 可以使用 --share-processes 做到: 

  1. ~ $ kubectl run some-app --image=nginx --restart=Never  
  2. ~ $ kubectl debug -it some-app --image=busybox --share-processes --copy-to=some-app-debug  
  3. Defaulting debug container name to debugger-tkwst.  
  4. If you don't see a command prompt, try pressing enter.  
  5. / # ps ax  
  6. PID   USER     TIME  COMMAND  
  7.     1 root      0:00 /pause  
  8.     8 root      0:00 nginx: master process nginx -g daemon off;  
  9.    38 101       0:00 nginx: worker process  
  10.    39 root      0:00 sh  
  11.    46 root      0:00 ps ax  
  12. ~ $ cat /proc/8/root/etc/nginx/conf.d/default.conf   
  13. server {  
  14.     listen       80;  
  15.     listen  [::]:80;  
  16.     server_name  localhost;  
  17. ... 

上面的代碼表明,通過進程共享,我們可以看到 Pod 中另一個容器內的所有內容,包括其進程和文件,這對于調試來說非常方便。另外,除了 --share-processes 還包括了 --copy-to=new-pod-name,這是因為我們需要創建一個新的 Pod,其名稱由該 flag 指定。如果我們從另一個終端列出正在運行的 Pod,我們將看到以下內容: 

  1. # From other terminal:  
  2. ~ $ kubectl get pods  
  3. NAME             READY   STATUS    RESTARTS   AGE  
  4. some-app         1/1     Running   0          23h  
  5. some-app-debug   2/2     Running   0          20s 

這就是我們在原始應用程序 Pod 上的新調試 Pod。與原始容器相比,它有 2 個容器,因為它還包括臨時容器。此外,如果想在任何時候驗證 Pod 中是否允許進程共享,那么可以運行: 

  1. ~ $ kubectl get pod some-app-debug -o json  | jq .spec.shareProcessNamespace  
  2. true 

好好使用

既然我們已經啟用了功能并且知道命令是如何工作的,那就試著使用它并調試一些應用程序。 想象這樣一個場景——我們有一個問題應用程序,我們需要在它的容器中對網絡相關的問題進行故障排除。該應用程序沒有我們可以使用的必要的網絡 CLI 工具。為了解決這個問題,我們通過以下方式使用 kubectl debug: 

  1. ~ $ kubectl run distroless-python --image=martinheinz/distroless-python --restart=Never  
  2. ~ $ kubectl exec -it distroless-python -- /bin/sh  
  3. # id  
  4. /bin/sh: 1: id: not found  
  5. # ls  
  6. /bin/sh: 2: ls: not found  
  7. # env  
  8. /bin/sh: 3: env: not found  
  9.  
  10. ...  
  11. kubectl debug -it distroless-python --image=praqma/network-multitool --target=distroless-python -- sh  
  12. Defaulting debug container name to debugger-rvtd4.  
  13. If you don't see a command prompt, try pressing enter.  
  14. / # ping localhost  
  15. PING localhost(localhost (::1)) 56 data bytes  
  16. 64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.025 ms  
  17. 64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.044 ms  
  18. 64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.027 ms 

在啟動一個 Pod 之后,我們首先嘗試將 shell 會話放入它的容器中,這看起來有效,但是實際上我們嘗試運行一些基本命令時,將看到那里什么都沒有。所以,我們要使用 praqma/network-multitool 將臨時容器注入到 Pod 中,該鏡像包含了 curl、ping、telnet 等工具,現在我們可以進行所有必要的故障排除。

在上面的例子中,我們進入 Pod 的另一個容器中就足夠了。但有時可能需要直接查看有問題的容器。這種情況下,我們可以像這樣使用進程共享: 

  1. ~ $ kubectl run distroless-python --image=martinheinz/distroless-python --restart=Never  
  2. ~ $ kubectl debug -it distroless-python --image=busybox --share-processes --copy-to=distroless-python-debug  
  3. Defaulting debug container name to debugger-l692h.  
  4. If you don't see a command prompt, try pressing enter.  
  5. / # ps ax  
  6. PID   USER     TIME  COMMAND  
  7.     1 root      0:00 /pause  
  8.     8 root      0:00 /usr/bin/python3.5 sleep.py  # Original container is just sleeping forever  
  9.    14 root      0:00 sh  
  10.    20 root      0:00 ps ax  
  11. / # cat /proc/8/root/app/sleep.py   
  12. import time 
  13. print("sleeping for 1 hour")  
  14. time.sleep(3600) 

在這里,我們再次運行使用 Distroless 鏡像的容器。我們無法在它的 shell 中做任何事情。我們運行 kubectl debug 以及 --share-processes --copy-to=...,它創建了一個新的 Pod,帶有額外的臨時容器,可以訪問所有進程。當我們列出正在運行的進程時,能看到應用程序容器的進程有 PID 8,可以用它來探索文件和環境。為此,我們需要通過 /proc/<PID>/... 目錄,這個例子中是 /proc/8/root/app/...。

另一種常見情況是應用程序在容器啟動時不斷崩潰,這讓調試非常困難,因為沒有足夠的時間將 shell 會話導入容器并運行故障排除命令。在這種情況下,解決方案是創建具有不同入口點、命令的容器,這可以阻止應用程序立即崩潰并允許我們調試: 

  1. ~ $ kubectl get pods  
  2. NAME                READY   STATUS             RESTARTS   AGE  
  3. crashing-app        0/1     CrashLoopBackOff   1          8s  
  4. ~ $ kubectl debug crashing-app -it --copy-to=crashing-app-debug --container=crashing-app -- sh  
  5. If you don't see a command prompt, try pressing enter.  
  6. # id  
  7. uid=0(root) gid=0(root) groups=0(root)  
  8.  
  9. ...  
  10. # From another terminal  
  11. ~ $ kubectl get pods  
  12. NAME                READY   STATUS             RESTARTS   AGE  
  13. crashing-app        0/1     CrashLoopBackOff   3          2m7s  
  14. crashing-app-debug  1/1     Running            0          16s 

調試集群節點

本文主要關注 Pod 及其容器的調試,但任何集群管理員都知道常常需要調試的是節點而不是 Pod。幸運的是,kubectl debug 允許通過創建 Pod 來調試節點,該 Pod 將在指定節點上運行,節點的根文件系統安裝在 /root 目錄中。我們甚至可以用 chroot 訪問主機二進制文件,這本質上充當了節點的 SSH 連接: 

  1. ~ $ kubectl get nodes  
  2. NAME                 STATUS   ROLES                  AGE   VERSION  
  3. kind-control-plane   Ready    control-plane,master   25h   v1.20.2  
  4. ~ $ kubectl debug node/kind-control-plane -it --image=ubuntu 
  5.  Creating debugging pod node-debugger-kind-control-plane-hvljt with container debugger on node kind-control-plane.  
  6. If you don't see a command prompt, try pressing enter.  
  7. root@kind-control-plane:/# chroot /host  
  8. # head kind/kubeadm.conf  
  9. apiServer:  
  10.   certSANs:  
  11.   - localhost  
  12.   - 127.0.0.1  
  13.   extraArgs:  
  14.     feature-gates: EphemeralContainers=true  
  15.     runtime-config: ""  
  16. apiVersion: kubeadm.k8s.io/v1beta2  
  17. clusterName: kind  
  18. controlPlaneEndpoint: kind-control-plane:6443 

在上面的代碼中,我們首先確定了想要調試的節點,然后使用 node/... 作為參數顯式運行 kubectl debug 以訪問我們集群的節點。在那之后,當連接到Pod后,我們使用 chroot /host 突破 chroot,并完全進入主機。最后,為了驗證是否真的可以看到主機上的所有內容,我們了查看一部分的 kubeadm.conf,最終看到我們在文章開頭配置的內容 feature-gates: EphemeralContainers=true。

小結

能夠快速有效地調試應用程序和服務可以節省大量時間,但更重要的是,它能極大地幫助解決那些如果不立即解決可能最終會花費大量資金的問題。 這就是為什么 kubectl debug 之類的工具能隨意使用非常重要,即使它們尚未正式發布或默認啟用。如果啟用臨時容器不是一種選擇,那么嘗試替代調試方法可能是一個好主意,例如使用包含故障排除工具的應用程序鏡像的調試版本;或臨時更改 Pod 的容器命令以阻止其崩潰。 

 

責任編輯:龐桂玉 來源: 奇妙的Linux世界
相關推薦

2013-12-26 15:14:38

Android SDK運行調試

2021-01-26 08:37:18

MobXVueReact

2023-04-04 10:09:09

2014-06-24 09:41:56

Android Stu教程

2024-01-29 00:36:50

Backstage設施工具

2025-05-28 15:46:13

2023-03-08 21:25:58

開源工具庫開箱

2013-12-04 14:44:41

Android SDK用戶交互

2013-12-26 15:40:33

Android SDK項目

2013-12-04 13:27:56

Android SDK項目

2014-01-22 10:00:10

Android SDKAndroid開發

2016-06-20 10:20:22

Docker云計算

2021-11-26 09:40:37

EclipseIDEA開發

2009-10-10 13:21:02

服務器測試工具

2023-05-26 08:02:11

工具函數庫模塊

2013-11-01 09:37:19

Android系統架構工具

2012-08-01 17:39:17

2014-06-06 14:25:03

iOS 8SwiftWWDC2014

2013-12-04 14:29:18

Android SDK應用程序

2013-12-26 15:47:59

Android SDK應用程序
點贊
收藏

51CTO技術棧公眾號

亚洲大片精品免费| 丁香花在线影院| 美女尤物国产一区| 欧美大肥婆大肥bbbbb| 美女伦理水蜜桃4| 日韩电影大全网站| 亚洲精品网站在线观看| 麻豆久久久av免费| 国产高清免费av| 久久在线91| 理论片在线不卡免费观看| 日本黄色录像片| 久久av日韩| 精品二区三区线观看| 在线观看一区二区三区三州 | 日本aⅴ亚洲精品中文乱码| 毛片精品免费在线观看| 91精品国自产在线| 成人三级毛片| 777久久久精品| 92看片淫黄大片一级| 青草在线视频| 一区在线观看免费| 日产精品高清视频免费| 黄色小视频免费在线观看| 麻豆91精品91久久久的内涵| 91干在线观看| 国产亚洲成人av| 911精品美国片911久久久| 亚洲欧洲午夜一线一品| 国产不卡一二三| 亚洲精品18| 91精品国产色综合久久久蜜香臀| 国内自拍视频网| 在线观看爽视频| 午夜成人免费视频| 黄色三级中文字幕| 在线观看三级视频| 综合欧美一区二区三区| 亚洲精品国产精品国自产| 日本午夜在线视频| 久久综合久久综合亚洲| 国产伦一区二区三区色一情| 午夜精品一区二区三| 国产一区二区三区四| 成人天堂噜噜噜| 国产剧情久久久| 老司机一区二区| 国产精品美女久久久久av超清| 人人爽人人爽人人片av| 国产精品毛片| 欧美资源在线观看| 日韩精品一区不卡| 欧美a级一区二区| 国产精品夫妻激情| wwwwww在线观看| 日产欧产美韩系列久久99| 国产精品久久久久av免费| 久久精品国产亚洲av麻豆蜜芽| 美女日韩在线中文字幕| 国产成人久久久精品一区| 免费av网站在线| 日韩电影在线免费观看| 国产精品久久久久久久久久新婚 | 在线成人av网站| 8x8x成人免费视频| 综合视频一区| 日韩激情视频在线| 成人黄色免费网址| 91久久夜色精品国产按摩| 久久夜色精品国产| 国产一级二级三级视频| 国产亚洲一区在线| 国产精品久久久久久久一区探花| 一区二区三区亚洲视频| 国产激情偷乱视频一区二区三区| 国产精品9999久久久久仙踪林 | 成人午夜电影久久影院| 久久免费视频1| chinese偷拍一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| 久久久天堂国产精品| 成人bbav| 欧美日本乱大交xxxxx| 蜜桃视频无码区在线观看| 色橹橹欧美在线观看视频高清| 一本色道久久综合狠狠躁篇的优点| 调教驯服丰满美艳麻麻在线视频| 欧美~级网站不卡| 欧美亚洲国产视频| 国产精品视频第一页| 成人av免费在线| 日韩精品不卡| 成年人国产在线观看| 欧美在线制服丝袜| 美女日批在线观看| 欧美老女人另类| 欧美第一黄色网| 波多野结衣绝顶大高潮| 国产一区91精品张津瑜| 欧美福利一区二区三区| 18av在线播放| 在线观看欧美精品| 午夜剧场免费看| 日本高清免费电影一区| 高清欧美性猛交xxxx黑人猛交| 波多野结衣电车| 成人免费高清在线| 日本黄色播放器| 免费观看亚洲| 精品福利av导航| 久久久久麻豆v国产| 亚洲三级色网| 成人三级在线| 黄色小网站在线观看| 欧美性猛交xxxx乱大交3| 亚洲国产日韩在线一区| 欧美最新另类人妖| 欧美一区在线直播| 黄片毛片在线看| 亚洲人123区| 538任你躁在线精品免费| 欧美精品密入口播放| 欧美大片免费观看在线观看网站推荐| 亚洲国产无线乱码在线观看| 91一区在线观看| 男人天堂手机在线视频| 国产在线不卡一区二区三区| 最新日韩中文字幕| 久久午夜鲁丝片| 久久久久久久久久看片| 免费无码av片在线观看| 国产美女撒尿一区二区| 欧美激情综合色| 亚洲精品视频91| 亚洲一区二区三区四区在线免费观看 | 欧美福利精品| 成人免费短视频| 精品偷拍各种wc美女嘘嘘| 日本午夜小视频| 成人黄色综合网站| 91.com在线| 高清精品视频| 久久久亚洲影院你懂的| 欧美一级片免费| 亚洲成人tv网| 亚洲一区二区三区四区五区六区| 在线成人国产| 国产欧美丝袜| 看黄在线观看| 亚洲欧美一区二区激情| 无码人妻精品一区二区三区不卡| 久久亚洲捆绑美女| 88av.com| 久久在线播放| 亚洲一区二区三区777| free性欧美hd另类精品| 欧美α欧美αv大片| 国产亚洲欧美久久久久| 99精品视频一区二区| 久久无码高潮喷水| 国产日产精品一区二区三区四区的观看方式 | 美国黄色小视频| 成人性生交大片免费看中文网站| 国产女主播自拍| 亚洲传媒在线| 国产精品尤物福利片在线观看| porn亚洲| 日韩美女在线视频 | 在线视频精品| 欧美一区二区三区精美影视 | 黄色成人影院| 精品噜噜噜噜久久久久久久久试看| 国产精品日日夜夜| 久久久久久久久久久电影| 久久这里只精品| 欧美视频在线观看| 女女同性女同一区二区三区91| 吞精囗交69激情欧美| 中文字幕亚洲欧美日韩高清| 国产乱淫a∨片免费观看| 亚洲妇熟xx妇色黄| 人成免费在线视频| 国产成人午夜视频| 免费日韩中文字幕| 亚洲成av人片乱码色午夜| 黑人中文字幕一区二区三区| 成人18视频在线观看| 欧美另类第一页| 国产系列在线观看| 日韩视频免费观看高清完整版在线观看| 日韩 国产 在线| 国产精品第一页第二页第三页| 日本wwwwwww| 日本欧美久久久久免费播放网| 成人在线免费高清视频| 国产精品一区二区99| 99九九电视剧免费观看| 日韩高清成人| 亚洲91精品在线观看| 日韩理伦片在线| 日韩av在线精品| 国产女人高潮毛片| 色乱码一区二区三区88| 久久久久香蕉视频| 国产精品理伦片| 欧美高清性xxxx| 国产精品一二三在| 天美星空大象mv在线观看视频| 激情欧美一区| 亚洲精品第一区二区三区| 人人香蕉久久| 99影视tv| 99视频有精品高清视频| 国产成人久久久精品一区| 超碰在线公开| 欧美高清在线视频观看不卡| 日韩精品毛片| 一区二区三区高清国产| 亚洲aⅴ乱码精品成人区| 日韩欧美在线一区二区三区| 亚洲一区二区激情| 色8久久精品久久久久久蜜| 成年人午夜视频| 亚洲精品欧美激情| 疯狂撞击丝袜人妻| 中文av一区二区| 性高潮久久久久久久| 成年人网站91| 娇妻高潮浓精白浆xxⅹ| 黄页视频在线91| 一本一道久久a久久综合蜜桃| 日韩成人精品视频| 黄色片在线免费| 国产精品资源| 久久久久久久久久久视频| 99视频一区| 欧美日韩黄色一级片| 在线欧美亚洲| 欧美一区二区中文字幕| 一区二区三区四区五区精品视频| 给我免费播放片在线观看| 激情综合视频| 欧美日韩一道本| 国产亚洲欧洲| 日韩视频免费在线播放| 日本美女一区二区三区| 狠狠热免费视频| 美洲天堂一区二卡三卡四卡视频 | 国产精品69毛片高清亚洲| 欧美性受xxxx黒人xyx性爽| 国产精品一区在线| 亚洲女则毛耸耸bbw| 99久久国产免费看| 精品人妻互换一区二区三区| 国产日本欧美一区二区| 国产aaaaaaaaa| 国产精品久久久久久户外露出| 国产三级aaa| 亚洲人成在线播放网站岛国| 久久精品www人人爽人人| 亚洲午夜久久久久久久久电影院| 国产成人亚洲欧洲在线| 色婷婷av一区二区三区大白胸| 日韩国产亚洲欧美| 欧美一级在线免费| 人人妻人人澡人人爽久久av| 日韩黄色av网站| a黄色在线观看| 久久精品中文字幕一区| 国产丝袜视频在线播放| 欧美一区二区三区四区在线| 国产成人免费精品| 成人羞羞视频免费| 综合干狼人综合首页| 伊人久久大香线蕉午夜av| 国内精品福利| 亚洲精品乱码久久久久久自慰| 美腿丝袜在线亚洲一区 | 中文字幕在线观看1| 欧美一区二区日韩一区二区| 天堂在线中文网| 色噜噜久久综合伊人一本| 在线观看中文| 国产成人精品久久亚洲高清不卡| 亚洲欧美综合久久久久久v动漫| 国产高清不卡av| 欧美亚洲国产激情| 国产片侵犯亲女视频播放| 日本不卡中文字幕| 精品一区二区三区四区五区六区| 国产亚洲一区二区三区四区| 九九精品在线观看视频 | 亚洲AV无码一区二区三区少妇 | 免费av在线| 91tv亚洲精品香蕉国产一区7ujn| 国产精品毛片久久久久久久久久99999999| 91丨九色丨国产在线| 久久91麻豆精品一区| 欧美一级爱爱视频| 热久久久久久久| 中文字幕 日本| 亚洲精品国产精华液| 国产精品传媒在线观看| 亚洲精品www久久久| 成人日批视频| 国产精品女人网站| 日韩高清在线免费观看| 国产精品一二三在线观看| 久久久久久色| 国产熟女高潮一区二区三区 | 国产亚洲高清在线观看| 欧美二区三区| 亚洲激情一区| 久久精品亚洲天堂| 国产精品视频九色porn| 免费av网站在线| 亚洲精品久久久久| 色图在线观看| 91夜夜未满十八勿入爽爽影院| 国产精品探花在线观看| www一区二区www免费| 顶级嫩模精品视频在线看| 在线免费看av网站| 欧美日韩一区精品| а√天堂中文在线资源bt在线| 91精品国产色综合久久不卡98口| 亚洲午夜免费| 日韩免费在线观看av| 国产精品资源网| 天天做夜夜爱爱爱| 欧美精品在线观看一区二区| yiren22亚洲综合伊人22| 国产精品av在线播放| 少妇精品久久久| 欧美日韩中文在线视频| 99re这里只有精品首页| 日韩欧美一区二区一幕| 精品精品欲导航| 久久av色综合| 国产专区一区二区三区| 亚洲深爱激情| 青青草视频成人| 日韩欧美中文字幕在线观看 | 中日韩午夜理伦电影免费| 一区二区三区电影大全| 欧美高清视频一区| 日日骚欧美日韩| 在线观看免费黄色网址| 欧美日韩二区三区| 国产在线看片| 999国内精品视频在线| 欧美ab在线视频| 亚洲一区二区三区四区av| 亚洲成av人**亚洲成av**| 午夜在线视频免费| 欧美一区二三区| 欧美中文字幕一区二区| 亚洲精品免费一区亚洲精品免费精品一区| 国产精品国产三级国产专播品爱网 | 午夜视频在线| 亚洲伊人久久综合| 亚洲黄色三级| 97超碰在线免费观看| 欧美性一级生活| av电影免费在线观看| 国产成人精品一区二区三区福利| 99亚洲伊人久久精品影院红桃| 中文字幕一区二区人妻在线不卡| 欧美视频在线不卡| 在线观看av免费| 九九九九精品九九九九| 日本va欧美va欧美va精品| av激情在线观看| 亚洲激情电影中文字幕| 日韩在线免费| 欧美精品在欧美一区二区| xfplay精品久久| 国产乱人乱偷精品视频| 91成人在线视频| 国产精品成人一区二区不卡| 折磨小男生性器羞耻的故事| 色妹子一区二区| 色黄网站在线观看| 免费精品视频一区二区三区| 精一区二区三区| 日韩精品一区二区av| 色哟哟亚洲精品一区二区| 超碰97久久| 天天操天天爱天天爽| 亚洲综合一区二区三区| 成人免费黄色网页| 国产精品一级久久久| 美女视频黄免费的久久| 国产乡下妇女做爰视频| 精品国内自产拍在线观看| 欧美aaaaaaaa牛牛影院| 午夜大片在线观看| 91国偷自产一区二区使用方法| 中文在线免费|