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

Kube-apiserver 又 OOM 了?

云計算 云原生
我們經常看到各種源碼分析,原理解析的文章,容易輕信其內容,但隨著版本迭代,以及一些細節的處理,可能會導致我們理解不到位,或者并不能真正的掌握。

由來

前一篇已經介紹了 Informer 的實現,Informer 對 kube-apiserver 發起了 list 和 watch 請求。我們知道大規模集群下,kube-apiserver 會成為瓶頸,尤其在內存方面,相信很多人也遇到過 kube-apiserver OOM 等問題(碰巧的是最近線上連續出現兩次 kube-apiserver OOM 的問題)。本篇主要講 kube-apiserver 中 Informer 需要用到的兩個接口 list 和 watch 的實現。

網上搜索的話,可以找到大量相關的源碼解析的文章,這里我并不會去過多涉及代碼,主要還是以講原理、流程為主,最后簡單介紹下當前存在的問題,理論實踐相結合。本篇主要講當前實現,只有了解了當前實現,明白了為什么會有問題,才知道如何去解決問題,接下來的一篇會詳細分析如何解決這些問題。

原理

Cacher 加載

圖片圖片

核心組件:Cacher,watchCache,cacheWatcher,reflector。其中 watchCache 作為 reflector 的 store,Etcd 作為 listerWatcher 的 storage,store 和 listerWatcher 作為參數用來構造 reflector。數據流大致如下:

  1. kube-apiserver 啟動,針對每種資源類型,調用其對應 cacher 的 startCaching,進而調用 reflector.ListAndWatch,觸發 listerWatcher 的 list 和 watch,對應 Etcd list 之后再 watch,watch 時會創建 watchChan,從 Etcd 讀到的結果會先進入到 watchChan 的 incomingEventChan 中,經過 transform 處理后發送到 watchChan 的 resultChan 中,供 reflector 消費;
  2. reflector 會消費上述 resultChan 的數據,即 watch.Event 對象,并根據事件類型調用 store 的增刪改方法,此處 store 即 watchCache,經過 watchCache.processEvent 處理,組裝 watchCacheEvent 對象,更新 watchCache 的 cache(大小自適應的喚醒緩沖區,保留歷史 event)和 store(全量數據),并最終通過 eventHandler 將其發送到 cacher 的 incoming chan 中;
  3. cacher.dispatchEvents 消費 incoming chan 的數據,經過處理后發送給每個 cacheWatcher 的 input chan;
  4. 外部調用 kube-apiserver watch 請求后會創建一個對應的 cacheWachter 對象,最終到 cacheWatcher 的 Watch 處理機中,消費 input chan,調用 watchCacheEvent 進行事件分發;

圖片圖片

Cacher 數據流

用來緩存數據的核心結構是 watchCache,其內部又兩個關鍵結構:cache(cyclic buffer),store(thread safe store),分別用來存儲歷史的 watchCacheEvent 和真實的資源對象,其中 store 里面存儲的是全量對象,而 cache 雖然是自適應大小的,但還是有最大容量限制的,所以他存儲的 watchCacheEvent 所代表的對象集合并不一定能覆蓋 store 的全部數據。

歷史問題

kube-apiserver 在優化自身內存使用方面做了很多優化了,不過至今仍然存在一些尚未完全解決的問題。

kube-apiserver OOM

內存消耗來源

kube-apiserver 的內存消耗,主要兩個來源:

  1. 一部分來自于他緩存了集群所有數據(Event 除外,此 Event 為 k8s 的資源類型),并且為每種資源緩存了歷史 watchCacheEvent,以及一些內部的數據結構和 chan 等,這部分是不可避免的,雖然可以適當優化,但作用并不大;
  2. 另一部分來自于客戶端請求,尤其是 list 請求,kube-apiserver 需要在內存中進行數據深拷貝,序列化等操作,所需內存量和數據量、請求量正相關,隨著數據量的增加,請求量的增加,所需要的內存也越大,而且這部分的內存通過 golang GC 是沒有辦法完全回收的,而 list 請求的主要來源就是 Informer;

