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

K8S從懵圈到熟練:讀懂此文,集群節點不下線!

開源
排查完全陌生的問題、不熟悉的系統組件,對許多工程師來說是無與倫比的工作樂趣,當然也是一大挑戰。

[[264021]]

排查完全陌生的問題、不熟悉的系統組件,對許多工程師來說是***的工作樂趣,當然也是一大挑戰。今天,阿里巴巴售后技術專家聲東跟大家分享一例 Kubernetes 集群上的問題。這個問題影響范圍較廣,或許某天你也會遇到。更重要的是,作者在問題排查過程中的思路和方法,也會讓你有所啟發。

關于問題

I am Not Ready

阿里云有自己的 Kubernetes 容器集群產品。隨著 Kubernetes 集群出貨量劇增,線上用戶零星地發現,集群會非常低概率地出現節點 NotReady 情況。據我們觀察,這個問題差不多每個月,都會有一兩個用戶遇到。在節點 NotReady 之后,集群 Master 沒有辦法對這個節點做任何控制,比如下發新的 Pod,再比如抓取節點上正在運行 Pod 的實時信息。

需要知道的Kubernetes知識

這里我稍微補充一點 Kubernetes 集群的基本知識。Kubernetes 集群的“硬件基礎”,是以單機形態存在的集群節點。這些節點可以是物理機,也可以是虛擬機。集群節點分為 Master 節點和 Worker 節點。Master 節點主要用來承載集群管控組件,比如調度器和控制器。而 Worker 節點主要用來跑業務。Kubelet 是跑在各個節點上的代理,它負責與管控組件溝通,并按照管控組件的指示,直接管理 Worker節點。

當集群節點進入 NotReady 狀態的時候,我們需要做的***件事情,是檢查運行在節點上的 kubelet 是否正常。在這個問題出現的時候,使用 systemctl 命令查看的kubelet 狀態(kubelet 是 systemd 管理的一個 daemon )發現它是正常運行的。當我們用 journalctl 查看 kubelet 日志的時候,發現以下錯誤。

什么是PLEG?

這個報錯清楚地告訴我們,容器 runtime 是不工作的,且 PLEG 是不健康的。這里容器 runtime 指的就是 docker daemon 。Kubelet 通過操作 docker daemon 來控制容器的生命周期。而這里的 PLEG,指的是 pod lifecycle event generator。PLEG 是 kubelet 用來檢查 runtime 的健康檢查機制。這件事情本來可以由 kubelet 使用 polling 的方式來做。但是 polling 有其高成本的缺陷,所以 PLEG 應用而生。PLEG 嘗試以一種“中斷”的形式,來實現對容器 runtime 的健康檢查,雖然實際上,它同時用了 polling 和”中斷”這樣折中的方案。

基本上,根據上邊的報錯,我們可以確認容器 runtime 出了問題。在有問題的節點上,通過 docker 命令嘗試運行新的容器,命令會沒有響應,這說明上邊的報錯是準確的。

Docker Stack

Docker Daemon調用棧分析

Docker 作為阿里云 Kubernetes 集群使用的容器 runtime ,在1.11之后,被拆分成了多個組件以適應 OCI 標準。拆分之后,其包括 docker daemon,containerd,containerd-shim 以及 runC。組件 containerd 負責集群節點上容器的生命周期管理,并向上為 docker daemon 提供 gRPC 接口。

在這個問題中,既然 PLEG 認為容器 runtime 出了問題,我們需要從 docker daemon 進程看起。我們可以使用 kill -USR1 命令發送 USR1 信號給docker daemon,而 docker daemon 收到信號之后,會把所有線程調用棧輸出到 /var/run/docker 文件夾里。

Docker daemon 進程的調用棧是比較容易分析的。稍加留意,我們會發現大多數的調用棧都長成下圖中的樣子。通過觀察棧上每個函數的名字,以及函數所在的文件(模塊)名稱,我們可以了解到,這個調用棧的下半部分,是進程接到 http 請求,做請求路由的過程;而上半部分則是具體的處理函數。最終處理函數進入等待狀態,等待一個mutex實例。

