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

CRI shim:kubelet怎么與runtime交互(一)

運(yùn)維 系統(tǒng)運(yùn)維
實(shí)現(xiàn)了 CRI 接口的容器運(yùn)行時(shí)通常稱為 CRI shim, 這是一個(gè) gRPC Server,監(jiān)聽(tīng)在本地的 unix socket 上;而 kubelet 作為 gRPC 的客戶端來(lái)調(diào)用 CRI 接口,來(lái)進(jìn)行 Pod 和容器、鏡像的生命周期管理。

[[433449]]

CRI shim是什么?

實(shí)現(xiàn)了 CRI 接口的容器運(yùn)行時(shí)通常稱為 CRI shim, 這是一個(gè) gRPC Server,監(jiān)聽(tīng)在本地的 unix socket 上;而 kubelet 作為 gRPC 的客戶端來(lái)調(diào)用 CRI 接口,來(lái)進(jìn)行 Pod 和容器、鏡像的生命周期管理。另外,容器運(yùn)行時(shí)需要自己負(fù)責(zé)管理容器的網(wǎng)絡(luò),推薦使用 CNI。

kubelet 調(diào)用下層容器運(yùn)行時(shí)的執(zhí)行過(guò)程,并不會(huì)直接調(diào)用Docker 的 API,而是通過(guò)一組叫作 CRI(Container Runtime Interface,容器運(yùn)行時(shí)接口)的 gRPC 接口來(lái)間接執(zhí)行的,意味著需要使用新的連接方式與 docker 通信,為了兼容以前的版本,k8s 提供了針對(duì) docker 的 CRI 實(shí)現(xiàn),也就是kubelet包下的dockershim包,dockershim是一個(gè) grpc 服務(wù),監(jiān)聽(tīng)一個(gè)端口供 kubelet 連接,dockershim收到 kubelet 的請(qǐng)求后,將其轉(zhuǎn)化為 REST API 請(qǐng)求,再發(fā)送給docker daemon。Kubernetes 項(xiàng)目之所以要在 kubelet 中引入這樣一層單獨(dú)的抽象,當(dāng)然是為了對(duì) Kubernetes 屏蔽下層容器運(yùn)行時(shí)的差異。

解決思路再次體現(xiàn)了《代碼大全2》里提到的那句經(jīng)典名言:any problem in computer science can be sloved by another layer of indirecition。計(jì)算機(jī)科學(xué)領(lǐng)域的任何問(wèn)題都可以通過(guò)增加一個(gè)中間層來(lái)解決,我們的 CRI shim就是加了這樣一層。

CRI shim server 接口圖示

**CRI 接口包括 RuntimeService 和 ImageService 兩個(gè)服務(wù),這兩個(gè)服務(wù)可以在一個(gè) gRPC server 中實(shí)現(xiàn),也可以分開(kāi)成兩個(gè)獨(dú)立服務(wù)。**目前社區(qū)的很多運(yùn)行時(shí)都是將其在一個(gè) gRPC server 里面實(shí)現(xiàn)。

ImageServiceServer 提供了 5 個(gè)接口,用于管理容器鏡像。管理鏡像的 ImageService 提供了 5 個(gè)接口:

  • 查詢鏡像列表;
  • 拉取鏡像到本地;
  • 查詢鏡像狀態(tài);
  • 刪除本地鏡像;
  • 查詢鏡像占用空間等。

