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

国产精品免费视频xxxx| 欧美一区二区在线免费观看| 久久天天狠狠| 91麻豆视频在线观看| 伊人久久亚洲美女图片| 亚洲日本aⅴ片在线观看香蕉| 97超碰人人爽| 高清毛片在线观看| 国产精品久久久久久户外露出| 亚洲一区亚洲二区亚洲三区| www欧美在线| 久久久久久久久国产一区| 亚洲福利视频专区| 免费看涩涩视频| 国产无遮挡裸体视频在线观看| 国产精品入口麻豆九色| 国产精品免费一区二区三区观看| 波多野结衣高清在线| 欧美激情五月| 综合欧美国产视频二区| 给我免费观看片在线电影的| 二区三区精品| 欧美少妇xxx| 国产一区二区在线视频播放| 福利在线视频网站| 国产午夜久久久久| 国产精品swag| 国产又黄又猛又爽| 日日夜夜一区二区| 91国产视频在线| 青青草偷拍视频| 99热在线成人| 中文字幕一精品亚洲无线一区 | 国产玉足脚交久久欧美| 在线视频1区2区| 国产亚洲欧美一区在线观看| 激情伦成人综合小说| 国产精品伦一区二区三区| 三级不卡在线观看| 欧美在线欧美在线| 国产尤物在线视频| 激情一区二区| 色综合久综合久久综合久鬼88| 久久久精品少妇| 日韩av免费大片| 国产亚洲成精品久久| 亚洲一区二区观看| 人人香蕉久久| 精品一区二区亚洲| 免费看黄色aaaaaa 片| 国产福利资源一区| 亚洲福利视频网站| 给我免费观看片在线电影的| 久久97久久97精品免视看秋霞| 精品国产乱码久久久久久浪潮| 亚洲一级片免费观看| 91国产一区| 337p亚洲精品色噜噜| 九一精品久久久| av日韩一区| 欧美一级淫片007| aaa黄色大片| 成人免费直播在线| 精品视频久久久| 日本高清www| 精品日本12videosex| 一本一道久久a久久精品逆3p | 日本高清视频在线播放| 国产精品久久久久影院色老大| 在线视频91| 污污视频在线| 岛国精品视频在线播放| 91av在线免费播放| 日本一区二区三区中文字幕 | 污污网站免费在线观看| 国产精品99久久久久| 高清不卡一区二区三区| 亚州男人的天堂| 欧美极品少妇xxxxⅹ高跟鞋| 在线免费观看一区二区三区| 欧美aaaaaaa| 精品国产福利在线| 三级a三级三级三级a十八发禁止| 伊人久久大香| 亚洲国产精品免费| 亚洲综合欧美综合| 欧美日韩亚洲一区| 国产91亚洲精品| 国产麻豆精品一区| 不卡一区二区在线| 五月天综合网| 国精产品一区一区三区mba下载| 精品久久久视频| 奇米影视四色在线| 狠狠一区二区三区| 最近2019年中文视频免费在线观看| 国产一区二区三区在线视频观看| 日韩一级免费| 成人av在线网址| 天天操天天射天天| 成人欧美一区二区三区小说| r级无码视频在线观看| 欧美日韩激情电影| 精品欧美黑人一区二区三区| 日本精品在线观看视频| 国产一区日韩一区| 国产精品亚洲激情| 日韩a级作爱片一二三区免费观看| 国产精品久久久久婷婷二区次| 国产v片免费观看| 亚洲一区二区小说| 亚洲欧美另类人妖| 久久免费小视频| 另类小说欧美激情| 美女一区视频| 国产精品蜜臀| 欧美一区二区在线观看| 男女黄床上色视频| 亚洲欧洲午夜| 97人人干人人| 麻豆av在线导航| 在线国产电影不卡| 亚洲av无码一区二区三区观看| 亚洲精品一二三区区别| 国产精品极品美女粉嫩高清在线| 污视频在线免费观看| 亚洲一区二区三区在线播放| 亚洲第一天堂久久| 日韩久久电影| 国产精品旅馆在线| 日本v片在线免费观看| 亚洲午夜久久久久久久久电影网| 爽爽爽在线观看| 久久精品国产99久久| 国产aaa精品| 四虎成人免费在线| 大桥未久av一区二区三区| 国产a级黄色片| 亚洲天堂黄色| 国产伦精品一区二区三区免费视频| 中文字幕中文字幕在线十八区 | 国产三级生活片| 日韩精品影视| 成人精品一区二区三区| 黄色网址免费在线观看| 欧美精品第一页| 中国一级片在线观看| 国精产品一区一区三区mba视频| 西游记1978| 亚洲成人一区在线观看| 国产亚洲综合久久| 亚洲一二区视频| 亚洲欧美在线视频| 无码国产精品一区二区高潮| 一区二区三区在线| 99re视频在线| 爱福利在线视频| 日韩精品久久久久久福利| 日本午夜视频在线观看| 久久午夜老司机| 国产精品乱码久久久久| 波多野结衣的一区二区三区| 国产欧美中文字幕| fc2ppv国产精品久久| 日韩美女在线视频| 99精品视频99| 欧美国产成人精品| 久久综合在线观看| 激情久久中文字幕| 欧美日本亚洲| 婷婷激情成人| 欧美激情极品视频| 青草久久伊人| 欧美三级中文字幕在线观看| 亚洲视频重口味| www.一区二区| 午夜国产一区二区三区| 一二三区不卡| 狠狠色伊人亚洲综合网站色| 成人开心激情| 九九热这里只有精品免费看| 天堂在线资源8| 欧美性videosxxxxx| 欧美三根一起进三p| 91原创在线视频| 中文字幕66页| 中文日韩在线| 在线观看成人av| 台湾佬综合网| 91免费看片网站| 一个人看的www视频在线免费观看| 中文字幕在线观看日韩| 丰满人妻熟女aⅴ一区| 在线免费观看成人短视频| www.99re7| 久久精品夜色噜噜亚洲a∨| 亚洲视频在线不卡| 蜜桃av综合| 成人午夜免费在线视频| 欧洲grand老妇人| 国精产品一区二区| **日韩最新| 国产99久久久欧美黑人| 国产嫩草在线视频| 色av中文字幕一区| 五月婷婷六月丁香| 日韩一级视频免费观看在线| av毛片在线免费观看| 亚洲在线视频一区| 美女网站视频色| 久久综合九色综合97婷婷女人 | 欧美一区二区三区黄片| 欧美日韩欧美一区二区| 日韩欧美成人一区二区三区| 亚洲精品乱码久久久久| 日韩黄色中文字幕| 91免费版在线| 制服丝袜第一页在线观看| 狠狠色丁香久久婷婷综| 免费看黄色一级大片| 亚洲美女一区| 免费看欧美黑人毛片| 综合久久十次| 亚洲AV无码成人精品一区| 国产传媒欧美日韩成人精品大片| 精品人伦一区二区三区| 北条麻妃一区二区三区在线| 亚洲淫片在线视频| 亚洲三级在线| 91精品久久久久久久久青青| 97久久香蕉国产线看观看| 97人人爽人人喊人人模波多| 欧美亚洲系列| 欧美高清性猛交| 久草在线视频资源| 久久久久久久国产精品| 免费网站在线观看人| 色综合导航网站| av网站免费在线观看| 久久夜色精品亚洲噜噜国产mv| 秋霞a级毛片在线看| 综合国产在线视频| 欧美成人性生活视频| 日韩在线免费av| 久操视频在线免费播放| 日韩小视频在线| 精品美女在线观看视频在线观看| 日韩日本欧美亚洲| 黄网页免费在线观看| 久久高清视频免费| 日本成人不卡| 91精品国产777在线观看| 高清视频在线观看三级| 欧美夜福利tv在线| 日本综合视频| 成人妇女免费播放久久久| 91久久青草| 96成人在线视频| 欧美wwwwww| 欧美一级爽aaaaa大片| 精品久久久中文字幕| 亚洲国产午夜伦理片大全在线观看网站 | 亚洲视频日韩精品| 95在线视频| 欧美麻豆久久久久久中文| 国产蜜臀一区二区打屁股调教| 97香蕉超级碰碰久久免费软件| 日韩理论视频| 国产精品美女在线观看| 成人豆花视频| 国产精品污www一区二区三区| 日韩精品导航| 亚洲免费视频一区| 国内精品福利| 欧美精品第三页| 国产综合一区二区| 91精品小视频| 国产精品盗摄一区二区三区| 久久黄色小视频| 色婷婷综合视频在线观看| 一级黄色大毛片| 精品三级av在线| 国产高清av在线| 欧美成人免费播放| 小视频免费在线观看| 91免费在线视频网站| 黄色美女久久久| 亚洲精品乱码视频| 亚洲欧洲一区| 中文字幕资源在线观看| 不卡电影一区二区三区| 国产馆在线观看| 亚洲成人tv网| 亚洲中文字幕在线观看| 亚洲精品国产精品久久清纯直播| av在线三区| 性欧美办公室18xxxxhd| 天堂综合在线播放| 久热国产精品视频一区二区三区| 亚洲成人精选| 亚洲中文字幕久久精品无码喷水| 国产综合久久久久影院| 88久久精品无码一区二区毛片| 亚洲日本在线观看| 波多野结衣影片| 亚洲精品不卡在线| 成人av免费| 国产精品久久久久免费a∨大胸| 91国内精品| 国产精品av免费| 日韩国产在线一| 最新在线黄色网址| 亚洲韩国精品一区| 国产乱码一区二区| 在线亚洲欧美视频| 超碰超碰人人人人精品| 成人在线看片| 91精品国偷自产在线电影 | 色呦呦网站入口| 日韩精彩视频在线观看| 美国黄色a级片| 亚洲国产精品自拍| a毛片在线免费观看| 日韩在线观看成人| 日本在线中文字幕一区二区三区| 国产免费一区二区三区| 亚洲欧美在线专区| 第一区免费在线观看| 国产亚洲欧美色| 激情五月婷婷网| 日韩精品欧美国产精品忘忧草| 爱情岛亚洲播放路线| 亚洲精品欧美日韩专区| 99成人超碰| 手机免费看av网站| 亚洲欧美另类图片小说| 97精品人妻一区二区三区在线 | 国产一区不卡精品| 在线观看黄网址| 欧美日本国产视频| 日本美女在线中文版| 成人夜晚看av| 中文字幕亚洲精品乱码| 欧美一级特黄aaa| 亚洲精品乱码久久久久| 国内精品国产成人国产三级| 九色91av视频| 99ri日韩精品视频| 少妇av一区二区三区无码| 99在线精品观看| 国内精品福利视频| 亚洲一区二区黄| 高清欧美日韩| 精品一区二区成人免费视频 | 西西444www无码大胆| 色94色欧美sute亚洲线路二| 国产区在线视频| 成人乱色短篇合集| 欧美人成在线| 国产黑丝在线观看| 色av一区二区| 日本高清在线观看wwwww色| 51精品国产人成在线观看| 一区在线观看| 亚洲熟妇一区二区三区| 欧美在线观看你懂的| 久热国产在线| 电影午夜精品一区二区三区| 亚洲欧洲一区| 青青草华人在线视频| 欧美一区二区三区男人的天堂 | 国产精品久久97| 久久久久av| 国产毛片毛片毛片毛片毛片毛片| 91国偷自产一区二区开放时间| 色综合久久久久综合一本到桃花网| 5g国产欧美日韩视频| 国产偷自视频区视频一区二区| 欧美福利第一页| 日韩午夜激情av| 中文字幕成在线观看| 日本女人高潮视频| 成年人网站91| 亚洲最大成人av| 国内精品视频在线| 日韩精品免费一区二区在线观看| 亚洲av午夜精品一区二区三区| 色综合中文字幕| 尤物在线网址| 秋霞毛片久久久久久久久| 国产乱码字幕精品高清av| 日韩欧美成人一区二区三区| 久久久成人av| 久久最新网址| 中文字幕99页| 欧美精品v国产精品v日韩精品 | 在线中文字幕不卡| 麻豆蜜桃在线| 亚洲精品日韩精品| 94色蜜桃网一区二区三区|