到這里,我們需要稍微看一下 ContainerInspectCurrent 這個函數的實現。從實現可以看到,這個函數的***個參數,就是這個線程正在操作的容器名指針。使用這個指針搜索整個調用棧文件,我們會找出所有等在這個容器上的線程。同時,我們可以看到下邊這個線程。

這個線程調用棧上的函數 ContainerExecStart 也是在處理相同容器。但不同的是,ContainerExecStart 并沒有在等這個容器,而是已經拿到了這個容器的操作權(mutex),并把執行邏輯轉向了 containerd 調用。關于這一點,我們也可以使用代碼來驗證。前邊我提到過,containerd 通過 gRPC 向上對 docker daemon 提供接口。此調用棧上半部分內容,正是 docker daemon 在通過 gRPC 請求來呼叫containerd。

Containerd調用棧分析

與 docker daemon 類似,我們可以通過 kill -SIGUSR1 命令來輸出containerd 的調用棧。不同的是,這次調用棧會直接輸出到 messages 日志。

Containerd 作為一個 gRPC 的服務器,會在接到 docker daemon 的遠程調用之后,新建一個線程去處理這次請求。關于 gRPC 的細節,我們這里其實不用太多關注。在這次請求的客戶端調用棧上,可以看到這次調用的核心函數在 Start 一個Process 。我們在 containerd 的調用棧里搜索 Start,Process 以及 process.go 等字段,很容易發現下邊這個線程。

這個線程的核心任務,就是依靠 runC 去創建容器進程。而在容器啟動之后,runC 進程會退出。所以下一步,我們自然而然會想到,runC 是不是有順利完成自己的任務。查看進程列表,我們會發現,系統中有個別 runC 進程還在執行,這不是預期的行為。容器的啟動,跟進程的啟動,耗時應該是差不多數量級的,系統里有正在運行的 runC 進程,則說明 runC 不能正常啟動容器。

什么是D-Bus?

RunC請求D-Bus

容器 runtime 的 runC 命令,是 libcontainer 的一個簡單的封裝。這個工具可以用來管理單個容器,比如容器創建和容器刪除。在上節的***,我們發現 runC 不能完成創建容器的任務。我們可以把對應的進程殺掉,然后在命令行用同樣的命令啟動容器,同時用 strace 追蹤整個過程。

分析發現,runC 停在了向帶有 org.free 字段的 dbus socket 寫數據的地方。那什么是 dbus 呢?在 Linux 上,dbus 是一種進程間進行消息通信的機制。

原因并不在 D-Bus

我們可以使用 busctl 命令列出系統現有的所有 bus 。如下圖,在問題發生的時候,我看到問題節點 bus name 編號非常大。所以我傾向于認為,dbus 某些相關的數據結構,比如 name,耗盡了引起了這個問題。

Dbus 機制的實現,依賴于一個組件叫做 dbus daemon。如果真的是 dbus 相關數據結構耗盡,那么重啟這個 daemon,應該可以解決這個問題。但不幸的是,問題并沒有這么直接。重啟 dbus daemon 之后,問題依然存在。

在上邊 strace 追蹤 runC 的截圖中,runC 停在向帶有 org.free 字段的 bus 寫數據的地方。在 busctl 輸出的 bus 列表里,顯然帶有這個字段的 bus,都在被 systemd使用。這時,我們用 systemctl daemon-reexec 來重啟 systemd,問題消失了。所以基本上我們可以判斷一個方向,問題可能跟 systemd 有關。

Systemd是硬骨頭

Systemd 是相當復雜的一個組件,尤其對沒有做過相關開發工作的同學來說,比如我自己。基本上,排查 systemd 的問題,我用到了四個方法,(調試級別)日志,core dump,代碼分析,以及 live debugging。其中***個,第三個和第四個結合起來使用,讓我在經過幾天的鏖戰之后,找到了問題的原因。但是這里我們先從“沒用”的 core dump 說起。