關(guān)于容器鏡像的操作比較簡(jiǎn)單,所以我們就暫且略過(guò)。接下來(lái),我主要為你講解一下 RuntimeService 部分。RuntimeService 則提供了更多的接口,按照功能可以劃分為四組:

  • PodSandbox 的管理接口:CRI 設(shè)計(jì)的一個(gè)重要原則,就是確保這個(gè)接口本身,只關(guān)注容器,不關(guān)注 Pod。
  • PodSandbox 是對(duì) Kubernete Pod 的抽象,用來(lái)給容器提供一個(gè)隔離的環(huán)境(比如掛載到相同的 CGroup 下面),并提供網(wǎng)絡(luò)等共享的命名空間。PodSandbox 通常對(duì)應(yīng)到一個(gè) Pause 容器或者一臺(tái)虛擬機(jī);
  • Container 的管理接口:在指定的 PodSandbox 中創(chuàng)建、啟動(dòng)、停止和刪除容器;

  • Streaming API 接口:包括 Exec、Attach 和 PortForward 等三個(gè)和容器進(jìn)行數(shù)據(jù)交互的接口,這三個(gè)接口返回的是運(yùn)行時(shí) Streaming Server 的 URL,而不是直接跟容器交互。kubelet 需要跟容器項(xiàng)目維護(hù)一個(gè)長(zhǎng)連接來(lái)傳輸數(shù)據(jù)。這種 API,我們就稱之為 Streaming API。
  • 狀態(tài)接口:包括查詢 API 版本和查詢運(yùn)行時(shí)狀態(tài)。

我們通過(guò) kubectl 命令來(lái)運(yùn)行一個(gè) Pod,那么 Kubelet 就會(huì)通過(guò) CRI 執(zhí)行以下操作:

  • 首先調(diào)用 RunPodSandbox 接口來(lái)創(chuàng)建一個(gè) Pod 容器,Pod 容器是用來(lái)持有容器的相關(guān)資源的,比如說(shuō)網(wǎng)絡(luò)空間、PID空間、進(jìn)程空間等資源;
  • 然后調(diào)用 CreatContainer 接口在 Pod 容器的空間創(chuàng)建業(yè)務(wù)容器;
  • 再調(diào)用 StartContainer 接口啟動(dòng)運(yùn)行容器
  • 最后調(diào)用停止,銷毀容器的接口為 StopContainer 與 RemoveContainer。

就完成了整個(gè)Container的生命周期。

Streaming API

CRI shim 對(duì) Streaming API 的實(shí)現(xiàn),依賴于一套獨(dú)立的 Streaming Server 機(jī)制。Streaming API 用于客戶端與容器進(jìn)行交互,包括 Exec、PortForward 和 Attach 等三個(gè)接口。kubelet 內(nèi)置的 Docker 通過(guò) nsenter、socat 等方法來(lái)支持這些特性,但它們不一定適用于其他的運(yùn)行時(shí),也不支持 Linux 之外的其他平臺(tái)。因而,CRI 也顯式定義了這些 API,并且要求容器運(yùn)行時(shí)返回一個(gè) Streaming Server 的 URL 以便 kubelet 重定向 API Server 發(fā)送過(guò)來(lái)的流式請(qǐng)求。

因?yàn)樗腥萜鞯牧魇秸?qǐng)求都會(huì)經(jīng)過(guò) kubelet,這可能會(huì)給節(jié)點(diǎn)的網(wǎng)絡(luò)流量帶來(lái)瓶頸,因而 CRI 要求容器運(yùn)行時(shí)啟動(dòng)一個(gè)對(duì)應(yīng)請(qǐng)求的單獨(dú)的流服務(wù)器,將地址返回給 kubelet。kubelet 將這個(gè)信息再返回給 Kubernetes API Server,會(huì)直接打開(kāi)與運(yùn)行時(shí)提供的服務(wù)器相連的流連接,并通過(guò)它與客戶端連通。

這樣一個(gè)完整的 Exec 流程就如上圖所示,分為多個(gè)階段:

  • 客戶端 kubectl exec -i -t ...;
  • kube-apiserver 向 kubelet 發(fā)送流式請(qǐng)求 /exec/;
  • kubelet 通過(guò) CRI 接口向 CRI Shim 請(qǐng)求 Exec 的 URL;
  • CRI Shim 向 kubelet 返回 Exec URL;
  • kubelet 向 kube-apiserver 返回重定向的響應(yīng);
  • kube-apiserver 重定向流式請(qǐng)求到 Exec URL,然后將 CRI Shim 內(nèi)部的 Streaming Server 跟 kube-apiserver 進(jìn)行數(shù)據(jù)交互,完成 Exec 的請(qǐng)求和響應(yīng)。

