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

突破 etcd 限制!字節自研 K8s 存儲 KubeBrain

云計算 云原生
KubeBrain 是字節跳動針對 Kubernetes 元信息存儲的使用需求,基于分布式 KV 存儲引擎設計并實現的取代 etcd 的元信息存儲系統,支撐線上超過 20,000 節點的超大規模 Kubernetes 集群的穩定運行。

一. 背景

分布式應用編排調度系統 Kubernetes 已經成為云原生應用基座的事實標準,但是其官方的穩定運行規模僅僅局限在 5,000 節點。這對于大部分的應用場景已經足夠,但是對于百萬規模機器節點的超大規模應用場景, Kubernetes 難以提供穩定的支撐。

尤其隨著“數字化””云原生化”的發展,全球整體 IT 基礎設施規模仍在加速增長,對于分布式應用編排調度系統,有兩種方式來適應這種趨勢:

  • 水平擴展 : 即構建管理多個集群的能力,在集群故障隔離、混合云等方面更具優勢,主要通過集群聯邦(Cluster Federation)來實現;
  • 垂直擴展 : 即提高單個集群的規模,在降低集群運維管理成本、減少資源碎片、提高整體資源利用率方面更具優勢。

K8s 采用的是一種中心化的架構,所有組件都與 APIServer 交互,而 APIServer 則需要將集群元數據持久化到元信息存儲系統中。當前,etcd 是 APIServer 唯一支持的元信息存儲系統,隨著單個集群規模的逐漸增大,存儲系統的讀寫吞吐以及總數據量都會不斷攀升,etcd 不可避免地會成為整個分布式系統的瓶頸。

1.1 Kubernetes元信息存儲需求

APIServer 并不能直接使用一般的強一致 KV 數據庫作為元信息存儲系統,它與元信息存儲系統的交互主要包括數據全量和增量同步的 List/Watch,以及單個 KV 讀寫。更近一步來說,它主要包含以下方面:

  • 在版本控制方面,存儲系統需要對 APIServer 暴露數據的版本信息,APIServer 側依賴于數據的版本生成對應的 ResourceVersion;
  • 在寫操作方面,存儲系統需要支持 Create/Update/Delete 三種語義的操作,更為重要的是,存儲系統需要支持在寫入或者刪除數據時對數據的版本信息進行 CAS;
  • 在讀操作方面,存儲系統需要支持指定版本進行快照 List 以此從存儲中獲取全量的數據,填充APIServer 中的 WatchCache 或供查詢使用,此外也需要支持讀取數據的同時獲取對應的數據版本信息;
  • 在事件監聽方面,存儲系統需要支持獲取特定版本之后的有序變更,這樣 APIServer 通過 List 從元信息存儲中獲取了全量的數據之后,可以監聽快照版本之后的所有變更事件,進而以增量的方式來更新 Watch Cache 以及向其他組件進行變更的分發,進而保證 K8s 各個組件中數據的最終一致性。

1.2 etcd 的實現方式與瓶頸

etcd 本質上是一種主從架構的強一致、高可用分布式 KV 存儲系統:

  • 節點之間,通過 Raft 協議進行選舉,將操作抽象為 log 基于 Raft 的日志同步機制在多個狀態機上同步;
  • 單節點上,按順序將 log 應用到狀態機,基于 boltdb 進行狀態持久化 。

對于 APIServer 元信息存儲需求,etcd 大致通過以下方式來實現:

  • 在版本控制方面,etcd 使用 Revision 作為邏輯時鐘,對每一個修改操作,會分配遞增的版本號Revision,以此進行版本控制,并且在內存中通過 TreeIndex 管理 Key 到 Revision 的索引;
  • 在寫操作方面,etcd 以串行 Apply Raft Log 的方式實現,以 Revision 為鍵,Key/Value/Lease 等數據作為值存入 BoltDB 中,在此基礎上實現了支持對 Revision 進行 CAS 的寫事務;
  • 在讀操作方面,etcd 則是通過管理 Key 到 Revision 的 TreeIndex 來查詢 Revision 進而查詢 Value,并在此基礎上實現快照讀;
  • 在事件監聽方面,歷史事件可以從 BoltDB 中指定 Revision 獲取 KV 數據轉換得到,而新事件則由寫操作同步 Notify 得到。