“沒用的”Core Dump

因為重啟 systemd 解決了問題,而這個問題本身,是 runC 在使用 dbus 和systemd 通信的時候沒有了響應,所以我們需要驗證的***件事情,就是 systemd不是有關鍵線程被鎖住了。查看 core dump 里所有線程,只有以下一個線程,此線程并沒有被鎖住,它在等待 dbus 事件,以便做出響應。

零散的信息

因為無計可施,所以只能做各種測試、嘗試。使用 busctl tree 命令,可以輸出所有bus 上對外暴露的接口。從輸出結果看來,org.freedesktop.systemd1 這個 bus 是不能響應接口查詢請求的。

使用下邊的命令,觀察 org.freedesktop.systemd1 上接受到的所以請求,可以看到,在正常系統里,有大量 Unit 創建刪除的消息,但是有問題的系統里,這個 bus 上完全沒有任何消息。

gdbus monitor --system --dest org.freedesktop.systemd1 --object-path /org/freedesktop/systemd1

分析問題發生前后的系統日志,runC在重復的跑一個libcontainer_%d_systemd_test_default.slice 測試,這個測試非常頻繁,但是當問題發生的時候,這個測試就停止了。所以直覺告訴我,這個問題,可能和這個測試有很大的關系。

另外,我使用 systemd-analyze 命令,打開了 systemd 的調試級別日志,發現 systemd 有 Operation not supported 的報錯。

根據以上零散的知識,可以給出一個大概的結論:org.freedesktop.systemd1 這個 bus 在經過大量 unit 創建刪除之后,沒有了響應。而這些頻繁的 unit 創建刪除測試,是 runC 某一個改動引入的。這個改動使得 UseSystemd 函數通過創建 unit 來測試 systemd 的功能。UseSystemd 在很多地方被調用,比如創建容器,或者查看容器性能等操作。

代碼分析

這個問題在線上所有 Kubernetes 集群中,發生的頻率大概是一個月兩例。問題一直在發生,且只能在問題發生之后,通過重啟 systemd 來處理,這風險極大。

我們分別給 systemd 和 runC 社區提交了 bug,但是一個很現實的問題是,他們并沒有像阿里云這樣的線上環境,他們重現這個問題的概率幾乎是零,所以這個問題沒有辦法指望社區來解決。硬骨頭還得我們自己啃。

在上一節***,我們看到了,問題出現的時候,systemd 會輸出一些 Operation not supported 報錯。這個報錯看起來和問題本身風馬牛不相及,但是直覺告訴我,這,或許是離問題最近的一個地方,所以我決定,先搞清楚這個報錯因何而來。

Systemd 代碼量比較大,而報這個錯誤的地方非常多。通過大量的代碼分析(這里略去一千字),我發現有幾處比較可疑地方,有了這些可疑的地方,接下來需要做的事情,就是等待。在等了三周以后,終于有線上集群,再次重現了這個問題。

Live Debugging

在征求用戶同意之后,下載 systemd 調試符號,掛載 gdb 到 systemd 上,在可疑的函數下斷點,continue 繼續執行。經過多次驗證,發現 systemd 最終踩到了sd_bus_message_seal 這個函數里的 EOPNOTSUPP 報錯。

這個報錯背后的道理是,systemd 使用了一個變量 cookie,來追蹤自己處理的 dbus message 。每次在加封一個新的 message 的時候,systemd 會先給 cookie的值加一,然后再把這個值復制給這個新的 message。

我們使用 gdb 打印出 dbus->cookie 這個值,可以很清楚看到,這個值超過了0xffffffff 。所以看起來,問題是 systemd 在加封過大量 message 之后,cookie 這個值32位溢出了,導致新的消息不能被加封,從而使得 systemd 對 runC 沒有了響應。