也就是說(shuō) apiserver 其實(shí)實(shí)際上是跟 streaming server 交互來(lái)獲取我們的流式數(shù)據(jù)的。這樣一來(lái)讓我們的整個(gè) CRI Server 接口更輕量、更可靠。

注意:當(dāng)然,這個(gè) Streaming Server 本身,是需要通過(guò)使用 SIG-Node 為你維護(hù)的 Streaming API 庫(kù)來(lái)實(shí)現(xiàn)的。并且,Streaming Server 會(huì)在 CRI shim 啟動(dòng)時(shí)就一起啟動(dòng)。此外,Stream Server 這一部分具體怎么實(shí)現(xiàn),完全可以由 CRI shim 的維護(hù)者自行決定。比如,對(duì)于 Docker 項(xiàng)目來(lái)說(shuō),dockershim 就是直接調(diào)用 Docker 的 Exec API 來(lái)作為實(shí)現(xiàn)的。

CRI-containerd架構(gòu)解析與主要接口解析

整個(gè)架構(gòu)看起來(lái)非常直觀。這里的 Meta services、Runtime service 與 Storage service 都是 containerd 提供的接口。它們是通用的容器相關(guān)的接口,包括鏡像管理、容器運(yùn)行時(shí)管理等。CRI 在這之上包裝了一個(gè) gRPC 的服務(wù)。右側(cè)就是具體的容器的實(shí)現(xiàn)。比如說(shuō),創(chuàng)建容器時(shí)就要?jiǎng)?chuàng)建具體的 runtime 和它的containerd-shim。Container 和 Pod Sandbox組成了一個(gè)Pod。

CRI-containerd 的一個(gè)好處是,containerd 還額外實(shí)現(xiàn)了更豐富的容器接口,所以它可以用 containerd 提供的 ctr 工具來(lái)調(diào)用這些豐富的容器運(yùn)行時(shí)接口,而不只是 CRI 接口