etcd 并不是一個專門為 K8s 設計的元信息存儲系統,其提供的能力是 K8s 所需的能力的超集。在使用過程中,其暴露出來的主要問題有:

  • etcd 的網絡接口層限流能力較弱,雪崩時自愈能力差;
  • etcd 所采用的是單 raft group,存在單點瓶頸,單個 raft group 增加節點數只能提高容錯能力,并不能提高寫性能;
  • etcd 的 ExpensiveRead 容易導致 OOM,如果采用分頁讀取的話,延遲相對會提高;
  • boltdb 的串行寫入,限制了寫性能,高負載下寫延遲會顯著提高;
  • 長期運行容易因為碎片問題導致寫性能發生一定劣化,線上集群定期通過 defrag 整理碎片,一方面會比較復雜,另一方面也可能會影響可用性。

二. 新的元數據存儲

過去面對生產環境中 etcd 的性能問題,只能通過按 Resource 拆分存儲、etcd 參數調優等手段來進行一定的緩解。但是面對 K8s 更大范圍的應用之后帶來的挑戰,我們迫切的需要一個更高性能的元數據存儲系統作為 etcd 的替代方案,從而能對上層業務有更有力的支撐。

在調研了 K8s 集群的需求以及相關開源項目之后,我們借鑒了 k3s 的開源項目 kine 的思想,設計并實現了基于分布式 KV 存儲引擎的高性能 K8s 元數據存儲項目—— KubeBrain 。

KubeBrain 系統實現了 APIServer 所使用的元信息存儲 API ,整體采用主從架構,主節點負責處理寫操作和事件分發,從節點負責處理讀操作,主節點和從節點之間共享一個分布式強一致 KV 存儲,在此基礎上進行數據讀寫。下面介紹 KubeBrain 的核心模塊。

2.1 存儲引擎

KubeBrain 統一抽象了邏輯層所使用的 KeyValue 存儲引擎接口,以此為基礎,項目實現了核心邏輯與底層存儲引擎的解耦:

  • 邏輯層基于存儲引擎接口來操作底層數據,不關心底層實現;
  • 對接新的存儲引擎只需要實現對應的適配層,以實現存儲接口。

目前項目已經實現了對 ByteKV 和 TiKV 的適配,此外還實現了用于測試的適配單機存儲 Badger 的版本。需要注意的是,并非所有 KV 存儲都能作為 KubeBrain 的存儲引擎。當前 KubeBrain 對于存儲引擎有著以下特性要求:

  • 支持快照讀
  • 支持雙向遍歷
  • 支持讀寫事務或者帶有CAS功能的寫事務
  • 對外暴露邏輯時鐘