另外,在一個正常的系統上,使用 gdb 把 bus->cookie 這個值改到接近 0xffffffff,然后觀察到,問題在 cookie 溢出的時候立刻出現,則證明了我們的結論。

怎么判斷集群節點NotReady是這個問題導致的

首先我們需要在有問題的節點上安裝 gdb 和 systemd debuginfo,然后用命令 gdb /usr/lib/systemd/systemd1 把 gdb attach 到 systemd ,在函數sd_bus_send 設置斷點,然后繼續執行。等 systemd 踩到斷點之后,用 p /x bus->cookie 查看對應的cookie值,如果此值超過了 0xffffffff,那么 cookie 就溢出了,則必然導致節點 NotReady 的問題。確認完之后,可以使用 quit 來 detach 調試器。

問題修復

這個問題的修復,并沒有那么直截了當。原因之一,是 systemd 使用了同一個 cookie 變量,來兼容 dbus1 和 dbus2 。對于 dbus1 來說, cookie 是32位的,這個值在經過 systemd 三五個月頻繁創建刪除 unit 之后,是肯定會溢出的;而 dbus2 的 cookie 是64位的,可能到了時間的盡頭,它也不會溢出。

另外一個原因是,我們并不能簡單的讓 cookie 折返,來解決溢出問題。因為這有可能導致 systemd 使用同一個 cookie 來加封不同的消息,這樣的結果將是災難性的。

最終的修復方法是,使用32位 cookie 來同樣處理 dbus1 和 dbus2 兩種情形。同時在 cookie 達到 0xfffffff 的之后,下一個 cookie 則變成 0x80000000,即用***位來標記 cookie 已經處于溢出狀態。檢查到 cookie 處于這種狀態時,我們需要檢查是否下一個 cookie 正在被其他 message 使用,來避免 cookie 沖突。

后記

這個問題根本原因肯定在 systemd,但是 runC 的函數 UseSystemd 使用不那么美麗的方法,去測試 systemd 的功能,而這個函數在整個容器生命周期管理過程中,被頻繁的調用,讓這個低概率問題的發生成為了可能。systemd 的修復已經被紅帽接受,預期不久的將來,我們可以通過升級 systemd,從根本上解決這個問題。

責任編輯:武曉燕 來源: 阿里技術
相關推薦

2019-05-17 15:16:24

Kubernetes容器集群

2023-11-20 10:11:05

集群節點Kubernetes

2019-07-29 08:03:20

Kubernetes集群服務架構

2025-04-01 00:06:50

JavaK8sSpring

2024-12-30 08:58:04

2023-09-06 08:12:04

k8s云原生

2021-04-14 15:54:20

Kubernetes程序工具

2023-03-05 21:50:46

K8s集群容量

2023-09-03 23:58:23

k8s集群容量

2023-10-27 23:10:17

K8s框架kubebuilde

2021-04-22 09:46:35

K8SCluster Aut集群

2020-10-16 18:30:41

K8SDockerCRI-O

2017-06-26 09:15:39

SQL數據庫基礎

2022-04-22 13:32:01

K8s容器引擎架構

2020-02-29 15:20:18

K8SKubernetes集群

2022-12-28 10:52:34

Etcd備份

2024-05-27 00:00:10

KubernetesK8s云原生

2022-02-18 10:47:47

微服務k8s項目

2023-09-07 08:58:36

K8s多集群

2021-11-04 07:49:58

K8SStatefulSetMySQL
點贊
收藏

51CTO技術棧公眾號