CRI實(shí)現(xiàn)了兩個(gè)GRPC協(xié)議的API,提供兩種服務(wù)ImageService和RuntimeService。

  1. // grpcServices are all the grpc services provided by cri containerd. 
  2. type grpcServices interface { 
  3.   runtime.RuntimeServiceServer 
  4.   runtime.ImageServiceServer 
  5. // CRIService is the interface implement CRI remote service server. 
  6. type CRIService interface { 
  7.   Run() error 
  8.   // io.Closer is used by containerd to gracefully stop cri service. 
  9.   io.Closer 
  10.   plugin.Service 
  11.   grpcServices 

CRI的實(shí)現(xiàn)CRIService中包含了很多重要的組件:其中最重要的是cni.CNI,用于配置容器網(wǎng)絡(luò)。還有containerd.Client,用于連接containerd來(lái)創(chuàng)建容器。

  1. // criService implements CRIService. 
  2. type criService struct { 
  3.  // config contains all configurations. 
  4.  config criconfig.Config 
  5.  // imageFSPath is the path to image filesystem. 
  6.  imageFSPath string 
  7.  // os is an interface for all required os operations. 
  8.  os osinterface.OS 
  9.  // sandboxStore stores all resources associated with sandboxes. 
  10.  sandboxStore *sandboxstore.Store 
  11.  // sandboxNameIndex stores all sandbox names and make sure each name 
  12.  // is unique
  13.  sandboxNameIndex *registrar.Registrar 
  14.  // containerStore stores all resources associated with containers. 
  15.  containerStore *containerstore.Store 
  16.  // containerNameIndex stores all container names and make sure each 
  17.  // name is unique
  18.  containerNameIndex *registrar.Registrar 
  19.  // imageStore stores all resources associated with images. 
  20.  imageStore *imagestore.Store 
  21.  // snapshotStore stores information of all snapshots. 
  22.  snapshotStore *snapshotstore.Store 
  23.  // netPlugin is used to setup and teardown network when run/stop pod sandbox. 
  24.  netPlugin cni.CNI 
  25.  // client is an instance of the containerd client 
  26.  client *containerd.Client 
  27.  // streamServer is the streaming server serves container streaming request. 
  28.  streamServer streaming.Server 
  29.  // eventMonitor is the monitor monitors containerd events. 
  30.  eventMonitor *eventMonitor 
  31.  // initialized indicates whether the server is initialized. All GRPC services 
  32.  // should return error before the server is initialized. 
  33.  initialized atomic.Bool 
  34.  // cniNetConfMonitor is used to reload cni network conf if there is 
  35.  // any valid fs change events from cni network conf dir. 
  36.  cniNetConfMonitor *cniNetConfSyncer 
  37.  // baseOCISpecs contains cached OCI specs loaded via `Runtime.BaseRuntimeSpec` 
  38.  baseOCISpecs map[string]*oci.Spec 

我們知道 Kubernetes 的一個(gè)運(yùn)作的機(jī)制是面向終態(tài)的,在每一次調(diào)協(xié)的循環(huán)中,Kubelet 會(huì)向 apiserver 獲取調(diào)度到本 Node 的 Pod 的數(shù)據(jù),再做一個(gè)面向終態(tài)的處理,以達(dá)到我們預(yù)期的狀態(tài)。

循環(huán)的第一步,首先通過(guò) List 接口拿到容器的狀態(tài)。確保有鏡像,如果沒(méi)有鏡像則 pull 鏡像再通過(guò) Sandbox 和 Container 接口來(lái)創(chuàng)建容器。需要注意的是,我們的 CNI(容器網(wǎng)絡(luò)接口)也是在 CRI 進(jìn)行操作的,因?yàn)槲覀冊(cè)趧?chuàng)建 Pod 的時(shí)候需要同時(shí)創(chuàng)建網(wǎng)絡(luò)資源然后注入到 Pod 中(PS:CNI包含在創(chuàng)建Pod 這個(gè)動(dòng)作里)。接下來(lái)就是我們的容器和鏡像。我們通過(guò)具體的容器創(chuàng)建引擎來(lái)創(chuàng)建一個(gè)具體的容器。

執(zhí)行流程為:

  • Kubelet 通過(guò) CRI runtime service API 調(diào)用 CRI plugin 創(chuàng)建 pod
  • CRI 通過(guò) CNI 創(chuàng)建 pod 的網(wǎng)絡(luò)配置和 namespace
  • CRI使用 containerd 創(chuàng)建并啟動(dòng) pause container (sandbox container) 并且把這個(gè) container 置于 pod 的 cgroups/namespace
  • Kubelet 接著通過(guò) CRI image service API 調(diào)用 CRI plugin, 獲取容器鏡像
  • CRI 通過(guò) containerd 獲取容器鏡像
  • Kubelet 通過(guò) CRI runtime service API 調(diào)用 CRI, 在 pod 的空間使用拉取的鏡像啟動(dòng)容器
  • CRI 通過(guò) containerd 創(chuàng)建/啟動(dòng) 應(yīng)用容器, 并且把 container 置于 pod 的 cgroups/namespace. Pod 完成啟動(dòng)。

總結(jié)

發(fā)現(xiàn) CRI 只是服務(wù)于 Kubernetes 的,而且它呈現(xiàn)向上匯報(bào)的狀態(tài)。它是幫助 Kubernetes 的,它不幫助OCI的。所以說(shuō)當(dāng)你去做這個(gè)集成時(shí)候,你會(huì)發(fā)現(xiàn)尤其對(duì)于 VM gVisor\KataContainer 來(lái)說(shuō),它與 CRI 的很多假設(shè)或者是 API 的寫法上是不對(duì)應(yīng)的。所以你的集成工作會(huì)比較費(fèi)勁,這是一個(gè)不 match 的狀態(tài)。

最后一個(gè)就是我們維護(hù)起來(lái)非常困難,因?yàn)橛捎谟辛? CRI 之后,比如 RedHat 擁有自己的 CRI 實(shí)現(xiàn)叫 cri-o,他們和 containerd 在本質(zhì)上沒(méi)有任何區(qū)別,跑到最后都是靠 runC 起容器,為什么還需要cri-o這種東西?