list 請求占用內存多的原因如下:

  1. 默認情況下(沒有指定 resourceversion 的情況下),直接從etcd獲取數據可能需要大量內存,超過數據存儲的完整響應大小數倍;
  2. 請求明確指定 ResourceVersion 參數來從緩存中獲取數據(例如,ResourceVersinotallow="0"),這實際上是大多數基于 client-go 的控制器因性能原因而使用的方法。內存使用量將比第一種情況低得多。但這并不是完美的,因為我們仍然需要空間來存儲序列化對象并保存完整響應,直到發送。

常見場景

有兩個常見的容易引起 kube-apiserver OOM 的場景:

  1. 一些 DaemonSet 之類的程序里面用到了 Informer,在進行變更,或者故障重啟的時候,隨著集群規模的增加,請求量也隨之增加,對 kube-apiserver 內存的壓力也增加,在沒有任何防護措施(限流)的情況下,很容易造成 kube-apiserver 的 OOM,而且在 OOM 之后,異常連接轉移到其他 master 節點,引起雪崩。理論上也屬于一種容量問題,應對措施擴容(加 master 節點)、限流(服務端限流:APF、MaxInflightRequest等,及客戶端限流)。
  2. 某種類型資源的數據量很大,kube-apiserver 配置的 timeout 參數太小,不足以支持完成一次 list 請求的情況下,Informer 會一直不斷地嘗試進行 list 操作,這種情況多發生在控制面組件,因為他們往往需要獲取全量數據。

too old resource version

原理

嚴格說,這并不能算是一個問題,機制如此,理論上單機資源無限的情況下是可以避免這個現象的。為了方便描述,用 RV 代指 resourceversion。

其本質是客戶端在調用 watch api 時攜帶非 0 的 RV,服務端在走到 cacher 的 watch 實現邏輯時需要根據傳入的 RV 去 cyclic buffer 中二分查找大于 RV 的所有 watchCacheEvent 作為初始 event 返回給客戶端。當 cyclic buffer 的最小 RV 還要比傳入的 RV 大時,也就是說服務端緩存的事件的最小 RV 都要比客戶端傳過來的大,意味著緩存的歷史事件不全,可能是因為事件較多,緩存大小有限,較老的 watchCacheEvent 已經被覆蓋了。

常見場景

  1. 這種情況多發生在 kubelet 連接 apiserver 的場景下,或者說 watch 帶了 labelselector 或 fieldselector 的情況下。因為每個 kubelet 只關心自己節點的 Pod,如果自身節點 Pod 一直沒有變化,而其他節點上的 Pod 變化頻繁,則可能 kubelet 本地 Informer 記錄的 last RV 就會比 cyclic buffer 中的最小的 RV 還要小,這時如果發生重連(網絡閃斷,或者 Informer 自身 timeout 重連),則可以在 kube-apiserver 的日志中看到 "too old resoure version" 的字樣。
  2. kube-apiserver 重啟的場景,如果集群中部分類型資源變更頻繁,部分變更不頻繁,則對于去 watch 變更不頻繁的資源類型的 Informer 來說起本地的 last RV 是要比最新的 RV 小甚至小很多的,在 kube-apiserver 發生重啟時,他以本地這個很小的 RV 去 watch,還是有可能會觸發這個問題;

客戶端 Informer 遇到這個報錯的話會退出 ListAndWatch,重新開始執行 LIstAndWatch,進而造成 kube-apiserver 內存增加甚至 OOM。問題本質原因:RV 是全局的。場景的景本質區別在于場景 1 是在一種資源中做了篩選導致的,場景 2 是多種資源類型之間的 RV 差異較大導致的。

優化

經過上述分析,造成這個問題的原因有兩個:

  1. cyclic buffer 長度有限;
  2. 客戶端 Informer 持有的 last RV 過于陳舊;

社區也已經在多個版本之前進行了優化來降低這個問題出現的概率。

針對問題一,采用了自適應窗口大小,雖然還是會有問題,但相比之前寫死一個值出現問題的概率要小,同時在不必要的時候縮小長度,避免內存資源的浪費。

針對問題二,有兩個優化,引入了 BOOKMARK 機制來優化同一種資源不同篩選條件導致的問題,BOOKMARK 是一種 event 類型,定期將最新的 RV 返回客戶端;引入 ProgressNotify 解決多種資源類型 RV 差異較大,在 kube-apiserver 重啟后,Informer resume 時導致的問題,本質是利用了 Etcd 的 clientv3 ProgressNotify 的機制,kube-apiserver 在 Watch Etcd 的時候攜帶了特定的 Options 開啟此功能。ProgressNotify 參考 Etcd 官方文檔[1]:

WithProgressNotify makes watch server send periodic progress updates every 10 minutes when there is no incoming events. Progress updates have zero events in WatchResponse.

詳情可以參考如下 KEP 956-watch-bookmark[2] 和 1904-efficient-watch-resumption[3]

stale read

這更是一個歷史悠久的問題了,自從有了 watchCache 之后就有了這個問題,本質是將之前直接訪問 Etcd 時的線性一致性讀(Etcd 提供的能力),降級成了讀 kube-apiserver cache 的順序一致性。

場景

  1. T1: StatefulSet controller creates pod-0 (uid 1) which is scheduled to node-1
  2. T2: pod-0 is deleted as part of a rolling upgrade
  3. node-1 sees that pod-0 is deleted and cleans it up, then deletes the pod in the api
  4. The StatefulSet controller creates a second pod pod-0 (uid 2) which is assigned to node-2
  5. node-2 sees that pod-0 has been scheduled to it and starts pod-0
  6. The kubelet on node-1 crashes and restarts, then performs an initial list of pods scheduled to it against an API server in an HA setup (more than one API server) that is partitioned from the master (watch cache is arbitrarily delayed). The watch cache returns a list of pods from before T2
  7. node-1 fills its local cache with a list of pods from before T2
  8. node-1 starts pod-0 (uid 1) and node-2 is already running pod-0 (uid 2).

詳情可以參考 issue 59848[4]。

思考

我們經常看到各種源碼分析,原理解析的文章,容易輕信其內容,但隨著版本迭代,以及一些細節的處理,可能會導致我們理解不到位,或者并不能真正的掌握。例如是否在 list 請求時傳 RV=0 就一定會走 kube-apiserver 的緩存?網上搜的話,應該都是說會走,但看代碼你會發現并不是這樣,例如當 kube-apiserver 重啟后數據還沒有完全加載好的時候,遇到 list 帶了 RV=0 的請求會直接去訪問 Etcd 獲取數據。看似不起眼的細節,可能會影響我們處理問題的思路,比如 Etcd 負載較高要查原因,如果你知道這個細節的話,就會有意識的去看所有的 list 請求,而不只是那些 RV != 0 的請求。

最后留一個思考,kube-apiserver 的內存壓力主要來自 list 請求,那么我們是否可以不使用 list 請求而是使用一種流式處理來實現 list 的功能呢?這樣是不是就可以把內存消耗限制在一個常數的空間復雜度范圍內了?下一篇將會專門分析使用流式 api 解決 list 導致的內存暴漲的問題,敬請期待~

參考資料

[1]Etcd: https://pkg.go.dev/github.com/coreos/etcd/clientv3#WithProgressNotify

[2]bookmark: https://github.com/kubernetes/enhancements/blob/master/keps/sig-api-machinery/956-watch-bookmark/README.md

[3]watch-resumption: https://github.com/kubernetes/enhancements/blob/c63ac8e05de716370d1e03e298d226dd12ffc3c2/keps/sig-api-machinery/1904-efficient-watch-resumption/README.md

[4]stale read: https://github.com/kubernetes/kubernetes/issues/59848

責任編輯:武曉燕 來源: 云原生散修
相關推薦

2023-12-02 20:41:32

內存kube

2023-03-10 08:24:27

OOMdump線程

2022-03-16 07:58:02

OOMdubbo內存

2023-07-18 19:11:21

配置信令系統

2021-09-09 18:12:22

內存分段式網絡

2022-10-10 08:05:34

線程池OOM問題

2021-11-05 11:10:13

MyBatisSQL查詢

2017-12-28 10:44:08

JavaScript瀏覽器網頁

2014-07-23 10:19:02

小米4

2020-03-31 16:02:23

戴爾

2022-10-17 10:13:58

谷歌云游戲

2022-12-07 07:35:20

B站裁員隱情

2021-07-22 07:50:47

刪庫系統數據

2020-07-08 09:50:37

Java內存快速定位

2019-05-27 08:09:43

WiFi無線信道上網

2020-10-27 10:50:04

軟件教父網絡

2022-10-14 08:18:07