此外,由于 KubeBrain 對于上層提供的一致性保證依賴于存儲引擎的一致性保證, KubeBrain 要求存儲引擎的事務需要達到以下級別(定義參考 HATs :??http://www.vldb.org/pvldb/vol7/p181-bailis.pdf):??

  • Isolation Guarantee: Snapshot Isolation
  • Session Guarantee: Linearizable

在內部生產環境中, KubeBrain 均以 ByteKV 為存儲引擎提供元信息存儲服務。ByteKV 是一種強一致的分布式 KV 存儲。在 ByteKV 中,數據按照 key 的字典序有序存儲。當單個 Partition 數據大小超過閾值時, Partition 自動地分裂,然后可以通過 multi-raft group 進行水平擴展,還支持配置分裂的閾值以及分裂邊界選擇的規則的定制。此外, ByteKV 還對外暴露了全局的時鐘,同時支持寫事務和快照讀,并且提供了極高的讀寫性能以及強一致的保證。

2.2 選主機制

KubeBrain 基于底層強一致的分布式 KV 存儲引擎,封裝實現了一種 ResourceLock,在存儲引擎中指向一組特定的 KeyValue。ResourceLock 中包含主節點的地址以及租約的時長等信息。

KubeBrain 進程啟動后均以從節點的身份對自己進行初始化,并且會自動在后臺進行競選。競選時,首先嘗試讀取當前的 ResourceLock。如果發現當前 ResourceLock 為空,或者 ResourceLock 中的租約已經過期,節點會嘗試將自己的地址以及租約時長以 CAS 的方式寫入 ResourceLock,如果寫入成功,則晉升為主節點。

從節點可以通過 ResourceLock 讀取主節點的地址,從而和主節點建立連接,并進行必要的通信,但是主節點并不感知從節點的存在。即使沒有從節點,單個 KubeBrain 主節點也可以提供完成的 APIServer 所需的 API,但是主節點宕機后可用性會受損。

2.3 邏輯時鐘

KubeBrain 與 etcd 類似,都引入了 Revision 的概念進行版本控制。KubeBrain 集群的發號器僅在主節點上啟動。當從節點晉升為主節點時,會基于存儲引擎提供的邏輯時鐘接口來進行初始化,發號器的Revision 初始值會被賦值成存儲引擎中獲取到的邏輯時間戳。

單個 Leader 的任期內,發號器發出的整數號碼是單調連續遞增的。主節點發生故障時,從節點搶到主,就會再次重復一個初始化的流程。由于主節點的發號是連續遞增的,而存儲引擎的邏輯時間戳可能是非連續的,其增長速度是遠快于連續發號的發號器,因此能夠保證切主之后, Revision 依然是遞增的一個趨勢,舊主節點上發號器所分配的最大的 Revision 會小于新主節點上發號器所分配的最小的Revision。

KubeBrain 主節點上的發號是一個純內存操作,具備極高的性能。由于 KubeBrain 的寫操作在主節點上完成,為寫操作分配 Revision 時并不需要進行網絡傳輸,因此這種高性能的發號器對于優化寫操作性能也有很大的幫助。

2.4 數據模型

KubeBrain 對于 API Server 讀寫請求參數中的 Raw Key,會進行編碼出兩類 Internal Key寫入存儲引擎索引和數據。對于每個 Raw Key,索引 Revision Key 記錄只有一條,記錄當前 Raw Key 的最新版本號, Revision Key 同時也是一把鎖,每次對 Raw Key 的更新操作需要對索引進行 CAS。數據記錄Object Key 有一到多條,每條數據記錄了 Raw Key 的歷史版本與版本對應的 Value。Object Key 的編碼方式為magic+raw_key+split_key+revision,其中:

  • magic為\x57\xfb\x80\x8b;
  • raw_key為實際 API Server 輸入到存儲系統中的 Key ;
  • split_key為$;
  • revision為邏輯時鐘對寫操作分配的邏輯操作序號通過 BigEndian 編碼成的 Bytes 。

  • 根據 Kubernetes 的校驗規則,raw_key 只能包含小寫字母、數字,以及'-' 和 '.',所以目前選擇 split_key 為 $ 符號。

特別的,Revision Key 的編碼方式和 Object Key 相同,revision取長度為 8 的空 Bytes 。這種編碼方案保證編碼前和編碼后的比較關系不變。

在存儲引擎中,同一個 Raw Key 生成的所有 Internal Key 落在一個連續區間內 。

這種編碼方式有以下優點:

  • 編碼可逆,即可以通過Encode(RawKey,Revision)得到InternalKey,相對應的可以通過Decode(InternalKey)得到Rawkey與Revision;
  • 將 Kubernetes 的對象數據都轉換為存儲引擎內部的 Key-Value 數據,且每個對象數據都是有唯一的索引記錄最新的版本號,通過索引實現鎖操作;
  • 可以很容易地構造出某行、某條索引所對應的 Key,或者是某一塊相鄰的行、相鄰的索引值所對應的 Key 范圍;
  • 由于 Key 的格式非單調遞增,可以避免存儲引擎中的遞增 Key 帶來的熱點寫問題

2.5 數據寫入

每一個寫操作都會由發號器分配一個唯一的寫入 revision ,然后并發地對存儲引擎進行寫入。在 創建、更新 和 刪除 Kubernetes 對象數據的時候,需要同時操作對象對應的索引和數據。由于索引和數據在底層存儲引擎中是不同的 Key-Value 對,需要使用 寫事務 保證更新過程的 原子性,并且要求至少達到 Snapshot Isolation 。

同時 KubeBrain 依賴索引實現了樂觀鎖進行并發控制。KubeBrain 寫入時,會先根據 APIServer 輸入的 RawKey 以及被發號器分配的 Revision 構造出實際需要到存儲引擎中的 Revision Key 和 Object Key,以及希望寫入到 Revision Key 中的 Revision Bytes。在寫事務過程中,先進行索引 Revision Key 的檢查,檢查成功后更新索引 Revision Key,在操作成功后進行數據 Object Key 的插入操作。

  • 執行 Create 請求時,當 Revision Key 不存在時,才將 Revision Bytes 寫入 Revision Key 中,隨后將 API Server 寫入的 Value 寫到 Object Key 中;
  • 執行 Update 請求時,當 Revision Key 中存放的舊 Revision Bytes 符合預期時,才將新 Revision Bytes 寫入,隨后將 API Server 寫入的 Value 寫到 Object Key 中;
  • 執行 Delete 請求時,當 Revision Key 中存放的舊 Revision Bytes 符合預期時,才將新 Revision Bytes 附帶上刪除標記寫入,隨后將 tombstone 寫到 Object Key 中。

由于寫入數據時基于遞增的 Revision 不斷寫入新的 KeyValue , KubeBrain 會進行后臺的垃圾回收操作,將 Revision 過舊的數據進行刪除,避免數據量無限增長。

2.6 數據讀取

數據讀取分成點讀和范圍查詢查詢操作,分別對應 API Server 的 Get 和 List 操作。

Get 需要指定讀操作的ReadRevision,需要讀最新值時則將 ReadRevision 置為最大值MaxUint64, 構造 Iterator ,起始點為Encode(RawKey, ReadRevision),向Encode( RawKey, 0)遍歷,取第一個。

范圍查詢需要指定讀操作的ReadRevision 。對于范圍查找的 RawKey 邊界[RawKeyStart, RawKeyEnd)區間, KubeBrain 構造存儲引擎的 Iterator 快照讀,通過編碼將 RawKey 的區間映射到存儲引擎中 InternalKey 的數據區間

  • InternalKey 上界InternalKeyStart為Encode(RawKeyStart, 0)
  • InternalKey 的下界為InternalKeyEnd為Encode(RawKeyEnd, MaxRevision)

對于存儲引擎中[InternalKeyStart, InternalKeyEnd)內的所有數據按序遍歷,通過Decode(InternalKey)得到RawKey與Revision,對于一個RawKey 相同的所有ObjectKey,在滿足條件Revision<=ReadRevision的子集中取Revision最大的,對外返回。 2.7 事件機制

對于所有變更操作,會由 TSO 分配一個連續且唯一的 revision ,然后并發地寫入存儲引擎中。變更操作寫入存儲引擎之后,不論寫入成功或失敗,都會按照 revision 從小到大的順序,將變更結果提交到滑動窗口中,變更結果包括變更的類型、版本、鍵、值、寫入成功與否 。在記錄變更結果的滑動窗口中,從起點到終點,所有變更數據中的 revision 嚴格遞增,相鄰 revision 差為 1。

記錄變更結果的滑動窗口由事件生成器統一從起點開始消費,取出的變更結果后會根據變更的 revision更新發號器的 commit index ,如果變更執行成功,則還會構造出對應的修改事件,將并行地寫入事件緩存和分發到所有監聽所創建出的通知隊列。

在元數據存儲系統中,需要監聽指定邏輯時鐘即指定 revision 之后發生的所有修改事件,用于下游的緩存更新等操作,從而保證分布式系統的數據最終一致性。注冊監聽時,需要傳入起始 revision 和過濾參數,過濾參數包括 key 前綴等等。

當客戶端發起監聽時,服務端在建立事件流之后的處理,分成以下幾個主要步驟:

  1. 處理監聽注冊請求時首先創建通知隊列,將通知隊列注冊到事件生成組件中,獲取下發的新增事件;
  2. 從事件緩存中拉取事件的 revision 大于等于給定要求 revision 所有事件到事件隊列中,并放到輸出隊列中,以此獲取歷史事件;
  3. 將通知隊列中的事件取出,添加到輸出隊列中, revision 去重之后添加到輸出隊列;
  4. 按照 revision 從小到大的順序,依次使用過濾器進行過濾;
  5. 將過濾后符合客戶端要求的事件,通過事件流推送到元數據存儲系統外部的客戶端。

三. 落地效果

  • 在 Benchmark 環境下,基于 ByteKV 的 KubeBrain 對比于 etcd 純寫場景吞吐提升 10 倍左右,延遲大幅度降低, PCT 50 降低至 1/6 ,PCT 90 降低至 1/20 ,PCT 99降低至 1/4 ;讀寫混合場景吞吐提升 4 倍左右;事件吞吐大約提升5倍;
  • 在模擬 K8s Workload 的壓測環境中,配合 APIServer 側的優化和調優,支持 K8s 集群規模達到 5w Node 和 200w Pod;
  • 在生產環境中,穩定上量至 2.1w Node ,高峰期寫入超過 1.2w QPS,讀寫負載合計超過 1.8w QPS。

四. 未來演進

項目未來的演進計劃主要包括四個方面的工作:

  • 探索實現多點寫入的方案以支持水平擴展 現在 KubeBrain 本質上還是一個單主寫入的系統,KubeBrain 后續會在水平擴展方面做進一步的探索,后續也會在社區中討論;
  • 提升切主的恢復速度 當前切主會觸發 API Server 側的 Re-list ,數據同步的開銷較大,我們會在這方面進一步做優化;
  • 實現內置存儲引擎 實現兩層存儲融合,由于現在在存儲引擎、KubeBrain 中存在兩層 MVCC 設計,整體讀寫放大較多,實現融合有助于降低讀寫放大,更進一步提高性能;
  • 完善周邊組件 包括數據遷移工具、備份工具等等,幫助用戶更好地使用 KubeBrain 。

五. 關于我們

字節基礎架構編排調度團隊,負責構建字節跳動內部的容器云平臺,為產品線提供運行基石;以超大容器集群規模整體支撐了字節內產品線,涵蓋今日頭條、抖音、西瓜視頻等。

團隊支持業務同時覆蓋在線、離線機器學習,推薦/廣告/搜索等多種應用場景;在持續多年的超高速增長中,積累了豐富的 Kubernetes/容器超大規模應用經驗,旨在打造覆蓋多場景,多地域的千萬級容器的大平臺。

責任編輯:龐桂玉 來源: 字節跳動技術團隊
相關推薦

2022-04-20 14:48:20

DanceNNHDFS分布式

2022-06-14 07:56:15

Kubernetes存儲架構K8S

2022-04-22 13:32:01

K8s容器引擎架構

2023-11-06 07:16:22

WasmK8s模塊

2025-01-03 09:07:51

2023-09-06 08:12:04

k8s云原生

2023-12-18 12:51:49

數據模型

2020-05-12 10:20:39

K8s kubernetes中間件

2022-09-05 08:26:29

Kubernetes標簽

2023-08-03 08:36:30

Service服務架構

2023-08-04 08:19:02

2023-05-25 21:38:30

2023-03-05 21:50:46

K8s集群容量

2022-12-06 07:30:12

K8s云原生生態系統

2021-12-03 06:29:56

K8sDubboSpring

2021-04-12 20:42:50

K8S端口內存

2024-01-26 14:35:03

鑒權K8sNode

2022-12-07 17:33:50

K8Skubernetes

2023-09-03 23:58:23

k8s集群容量
點贊
收藏

51CTO技術棧公眾號

一卡二卡3卡四卡高清精品视频| 国产成人精品视频| 中文字幕一区二区三区乱码不卡| а√在线中文网新版地址在线| 久久青草国产手机看片福利盒子| 国产精品精品一区二区三区午夜版 | 女性裸体视频网站| 中文一区二区三区四区| 粉嫩av一区二区三区免费野| 亚洲精品中字| 五月天激情婷婷| 久久国产精品露脸对白| 久久乐国产精品| 调教驯服丰满美艳麻麻在线视频| 日本精品视频| 欧美午夜精品一区二区三区| 日韩欧美精品免费| 香蕉视频国产在线观看| 99久久久久久99| 成人黄色中文字幕| www.毛片.com| 精品91在线| 色噜噜狠狠色综合网图区| 亚洲av无码一区二区三区观看| 自拍偷拍亚洲图片| 色综合久久88色综合天天免费| 91精品国产吴梦梦| 99青草视频在线播放视| 99精品视频免费在线观看| 国产有码在线一区二区视频| 青青草免费观看视频| 欧美日本一区| 俺也去精品视频在线观看| theav精尽人亡av| 大奶在线精品| 91精品国产综合久久精品麻豆 | 欧美黄色一级网站| 日本一区二区在线看| 日韩国产激情在线| 亚洲精品激情视频| 999在线精品| 欧美一区二区三级| 潘金莲激情呻吟欲求不满视频| 自由日本语热亚洲人| 红桃av永久久久| 久久亚洲a v| 性欧美video高清bbw| 亚洲欧洲一区二区三区| 亚洲三区在线| 欧美jizz18性欧美| 亚洲欧洲日韩一区二区三区| 亚洲日本japanese丝袜| 福利在线午夜| 国产欧美日韩另类视频免费观看| 欧美综合激情| 国产区视频在线| 国产日产精品一区| 亚洲国产精品视频一区| 中文字幕日本在线观看| 国产精品麻豆网站| 一区二区视频在线免费| 黄色免费在线观看| 一区二区三区在线视频观看 | 波多野吉衣中文字幕| 欧美亚视频在线中文字幕免费| 精品国产一二三| xxxwww国产| 欧美自拍视频| 亚洲香蕉成人av网站在线观看 | 一道本一区二区三区| 日韩激情视频在线| 国产黄片一区二区三区| 国产麻豆一区二区三区精品视频| 亚洲精品久久久久中文字幕欢迎你 | 特级毛片www| 在线亚洲伦理| 97热精品视频官网| 亚洲欧美日韩激情| 美女一区二区三区在线观看| 亚洲在线www| 可以免费观看的毛片| 91视频免费播放| 色综合影院在线观看| 九色porny在线| 亚洲成人av一区二区三区| 欧美女人性生活视频| 不卡亚洲精品| 亚洲精品一线二线三线| 免费污网站在线观看| 99精品电影| 欧美第一页在线| 国产精品第5页| 紧缚奴在线一区二区三区| 国产精品日韩欧美一区二区三区| 黄色网址在线播放| 亚洲精品国产第一综合99久久| 欧美不卡在线播放| 欧美高清影院| 亚洲精品www久久久| jizz日本在线播放| 亚洲黄色av| 国产男女猛烈无遮挡91| 天天摸夜夜添狠狠添婷婷| 中文字幕不卡三区| 日韩欧美一区二| 成人短视频软件网站大全app| 欧美精品一区二区三| 1024在线看片| 国产亚洲精品v| 亚洲精品免费网站| 国自产拍在线网站网址视频| 亚洲曰韩产成在线| 91制片厂毛片| 另类图片第一页| 日韩亚洲欧美中文高清在线| 成年人免费高清视频| 国产一区美女在线| 亚洲va久久久噜噜噜久久狠狠 | 日产精品久久久一区二区福利| 国产又黄又粗又长| 久久蜜桃一区二区| 国产www免费| 国产精品3区| 一二美女精品欧洲| 日本熟女毛茸茸| 成人精品视频一区| 性生活免费观看视频| 国产精品高潮久久| 亚洲偷熟乱区亚洲香蕉av| 日本免费在线播放| 国产高清不卡一区二区| 一区二区三区四区五区精品| 成人福利视频| 日韩极品精品视频免费观看| 麻豆亚洲av成人无码久久精品| 美国毛片一区二区| 日韩国产一区久久| 韩国成人动漫| 精品亚洲aⅴ在线观看| 国产无码精品久久久| 国产福利91精品一区| 综合久久国产| 亚洲国产aⅴ精品一区二区三区| 亚洲色图校园春色| 99re这里只有精品在线| 久久综合给合久久狠狠狠97色69| 欧美久久在线观看| 玖玖玖免费嫩草在线影院一区| 欧美激情视频网| 性生活三级视频| 亚洲精品你懂的| 国产性色一区二区| 久久精品最新地址| 97精品人妻一区二区三区香蕉 | 国产视频三区四区| 日韩和欧美的一区| 日韩三级电影网站| 成人1区2区| 中文字幕亚洲专区| 夜夜嗨aⅴ一区二区三区| 国产精品久久一卡二卡| 一级黄色录像在线观看| 欧美高清视频手机在在线| 国产精品中文字幕在线| 蜜桃视频网站在线观看| 这里只有精品电影| 久青草免费视频| 成人高清视频在线观看| www.玖玖玖| 国产欧美日韩在线观看视频| 国产玖玖精品视频| 国产高清一区二区三区视频 | 成人羞羞在线观看网站| 国产日韩欧美在线视频观看| 黄色成年人视频在线观看| 日韩亚洲欧美在线| 精品91久久久| 久久久国产午夜精品| 国产乱女淫av麻豆国产| 韩国精品一区二区三区| 久久精品美女| 伦一区二区三区中文字幕v亚洲| 久久综合亚洲社区| 日韩一区二区三区在线观看视频| 日韩欧美成人精品| 无码人妻精品中文字幕| 成人深夜福利app| 欧美xxxxx在线视频| 亚洲成人日韩| 国外成人在线视频网站| 日韩精品免费观看视频| 美乳少妇欧美精品| 亚洲av片一区二区三区| 欧美日韩一级大片网址| 久久久精品视频免费| 久久久久久夜精品精品免费| 亚洲18在线看污www麻豆| 一本一本久久| 桥本有菜av在线| 日本三级久久| 91人成网站www| 亚洲精品mv| 欧美大片网站在线观看| 浮生影视网在线观看免费| 日韩精品中午字幕| 中文字幕一区二区三区免费看| 亚洲国产日日夜夜| 羞羞在线观看视频| 91麻豆成人久久精品二区三区| 天天影视色综合| 天堂成人免费av电影一区| 国产一区 在线播放| 精品国产乱码久久久| 国产精品一区二区三区精品| 国产福利亚洲| 欧美中文字幕第一页| 2020国产在线视频| 中文字幕精品国产| 伦理片一区二区三区| 精品国产三级a在线观看| 亚洲影院一区二区三区| 一本一本久久a久久精品综合麻豆| 欧美成人一区二区三区高清| 亚洲国产精品成人久久综合一区 | 久久蜜桃av一区精品变态类天堂| 精品亚洲视频在线| 日本伊人午夜精品| 97av视频在线观看| 亚洲精选久久| 国产一区二区三区小说| 亚洲色图网站| 制服诱惑一区| 欧美综合视频| 日韩中文字幕av在线| 日韩av字幕| 国产手机精品在线| 成人激情自拍| 999视频在线观看| 久久久精品区| 91亚洲精品久久久| 亚洲男人在线| 成人黄色av网| 91成人短视频在线观看| 国产在线一区二区三区| 欧美国产日韩电影| 国产精品白丝jk喷水视频一区| 亚洲人成在线网站| 欧美一区三区三区高中清蜜桃| 日韩在线伦理| 人人爽久久涩噜噜噜网站| 性感女国产在线| 清纯唯美亚洲激情| 亚洲综合在线电影| 国产精品小说在线| 日韩免费在线电影| 亚洲最大成人在线| 亚洲日本va| 国产亚洲精品自在久久| 麻豆视频一区| 欧美一区免费视频| av资源久久| 国产a级片免费看| 欧美日韩国产探花| 成人免费播放器| 美女网站久久| 亚洲欧美在线精品| 国产一区不卡精品| 日本精品一二三| 91日韩在线专区| 国产熟女一区二区| 亚洲天堂av老司机| 久久精品亚洲无码| 一本久久a久久免费精品不卡| 无码人妻丰满熟妇区bbbbxxxx| 欧美日韩三级一区| 国产又黄又粗又猛又爽| 精品国产乱码久久久久久1区2区| 婷婷综合激情网| 一本久久综合亚洲鲁鲁| 成人影院www在线观看| 高清亚洲成在人网站天堂| 欧美xxx性| 成人高h视频在线| 成人午夜三级| 先锋在线资源一区二区三区| 一级欧洲+日本+国产 | 免费成人深夜夜行网站| 夜夜操天天操亚洲| 国产成人无码av| 欧美高清www午色夜在线视频| 日本人妻熟妇久久久久久| 国产一区二区日韩| 亚洲国产精品精华素| 欧美亚洲一级片| 亚洲色图综合| 久久青青草原| 欧美福利专区| 国产一级特黄a大片免费| 丁香一区二区三区| 山东少妇露脸刺激对白在线| 亚洲电影一级黄| 一级黄色片在线观看| 亚洲精品国产电影| jizz性欧美| 国产精品99久久久久久www| 91成人福利| 在线视频不卡一区二区| 国产精品久久777777毛茸茸 | 中文字幕视频一区二区| 亚洲白拍色综合图区| 在线国产91| 青青久久aⅴ北条麻妃| 成人线上播放| 日日噜噜夜夜狠狠久久丁香五月| 日韩影院在线观看| 你懂得在线视频| 亚洲一区免费观看| 国产精品毛片一区二区在线看舒淇| 精品无人国产偷自产在线| 国产黄色在线观看| 国产精自产拍久久久久久蜜| 中文字幕精品影院| 91丨porny丨探花| 国产乱人伦偷精品视频免下载| 免费看污片的网站| 精品久久久久久中文字幕一区奶水 | 精品视频全国免费看| 四虎影视在线播放| 久久久免费av| 成午夜精品一区二区三区软件| 一区二区三区在线视频看| 日韩av一区二区在线影视| 久久无码人妻精品一区二区三区| 亚洲一区二区三区四区在线观看| 91激情在线观看| 色偷偷av一区二区三区乱| 国产精品极品美女在线观看| 蜜桃传媒视频第一区入口在线看| 亚洲区一区二| xxxx黄色片| 黄色精品一区二区| 性感美女一级片| 88xx成人精品| 狼人精品一区二区三区在线| 全黄性性激高免费视频| 成人av在线影院| 国产性70yerg老太| 精品99一区二区| 蜜桃视频动漫在线播放| 九九九九九九精品| 久久国产福利| av男人的天堂av| 欧美性淫爽ww久久久久无| 草草影院在线观看| 国产精品综合不卡av| 亚洲91视频| 亚洲成人av免费观看| 亚洲综合无码一区二区| 国 产 黄 色 大 片| 国精产品一区一区三区有限在线| 粉嫩一区二区三区四区公司1| 国产欧美日韩网站| 91美女片黄在线观看| 69av视频在线观看| www.欧美精品| 三级欧美日韩| 国产成人在线免费看| 久久夜色精品一区| 伊人成人在线观看| 欧美大胆a视频| 精品资源在线| 成人一区二区三| 亚洲欧美在线aaa| 风流老熟女一区二区三区| 97av视频在线| 日本久久综合| 国产精品91av| 欧美视频一二三| av在线天堂播放| 99国产在线观看| 国产一区二区三区久久| 99精品中文字幕| 亚洲第一综合天堂另类专| 天天综合网天天| 国产大尺度在线观看| 91丨九色丨尤物| 一本大道伊人av久久综合| 欧美精品久久一区二区| 伊人久久大香线蕉综合网蜜芽| 一区二区三区 日韩| 亚洲综合成人在线| 国产剧情在线观看| 不卡一区二区三区视频| 久久精品亚洲| 丁香花五月激情| 亚洲日本中文字幕免费在线不卡| 成人永久在线| av免费播放网址| 亚洲精品欧美激情| 二人午夜免费观看在线视频|