我們不知道,如果我想使用Kata container與containerd多運(yùn)行時(shí)的話,我需要給他們兩個(gè)分別寫兩部分的一體化把 Kata 集成進(jìn)去。這就很麻煩,就意味著我有 100 種這樣的 CRI ,我就要寫 100 個(gè)shim去集成,而且他們的功能全部都是重復(fù)的。

所以這就產(chǎn)生了Containerd ShimV2的這樣的shim來(lái)解決這個(gè)問(wèn)題。我們下回分解。

reference

https://time.geekbang.org/column/article/71499?utm_campaign=guanwang&utm_source=baidu-ad&utm_medium=ppzq-pc&utm_content=title&utm_term=baidu-ad-ppzq-title

https://blog.frognew.com/2021/04/relearning-container-02.html

https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md

https://developer.aliyun.com/article/679993

本文轉(zhuǎn)載自微信公眾號(hào)「運(yùn)維開(kāi)發(fā)故事」

責(zé)任編輯:姜華 來(lái)源: 運(yùn)維開(kāi)發(fā)故事
相關(guān)推薦

2021-12-23 07:58:06

Kubelet容器運(yùn)行

2024-07-15 18:20:18

2023-09-07 07:17:01

KubernetesCRI標(biāo)準(zhǔn)

2015-08-06 15:13:49

runtimeIOS開(kāi)發(fā)

2023-01-10 13:48:50

ContainerdCRI源碼

2014-07-29 11:16:07

2015-03-25 13:42:42

ZAKER

2010-08-10 17:01:48

FlexJavaScript

2017-10-18 12:22:43

NativeHybirdJavaScript

2021-08-30 09:44:47

Kubelet機(jī)制驅(qū)逐

2023-08-29 08:20:35

Kubernete跨云容器

2009-06-10 21:46:02

JavaScript與

2015-08-17 09:46:15

UIjs

2014-09-16 11:17:36

AndroidService交互方式

2025-03-03 08:05:14

2009-07-01 14:42:30

JSP和XML

2011-06-13 09:04:39

QT Flash 交互

2015-09-07 09:53:02

Objective-CRuntime

2021-09-07 07:48:37

kubeletKubernetesContainerd

2017-01-16 16:24:14

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