Guavaweb應用

2023-11-26 09:04:10

Vue性能

2020-07-30 07:47:32

互聯網

2022-11-18 07:34:12

Docker項目目錄
點贊
收藏

51CTO技術棧公眾號

一区二区欧美精品| 久久久蜜桃一区二区人| 日韩一区国产二区欧美三区| 国产欧美精品aaaaaa片| 人妻妺妺窝人体色www聚色窝| 夜夜嗨av一区二区三区网站四季av| 亚洲欧美色婷婷| 婷婷激情综合五月天| 国产乱码在线| 久久久蜜桃精品| 亚洲影院色无极综合| 成年人免费高清视频| 91欧美在线| 日韩大片免费观看视频播放| 日韩视频免费在线播放| 日韩av中文| av电影一区二区| 成人性教育视频在线观看| 日本一区二区三区免费视频| 99久久.com| 亚洲天堂影视av| 在线播放av网址| 中文字幕成人| 在线精品视频免费观看| 18禁裸男晨勃露j毛免费观看| yw视频在线观看| 26uuu色噜噜精品一区二区| 日韩va欧美va亚洲va久久| 亚洲精品狠狠操| 无套白嫩进入乌克兰美女| 国精产品一区一区三区四川| 午夜亚洲国产au精品一区二区| 日韩精品资源| 国产资源在线观看| 91在线porny国产在线看| 97中文在线观看| 99久久国产免费| 日韩国产精品久久久久久亚洲| 国模叶桐国产精品一区| 99久久婷婷国产综合| 欧美日韩性在线观看| 亚洲精品综合久久中文字幕| 国产原创剧情av| 欧美日韩中出| 欧美日韩国产美| 色综合天天色综合| 日韩精品三区| 在线观看av一区| 激情综合网婷婷| 美女搞黄视频在线观看| 午夜精品久久久久久久99樱桃| 中文字幕色呦呦| 中文字幕在线播放网址| 亚洲欧美二区三区| 久久免费一级片| 污视频网站免费在线观看| 亚洲欧美色图小说| 特大黑人娇小亚洲女mp4| а√天堂在线官网| 一区二区三区在线看| 天天在线免费视频| 日本三级在线观看网站| 亚洲图片欧美综合| 黄色av网址在线播放| 三级中文字幕在线观看| 色美美综合视频| 男女啪啪网站视频| 国产成人精品一区二区三区在线| 欧美日韩美少妇 | 欧美激情日韩| 久久久久国产一区二区三区| 日本少妇裸体做爰| 久久精品一区| 国产欧美最新羞羞视频在线观看| 国产又色又爽又黄又免费| 久久超碰97中文字幕| 91成人免费看| 香蕉视频911| 欧美极品另类videosde| 综合国产精品久久久| 日韩av毛片| 福利视频导航一区| 国产精品人人爽人人爽| 久久在线观看| 精品视频偷偷看在线观看| 免费成人深夜天涯网站| 欧美激情四色| 热久久视久久精品18亚洲精品| 真实新婚偷拍xxxxx| 国产在线播放一区三区四| 国产伦理一区二区三区| 国产福利在线视频| 一区二区三区四区高清精品免费观看| 青青草国产精品视频| 国产超碰精品| 日韩欧美成人一区二区| 国产毛片久久久久久久| 成人vr资源| 欧美激情一级二级| 国产一卡二卡三卡| 国产suv精品一区二区6| 日韩精品资源| av成人 com a| 91麻豆精品国产| 日本黄色网址大全| 亚洲综合专区| 国产精品白嫩美女在线观看| 精品国产999久久久免费| 久久久久亚洲蜜桃| 国产在线xxxx| 亚洲欧美一级| 亚洲视频一区二区三区| 久久精品免费在线| 精品一区二区三区不卡| 欧美午夜精品久久久久免费视 | 国产av无码专区亚洲av| 久久精品一区八戒影视| 欧美亚洲色图视频| 国产第一亚洲| 国产亚洲欧美日韩一区二区| 精品在线免费观看视频| 国产一区三区三区| 日韩视频在线播放| 在线看片福利| 亚洲成人av在线播放| 日本爱爱小视频| 日韩高清在线不卡| 国产一区免费在线| 免费在线播放电影| 91精品在线免费| 性爱在线免费视频| 日韩av在线免费观看不卡| 国产视频99| 久久免费电影| 日韩精品一区在线| 特级片在线观看| 韩国v欧美v亚洲v日本v| 亚洲欧洲精品在线观看| 欧美aaa大片视频一二区| 亚洲精品www| 国产精品成人免费一区二区视频| 国产成人亚洲综合a∨婷婷 | 国产精品免费一区二区三区在线观看| 麻豆视频在线播放| 欧美日韩成人激情| 亚洲欧美精品久久| 精品一区二区三区免费视频| 亚洲开发第一视频在线播放| 九色成人搞黄网站| 亚洲色图欧美制服丝袜另类第一页| 圆产精品久久久久久久久久久| heyzo一本久久综合| 99在线免费视频观看| 成人另类视频| 97碰碰碰免费色视频| 亚洲av成人无码网天堂| 天天综合网天天综合色| 你懂得在线视频| 亚洲一区不卡| 日韩女优中文字幕| 国产第一亚洲| 久久99热这里只有精品国产| 国模人体一区二区| 丁香五六月婷婷久久激情| 久久只有这里有精品| 日本午夜一本久久久综合| 亚洲成人a**址| 国产精品成人3p一区二区三区| 久久中文字幕一区| 亚洲黄色小说网址| 欧美视频13p| 欧美自拍偷拍网| 国产自产v一区二区三区c| 国产精品videossex国产高清| 老汉色老汉首页av亚洲| 国产精品成av人在线视午夜片| 99青草视频在线播放视| 日韩一级片在线播放| 日韩欧美中文字幕一区二区| 国产午夜精品一区二区三区视频| 免费看涩涩视频| 欧美日韩一区自拍| 日韩av高清| 欧美第一在线视频| 情事1991在线| 中中文字幕av在线| 亚洲天堂av在线播放| 国产精品无码一区二区桃花视频| 亚洲成人黄色影院| 日韩一区二区三区四区视频| 国产成人精品一区二区三区四区 | 国语自产精品视频在线看抢先版结局 | 亚洲成人7777| 少妇的滋味中文字幕bd| 福利一区福利二区| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 欧美三级情趣内衣| 99精彩视频在线观看免费| 亚洲欧美se| 欧美疯狂性受xxxxx另类| 黄色软件在线| 亚洲成色777777女色窝| 夜夜骚av一区二区三区| 天天影视涩香欲综合网| 国产传媒免费在线观看| 久久九九久久九九| 亚洲自拍偷拍精品| 精品一区二区三区视频在线观看| 欧美日韩第二页| 激情欧美国产欧美| 伊人情人网综合| 国产精品入口久久| 国产伦精品一区二区三区视频免费 | 国产情侣一区| 777久久精品一区二区三区无码| 久久99国内| 精品亚洲第一| 97品白浆高清久久久久久| 国产日韩欧美黄色| 在线观看精品| 欧美在线免费视频| 超碰97国产精品人人cao| 久久综合久久美利坚合众国| 亚洲日本中文字幕在线| 日韩精品一区二区在线| 91精品国产色综合久久不8| 色哟哟欧美精品| av黄色在线看| 午夜伦理一区二区| 精品一区二区三区四| 亚洲精品成a人| 亚洲xxxx3d动漫| 国产精品久久久久久久浪潮网站| 日本一级免费视频| 91网站最新网址| 中文字幕乱码在线| 成人国产精品免费观看| 国产91在线免费观看| 国产真实精品久久二三区| 欧美三级午夜理伦三级富婆| 青椒成人免费视频| www黄色在线| 轻轻草成人在线| 91极品尤物在线播放国产| 日韩**一区毛片| 免费看污黄网站| 蜜桃一区二区三区在线观看| 日本成人黄色网| 青青草97国产精品免费观看无弹窗版| 亚洲 中文字幕 日韩 无码| 久久成人在线| 999精品网站| 日本特黄久久久高潮 | 国产精品一区二区男女羞羞无遮挡| 在线观看免费视频高清游戏推荐| 首页综合国产亚洲丝袜| 久久九九国产视频| 美女尤物国产一区| 红桃视频 国产| 国产精品1区2区| 国产激情视频网站| 91蝌蚪porny| 在线免费观看视频| 国产精品第四页| 538精品在线视频| 亚洲成人一区在线| 亚洲自拍一区在线观看| 欧美调教femdomvk| 国产农村妇女毛片精品| 欧美成人aa大片| 三级在线播放| 色吧影院999| 国产美女福利在线观看| 日本精品视频在线播放| 国产一区高清| 国产亚洲第一区| 精品国产乱码久久久久久1区2匹| 一本色道久久综合亚洲二区三区| 欧美激情麻豆| 国产日韩成人内射视频| 国产精品一区二区三区网站| 国产精品久久久久久久无码| 久久九九影视网| 草视频在线观看| 欧美性猛交xxxx免费看| 一级二级三级视频| 精品国产乱码久久久久久老虎| 欧美日韩在线中文字幕| 伦理中文字幕亚洲| 性欧美超级视频| 999国内精品视频在线| 国产精品亚洲片在线播放| 国产日本欧美在线| 六月婷婷一区| 蜜桃视频无码区在线观看| 国产网站一区二区| 国产亚洲欧美精品久久久久久| 色偷偷久久人人79超碰人人澡| 国产99久一区二区三区a片 | 免费a在线看| 4438全国亚洲精品在线观看视频| 亚洲美女色播| 日本10禁啪啪无遮挡免费一区二区| 伊人久久大香线| www.天天射.com| 成人高清av在线| 欧美风情第一页| 欧美午夜片在线观看| 日韩中文字幕免费在线观看| 色噜噜狠狠狠综合曰曰曰88av| 欧美sm一区| 成人欧美一区二区三区黑人免费| jizzjizz欧美69巨大| 欧美日韩性生活片| 国产精品123| 精品国产视频在线观看| 欧美私人免费视频| 青青草免费在线| 97视频人免费观看| 1313精品午夜理伦电影| 精品一区二区成人免费视频| 日本亚洲天堂网| japanese中文字幕| 精品美女国产在线| 蜜桃av中文字幕| 欧美国产精品va在线观看| 欧美日韩va| 无码免费一区二区三区免费播放 | 一区二区日韩电影| 国产视频一区二区三区四区五区| 中文国产成人精品久久一| 亚洲精品成人图区| 久久久99国产精品免费| 1024成人| 日b视频在线观看| 午夜精品成人在线| 日本xxxx人| 午夜精品理论片| 欧美综合精品| 免费看国产曰批40分钟| caoporm超碰国产精品| 精品少妇theporn| 精品久久国产老人久久综合| 欧美videossex另类| 99高清视频有精品视频| 欧美一区成人| 国产精品日日摸夜夜爽| 亚洲综合免费观看高清完整版在线 | 国产一线二线在线观看| 国产一区二区无遮挡| 国产亚洲在线| 中文字幕网站在线观看| 欧美三级一区二区| 免费在线观看黄| 91九色露脸| 国产日韩欧美一区二区三区在线观看| 久久无码人妻精品一区二区三区 | 欧美91在线| 午夜肉伦伦影院| 国产女主播视频一区二区| 中文字幕 欧美激情| 精品国内产的精品视频在线观看| 99热这里有精品| 日韩黄色片在线| 2021久久国产精品不只是精品| jizz国产在线观看| 少妇av一区二区三区| 国产人与zoxxxx另类91| 六月婷婷激情综合| wwww国产精品欧美| 在线观看中文字幕网站| 美日韩在线视频| 亚洲免费毛片| 天堂在线一区二区三区| 亚洲国产美女搞黄色| 久香视频在线观看| 成人久久久久久久| 韩国av一区| 免费黄色片网站| 日韩精品一区二区三区四区视频| 老司机深夜福利在线观看| 亚洲高清视频一区二区| 国产成人免费在线| 日韩电影在线观看一区二区| 久久夜色精品国产| 要久久爱电视剧全集完整观看| 国产福利在线免费| 亚洲一区二区三区四区在线免费观看 | 久久99精品久久久久久琪琪| 亚洲自拍都市欧美小说| 中文字幕在线视频精品| 粉嫩老牛aⅴ一区二区三区| 黄色网页在线免费看| 麻豆精品视频| 国产精品99久久久久久久女警 | 天堂午夜影视日韩欧美一区二区| 三级黄色录像视频| 日韩理论片久久| 日韩区欧美区| 黄色国产小视频|