亚洲制服中文字幕| 中国成人在线视频| 国产精品无码粉嫩小泬| 91精品久久久久久久蜜月| 欧美成人国产一区二区| 黄色一级大片在线观看| www.亚洲免费| 东方欧美亚洲色图在线| 国产精品久久久久久久久久久久 | www.国产黄色| 国产精品视频| 欧美日韩aaaa| 亚洲女同二女同志奶水| 精品国产午夜肉伦伦影院| 欧美视频精品在线观看| 久久久久久免费看| 精产国品自在线www| 91色乱码一区二区三区| 亚洲自拍中文字幕| 国产精品午夜一区二区| 尤物精品在线| 久热爱精品视频线路一| 国产真人做爰视频免费| 黄色欧美网站| 日韩免费视频一区| 爱豆国产剧免费观看大全剧苏畅| 亚洲私拍视频| 亚洲国产视频a| www.亚洲一区二区| yw在线观看| 久久精品视频免费| 精品一卡二卡三卡四卡日本乱码 | 国产精品啪啪啪视频| 黄色片在线看| 2021中文字幕一区亚洲| 国产综合18久久久久久| 成人午夜福利视频| 懂色一区二区三区免费观看| 91在线国产电影| 一级二级三级视频| 蜜臀av性久久久久蜜臀aⅴ | 久久久另类综合| 精品一区二区三区自拍图片区 | 国产成人h网站| 成人午夜高潮视频| 一级黄色a毛片| 精品在线观看免费| 国产深夜精品福利| 一二三四区在线| 黄页网站大全一区二区| 国产美女被下药99| 亚洲天堂狠狠干| 久久成人精品无人区| 国产在线视频一区| 91亚洲精品国偷拍自产在线观看| 蜜桃视频在线观看一区| 国产免费一区二区三区香蕉精| 超碰在线97观看| 日韩电影在线观看电影| 国产精品网红福利| 国产精品爽爽久久| 国产精品亚洲а∨天堂免在线| 5g影院天天爽成人免费下载| www国产在线| 成人手机在线视频| 国产综合动作在线观看| 黄色软件在线| 国产精品短视频| xxxxxx在线观看| 美女视频在线免费| 色婷婷激情综合| 在线观看免费的av| 91成人入口| 日韩精品欧美国产精品忘忧草 | 久久一区二区电影| 亚洲男人都懂第一日本| 亚洲午夜性刺激影院| xxxxx99| 一级欧洲+日本+国产| 久久久久久91香蕉国产| 黄色在线视频网址| 九色综合狠狠综合久久| www 成人av com| 玖玖综合伊人| 亚洲欧美一区二区久久| 人妻av无码专区| 久久91导航| 制服视频三区第一页精品| 怡红院一区二区| 精品美女在线视频| 九九热99久久久国产盗摄| 日产精品久久久| 久久99最新地址| 精品国产中文字幕| 日本中文在线| 五月天网站亚洲| 成人综合久久网| 女人抽搐喷水高潮国产精品| 日韩在线中文字| 黄色一级片免费在线观看| 精品一区二区日韩| 蜜桃传媒一区二区| 亚洲男同gay网站| 91国产免费看| 国产极品一区二区| 天天综合网91| 国产成人涩涩涩视频在线观看| 91精品视频免费在线观看| 高清成人免费视频| 一区二区三区免费看| 亚洲欧洲自拍| 精品国产乱码久久久久久免费| 欧洲美熟女乱又伦| 亚洲黄色天堂| 91精品在线播放| 成人免费视频| 色综合一区二区三区| 亚洲黄色小说在线观看| 91日韩在线| 国产精品69av| 亚洲欧美综合在线观看| 亚洲精品成a人| 性chinese极品按摩| 一本久久青青| 7m精品福利视频导航| 精品免费久久久| 国产精品第13页| www.日本xxxx| 九九视频免费观看视频精品| 97视频国产在线| 亚洲欧美激情另类| 亚洲乱码日产精品bd| www.se五月| 97精品视频| 国产精品一区二区性色av| 欧美孕妇孕交| 欧美日韩免费看| 岛国精品资源网站| 亚洲久色影视| 国产一区在线免费| 黄网站在线观| 精品免费一区二区三区| 欧美成人一二三区| 国产呦萝稀缺另类资源| 男人的天堂成人| 未满十八勿进黄网站一区不卡| 国产亚洲人成a一在线v站| 国产女主播喷水视频在线观看| 99久久99久久精品免费观看| 久久久久久人妻一区二区三区| 给我免费播放日韩视频| 欧美激情第三页| 亚洲国产精彩视频| 亚洲成人精品在线观看| 黄色录像a级片| 美女精品在线观看| 亚洲高清精品中出| 亚洲精品成a人ⅴ香蕉片| 久久精品一偷一偷国产| 国产激情视频在线播放| 亚洲高清不卡在线观看| 99精品一区二区三区无码吞精| 一本综合精品| 欧美一区二区在线| 成人黄页网站视频| 久热精品视频在线| 人妻一区二区三区免费| 天天综合天天综合色| 中国毛片在线观看| 精品一区二区三区免费视频| 日韩一级特黄毛片| 偷窥自拍亚洲色图精选| 国产精品 欧美在线| 激情在线小视频| 亚洲精品短视频| 免费的毛片视频| 亚洲欧洲国产日韩| 欧美熟妇精品一区二区蜜桃视频| 亚洲尤物影院| av不卡在线免费观看| 97色婷婷成人综合在线观看| 欧美精品18videosex性欧美| 国产在线高清| 一本大道久久a久久综合婷婷| 殴美一级黄色片| 床上的激情91.| 五月婷婷之综合激情| 欧美精品网站| 日韩欧美亚洲区| 波多野结衣欧美| 国产精品入口夜色视频大尺度| 91极品在线| 中文字幕av一区二区三区谷原希美| 国产麻豆免费观看| 欧美午夜无遮挡| 一区二区成人免费视频| 久久免费看少妇高潮| 欧美性猛交xxxx乱大交91| 亚洲在线观看| 久久香蕉视频网站| 精品大片一区二区| 国产伦精品一区| 国产高清亚洲| 国产suv精品一区二区三区88区| av网址在线免费观看| 亚洲网址你懂得| 天天操天天干天天插| 欧美精品久久久久久久久老牛影院| 国产又大又黑又粗免费视频| 亚洲色图视频网站| 久久日免费视频| 91麻豆福利精品推荐| 国产精品一级无码| 久久国内精品自在自线400部| 国产亚洲欧美在线视频| 欧美黄色免费| 中文字幕一区二区三区四区五区六区 | 久久99日本精品| 黄在线观看网站| 亚洲国产精品第一区二区| 异国色恋浪漫潭| 色777狠狠狠综合伊人| 久久久久久久久久久久久久一区| 日韩成人在线看| 成人免费视频a| 国产精品伦一区二区| 日韩av不卡电影| av资源在线播放| 欧美精品久久久久a| 成人日日夜夜| 久久久国产一区二区| av网站在线播放| 一区二区三区四区在线观看视频| 裸体xxxx视频在线| 日韩精品在线视频观看| 亚洲色图另类小说| 亚洲精美色品网站| 视频一区二区免费| 亚洲国产精品热久久| 手机av在线免费观看| 亚洲精品美女在线| 天堂中文在线官网| 日韩精品久久久久久福利| 亚洲区小说区图片区| 亚洲精品av在线| 亚洲 欧美 激情 小说 另类| 日韩高清有码在线| 欧美黄色小说| 尤物精品国产第一福利三区| 成人亚洲综合天堂| 色婷婷av一区二区三区在线观看| yw在线观看| 久久亚洲精品中文字幕冲田杏梨| 乱人伦中文视频在线| 久久精品国产精品| 性xxxxfjsxxxxx欧美| 欧美激情精品久久久久| www在线看| 欧美一级电影免费在线观看| 电影网一区二区| 国产精品美腿一区在线看| 国产成人77亚洲精品www| 成人国产精品久久久久久亚洲| 国产精品国产三级在线观看| 成人精品一二区| 精品视频在线你懂得| 日本成人黄色| 日韩一区二区中文| 中文字幕の友人北条麻妃| 亚洲三级毛片| 精品久久久噜噜噜噜久久图片| 国产中文一区二区三区| 扒开伸进免费视频| 久久免费精品国产久精品久久久久| 一级黄色毛毛片| 亚洲精品乱码久久久久久久久 | 麻豆精品国产传媒mv男同 | 一区二区三区视频播放| 九九99玖玖| 日韩在线欧美| 欧美一区二区激情| 久久亚洲精品伦理| 四虎1515hh.com| 2024国产精品视频| 毛片aaaaaa| 亚洲一区二区中文在线| 不卡av电影在线| 日韩午夜激情电影| 免费人成在线观看网站| 久久av资源网站| 波多野结衣亚洲一二三| 91在线国产电影| 国产精品欧美日韩一区| 国内自拍中文字幕| 久久在线91| 国产伦理在线观看| 欧美激情一区在线| 日韩福利片在线观看| 欧美精品自拍偷拍动漫精品| 午夜福利一区二区三区| 另类图片亚洲另类| 高清成人在线| 国产伦精品一区二区三毛| **女人18毛片一区二区| 精品中文字幕av| 粉嫩在线一区二区三区视频| 国产又粗又长又黄的视频| 天天综合天天综合色| www.好吊色| 色99之美女主播在线视频| 日本在线播放一二三区| 97超级碰碰| 天天操综合网| 在线观看av日韩| 久久久久久电影| 日本va欧美va国产激情| 欧美成人video| 精品国产丝袜高跟鞋| 国产精品久久久久久久美男| 色天下一区二区三区| 男女激情免费视频| 国产精品系列在线观看| 亚洲欧洲综合网| 欧美又粗又大又爽| 欧美日韩伦理片| 91成人在线播放| 老汉色老汉首页av亚洲| 久艹在线免费观看| 成人性视频网站| 欧美国产在线看| 91精品国产欧美一区二区成人 | 国产精品亚洲片在线播放| 欧美成人一区二区在线观看| 成人国产精品免费观看动漫| 久草视频手机在线观看| 欧美一级在线观看| 菠萝菠萝蜜在线视频免费观看| 成人综合网网址| 7777久久香蕉成人影院| 久久精品久久99| 一片黄亚洲嫩模| 黄色福利在线观看| 午夜精品一区二区三区在线视频| 91大神精品| 国产素人在线观看| 99re热视频这里只精品| 丁香六月婷婷综合| 亚洲三级免费看| 影视一区二区三区| 亚洲国产精品日韩| 久久er99热精品一区二区| 三级在线观看免费大全| 日韩欧美亚洲另类制服综合在线| 麻豆av在线免费观看| 国产自产精品| 天堂久久久久va久久久久| 国产一区二区三区四区在线| 欧美日本一区二区三区| 国产在线观看91| 高清不卡日本v二区在线| 亚洲精品麻豆| 黄色三级生活片| 欧美一区二区福利在线| 黄色美女视频在线观看| 久久99精品久久久久久水蜜桃| 亚洲欧美日韩精品一区二区| 日韩毛片无码永久免费看| 91精品一区二区三区在线观看| 亚洲综合图区| 日本在线视频不卡| 国产美女久久久久| 国产污污视频在线观看| 国产亚洲一区二区在线| 伊人久久综合网另类网站| 男人天堂a在线| 国产喷白浆一区二区三区| 国产精品爽爽久久| 91精品国产乱码久久久久久久久 | 无码人妻丰满熟妇区96| 国产区在线观看成人精品| 亚洲中文字幕在线观看| 午夜精品美女自拍福到在线| 国产探花一区二区| 91精品人妻一区二区三区蜜桃2| 欧美日韩激情小视频| 3p视频在线观看| 国产在线一区二| 韩国成人在线视频| 在线天堂中文字幕| 久久这里只有精品视频首页| 天天做夜夜做人人爱精品 | 国产精品美女一区二区在线观看| 99国产精品99| 日韩美女免费观看| 最新国产精品| 性欧美精品男男| 精品久久久久久久久久久久久久久| 欧美日韩五码| 2019日韩中文字幕mv| 日韩一区有码在线|