色综合天天综合网国产成人综合天| aa级大片欧美| 欧美激情在线狂野欧美精品| 国产精品无码毛片| 成人激情视屏| 亚洲一区二区在线观看视频| 欧美日韩一区在线视频| 国产精品国产三级国产aⅴ| 91久久在线| 视频在线观看99| 日韩免费高清一区二区| 日韩国产大片| 欧美性猛交xxxx久久久| 中文字幕黄色大片| 黄色片免费在线| 国产剧情一区在线| 国产成人欧美在线观看| 午夜偷拍福利视频| 日韩精品诱惑一区?区三区| 亚洲成人动漫在线播放| 欧美激情第一区| 松下纱荣子在线观看| 亚洲视频 欧洲视频| 欧美中日韩一区二区三区| 精品人妻一区二区三区日产乱码| 日韩国产一区二| 97在线观看免费高清| 黄视频网站免费看| 日韩精品一卡| 亚洲视频精品在线| 三叶草欧洲码在线| 岛国成人av| 这里只有精品视频在线观看| 亚洲 中文字幕 日韩 无码| а√天堂8资源中文在线| 亚洲女同一区二区| 在线免费观看成人| 国产一级在线| 久久午夜免费电影| 精品久久久久久亚洲| 丁香六月天婷婷| 国产在线一区二区| 成人免费视频网址| 又骚又黄的视频| 秋霞av亚洲一区二区三| 日韩av手机在线看| 台湾佬中文在线| 国产视频久久| 欧美壮男野外gaytube| 日本一级淫片色费放| 激情欧美国产欧美| 欧美激情三级免费| 国语对白一区二区| 亚洲黑丝一区二区| 97超级碰在线看视频免费在线看| 国产一级中文字幕| 一区免费视频| 2019亚洲男人天堂| 探花视频在线观看| 男人的天堂亚洲在线| 日本亚洲精品在线观看| 国产黄网在线观看| 青青草国产精品97视觉盛宴 | 亚洲电影视频在线| 亚洲欧美偷拍三级| 国产精品av免费观看| 污影院在线观看| 亚洲一区二区三区国产| 欧美 日韩 国产在线观看| 成人在线黄色电影| 色婷婷av一区二区| 日韩一级理论片| 成人国产一区| 日韩美女视频一区二区在线观看| 特黄特色免费视频| 欧美大胆a级| 亚洲性视频网站| 极品色av影院| 怡红院精品视频在线观看极品| 97在线观看视频国产| 波多野结衣二区三区| 韩国av一区二区三区| 高清不卡一区二区三区| 人成免费电影一二三区在线观看| 国产无一区二区| 中文字幕第一页亚洲| 俄罗斯一级**毛片在线播放| 欧美性猛交xxxx免费看久久久| 亚洲 欧美 日韩系列| 伊人精品久久| 国产一区二区三区在线观看网站| 国产三级精品三级观看| 亚洲成人中文| 国产在线精品一区免费香蕉 | 国产福利91精品一区二区三区| 国产精品传媒毛片三区| 国产区av在线| 亚洲精品免费在线观看| 欧美日韩在线中文| 国产精品麻豆| 亚洲视频专区在线| 国产亚洲精品久久久久久无几年桃| 亚洲一区二区毛片| 91影视免费在线观看| 午夜视频在线免费播放| 日韩美女视频19| 美女av免费在线观看| 国产免费av国片精品草莓男男| 日韩国产在线看| 99鲁鲁精品一区二区三区| 午夜宅男久久久| 91情侣在线视频| yw在线观看| 欧美日韩国产精品一区| 午夜大片在线观看| 最新国产一区| 97精品一区二区视频在线观看| 91精品国自产| 国产欧美日韩不卡免费| 国产白丝袜美女久久久久| 中文字幕日本一区| 一区二区三区回区在观看免费视频| 国产无遮挡aaa片爽爽| 国产又粗又猛又爽又黄91精品| 欧美日本韩国一区二区三区| 国模雨婷捆绑高清在线| 日韩午夜av电影| 国产wwwwxxxx| 日本不卡不码高清免费观看| 欧美精品一区二区三区久久| 白白色在线观看| 欧美大片国产精品| 黄色一级视频在线观看| 国产精品夜夜爽| 在线看成人av电影| 伊人久久大香| 久久九九有精品国产23| 亚洲天堂自拍偷拍| 日本一区二区三区久久久久久久久不 | 亚洲国产欧美在线| 美女流白浆视频| 欧美精品一卡| 超碰97在线播放| aa在线视频| 日韩手机在线导航| 免费又黄又爽又色的视频| 国产一区二区三区四| 中文精品一区二区三区| 3d动漫一区二区三区在线观看| 中文字幕亚洲综合久久| 在线观看国产精品入口男同| 国产精品美女久久久久久久久久久| 一区二区三区入口| 日韩欧美一区二区三区在线视频| 国产精品视频yy9099| www 日韩| 欧美夫妻性生活| 欧美精品久久久久久久久46p| 国产一级精品在线| 日本五级黄色片| 另类尿喷潮videofree| 欧美一级bbbbb性bbbb喷潮片| 青青色在线视频| 色狠狠色噜噜噜综合网| 亚洲天堂av中文字幕| 久久超碰97中文字幕| 国产精品久久久影院| 粉嫩一区二区三区四区公司1| 97涩涩爰在线观看亚洲| 欧美一区二区少妇| 欧美日韩视频第一区| 日本黄色片免费观看| 成人h动漫精品一区二| 久久久久久久久久久视频| 国产精选一区| 国产美女高潮久久白浆| 亚洲小说区图片| 日韩电影网在线| 岳乳丰满一区二区三区| 亚洲综合激情另类小说区| 日本japanese极品少妇| 老司机午夜精品99久久| 日韩a级黄色片| 免费观看久久av| 成人在线免费观看视视频| 波多野结衣在线高清| 中文字幕欧美精品日韩中文字幕| 99久久精品国产一区色| 懂色av中文一区二区三区天美| 免费一级特黄3大片视频| 国产成人在线色| 欧美黑人又粗又大又爽免费| 亚洲乱码免费伦视频| 久久艳妇乳肉豪妇荡乳av| 日韩成人一区| 97久久久久久| 黄色片网站在线观看| 亚洲美女av黄| 国产高清在线观看视频| 精品国产乱码久久久久酒店| 美女视频久久久| 91欧美激情一区二区三区成人| 91丝袜超薄交口足| 国产精品外国| 97在线免费视频观看| 欧美日韩国产一区二区三区不卡| 国产精品传媒毛片三区| 日本久久久久| 国产精品h片在线播放| h片精品在线观看| 国产香蕉一区二区三区在线视频 | 亚洲欧美国产va在线影院| 国产精品一区二区三区在线免费观看 | 亚洲欧美精品suv| 亚洲成人一级片| 欧美日韩国产首页在线观看| 欧美一级特黄视频| 亚洲精品国产一区二区三区四区在线| 91视频在线网站| 不卡一区中文字幕| 日本人dh亚洲人ⅹxx| 蜜桃av一区二区在线观看| 蜜臀av无码一区二区三区| 一区二区国产在线| 亚洲一区二区在线看| 国产成人短视频在线观看| 国语精品免费视频| 99re8这里有精品热视频免费| 成人福利视频在线观看| 成人高清一区| 国产精品青青在线观看爽香蕉 | 毛片免费不卡| 中文字幕精品在线| www在线免费观看| 亚洲美女在线观看| 青青色在线视频| 日韩精品极品毛片系列视频| 婷婷色在线视频| 精品成a人在线观看| 精品国产av一区二区| 欧美精品自拍偷拍动漫精品| 中文字幕一二三四| 欧美中文字幕一区二区三区亚洲| 无码免费一区二区三区| 色94色欧美sute亚洲线路一久| 国产精品777777| 精品动漫一区二区三区| 成人午夜视频在线播放| 日韩欧美国产视频| 337p粉嫩色噜噜噜大肥臀| 色一情一乱一乱一91av| 波多野结衣在线电影| 色av成人天堂桃色av| 亚洲视频一区在线播放| 欧美日韩亚洲综合| 国产情侣在线播放| 日韩一级片在线观看| 亚洲va欧美va| 亚洲精品suv精品一区二区| 天堂成人在线观看| 亚洲图中文字幕| 3d成人动漫在线| 成人97在线观看视频| 国产偷倩在线播放| 国产91精品不卡视频| 第四色男人最爱上成人网| 国产精品美乳一区二区免费 | 免费在线亚洲欧美| 黄色三级视频片| 精品一区二区免费看| 小日子的在线观看免费第8集| 成人久久18免费网站麻豆| 国产精品久久不卡| 国产精品嫩草影院com| 欧美精品一区二区蜜桃| 精品日韩美女的视频高清| 综合久久中文字幕| 欧美草草影院在线视频| 视频在线观看你懂的| 伊人亚洲福利一区二区三区| 超碰在线网址| 欧美专区国产专区| 国产精品亚洲一区二区在线观看| 成人蜜桃视频| blacked蜜桃精品一区| 精品国产一区二区三区在线| 亚洲第一网站| 69久久久久久| 成人高清免费观看| 日韩福利在线视频| 亚洲va国产va欧美va观看| 成人免费一区二区三区| 亚洲国产一区二区三区在线观看| av资源种子在线观看| 欧美激情videoshd| 日本一区二区三区视频在线| av日韩免费电影| 国产欧美一区二区精品久久久| 男女h黄动漫啪啪无遮挡软件| 国产农村妇女精品一区二区| 亚洲高清在线不卡| 国产亚洲精品中文字幕| 亚洲最大的黄色网址| 在线区一区二视频| 秋霞网一区二区| 久久久精品2019中文字幕神马| 偷拍自拍在线看| 999精品视频一区二区三区| 欧洲杯什么时候开赛| 久久亚洲中文字幕无码| 国产真实乱对白精彩久久| 国产一级久久久久毛片精品| 香蕉影视欧美成人| 国产高潮在线观看| 在线观看国产精品淫| a欧美人片人妖| 成人免费视频视频在| 亚洲xxx拳头交| 色综合手机在线| 久久久久久久久伊人| 久久精品国产成人av| 亚洲国产欧美一区二区三区同亚洲 | 亚洲第一中文av| 91免费视频网址| 日韩av女优在线观看| 日韩欧美中文一区| av观看在线| 2014国产精品| 亚洲成av人片一区二区密柚| 91看片在线免费观看| 久久精品一区二区三区av| 亚洲伊人成人网| 亚洲精品电影在线| 国产在线精彩视频| 国产一区二区免费在线观看| 欧美午夜电影在线观看| 肉丝美足丝袜一区二区三区四| 亚洲免费av高清| 国产精品高潮呻吟久久久| 久久精品在线视频| 99精品女人在线观看免费视频| 在线视频不卡一区二区| 麻豆一区二区99久久久久| 极品久久久久久久| 欧美午夜精品电影| 亚洲成人三级| 成人免费淫片视频软件| 91精品动漫在线观看| 中文字幕一区久久| 亚洲精品久久久久久国产精华液| 亚洲av无码乱码国产精品| 欧美国产中文字幕| 成人h动漫精品一区二区器材| www.av片| 337p粉嫩大胆色噜噜噜噜亚洲| 青青草免费观看视频| 精品成a人在线观看| 亚洲妇女成熟| 日韩免费三级| 久久av中文字幕片| 免费无遮挡无码永久在线观看视频| 欧美一级片在线| 爱情岛论坛亚洲品质自拍视频网站| 极品日韩久久| 日韩在线一二三区| www日韩在线| 精品电影一区二区| 你懂得影院夜精品a| 一区二区三区av| 丁香亚洲综合激情啪啪综合| 国产精品视频免费播放| 少妇激情综合网| 国产日韩三级| 九色91popny| 亚洲精品久久嫩草网站秘色| 视频二区在线| 国产精品视频免费在线观看| 欧美日本不卡高清| 日韩 中文字幕| 欧美人成免费网站| av免费在线视| 亚洲欧洲日韩综合二区| 国产盗摄一区二区三区| 人妻 日韩精品 中文字幕| 久久精品国产欧美激情| 欧美理论电影在线精品| 奇米影视四色在线| 黄色一区二区三区| 日本成人网址| 久久偷窥视频| 国产美女一区二区三区| 精品久久久久久久久久久久久久久久| 久久精彩免费视频| 中文字幕中文字幕精品| 日本一区二区三区在线免费观看| 色综合久久中文综合久久牛| av网址在线| 日韩欧美一区二区三区四区五区| 国产suv精品一区二区6| 一区二区视频在线免费观看|