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

K8s存儲架構及插件使用

開發
容器內部存儲的生命周期是短暫的,會隨著容器環境的銷毀而銷毀,具有不穩定性。如果多個容器希望共享同?份存儲,則僅僅依賴容器本身是很難實現的。

作者 | 中國移動云能力中心PaaS產品部 王琦

容器內部存儲的生命周期是短暫的,會隨著容器環境的銷毀而銷毀,具有不穩定性。如果多個容器希望共享同?份存儲,則僅僅依賴容器本身是很難實現的。

01引言

在Kubernetes系統中,容器應用所需的存儲資源被抽象為存儲卷(Volume),并以此概念來解決“容器存儲所面臨”的問題。

Volume是與Pod綁定的(獨立于容器)與Pod具有相同生命周期的資源對象。我們可以將Volume的內容理解為?錄或?件,容器如需使?某個Volume,則僅需設置volumeMounts將?個或多個Volume掛載為容器中的?錄或?件,即可訪問Volume中的數據。Volume具體是什么類型,以及由哪個系統提供,對容器應?來說是透明的。

Kubernetes?前?持的Volume類型包括Kubernetes的內部資源對象類型(In-Tree)、開源共享存儲等(Out-of-Tree)類型的存儲服務。

02Kubernetes存儲體系架構

2.1 Kubernetes存儲基礎知識

PV(Persistent Volume):存儲資源的定義,主要涉及存儲能力、訪問模式、存儲類型、回收策略、后端存儲類型等關鍵信息的設置;

圖片

圖 PV狀態流程

PVC(Persistent Volume Claim):用戶對存儲資源的需求申請,主要涉及存儲空間請求、訪問模式、PV選擇條件和存儲類別等信息的設置;

圖片

圖PVC狀態流程

SC(Storage Class):存儲資源的抽象定義,對用戶設置的PVC申請屏蔽后端存儲的細節,一方面減少了用戶對于存儲資源細節的關注,另一方面減輕了管理員手工管理PV的壓力,轉由系統自動完成PV的創建和綁定,實現動態的資源供應。SC資源對象的定義主要包括名稱、后端存儲的提供者及相關參數配置和回收策略。

2.2 Kubernetes存儲總體架構

圖片

圖 Kubernetes存儲架構

  • PV Controller:管理卷的整個生命周期,控制PVC和PV進行綁定,執行卷的Provision或Delete操作;
  • AD Controller:執行卷的Attach或Detach,并將卷掛接到目標節點;
  • Volume Manager:執行卷的Mount或Unmount,以及共享目錄掛載、卷格式化等操作;
  • Volume Plugin:擴展卷存儲管理的能力,將第三方存儲插件能力集成進Kubernetes存儲系統,是卷管理能力的具體實現;
  • Scheduler:負責將待調度的Pod按照特定的調度算法和調度策略綁定到集群中某個合適的Node上,并將綁定信息寫入etcd。

2.3 Kubernetes存儲機制概述

圖片

圖 Kubernetes持久化存儲流程

1)Provision/Delete階段:

用戶創建一個包含PVC的Pod;

PV Controller通過持續監聽ApiServer,發現PVC處于待綁定的狀態,隨即調用Volume Plugin創建存儲卷,并在創建成功后將PV與PVC進行綁定;

2)Attach/Detach階段:

  • Scheduler根據Pod和PV的配置、節點目前的狀態等信息,將Pod調度到Worker節點的Node上;
  • AD Controller發現Pod和PVC處于待掛載狀態,調用Volume Plugin實現存儲設備(卷)掛接到目標節點;

3)Mount/Unmount階段:

  • Worker節點上的Kubelet(Volume Manager)在卷掛載完成后,通過Volume Plugin將設備掛載到指定目錄;
  • Kubelet在被告知掛載目錄準備好后,啟動Pod中的容器,使用Docker -v的方式將存儲設備,也就是已經掛載到本地的卷映射到容器中供Pod使用。

2.4 Kubernetes存儲插件

Kubernetes在默認情況下提供了主流的存儲卷接入方案,可通過命令“kubectl explain pod.spec.volumes”查看Pod支持的所有存儲卷。同時,也提供了一種基于插件的存儲管理機制,根據概述可知PV Controller、AD Controller和Volume Manager均通過調用Volume Plugin的功能接口去執行存儲卷管理相關Provision、Attach操作。因此,操作的具體實現其實都取決于插件中的接口邏輯。Volume Plugin可以允許除默認類型外的其他存儲服務接入到Kubernetes系統中,主要分為In-Tree和Out-of-Tree兩類:

  • In-Tree類存儲服務實現的源碼都在Kubernetes主干代碼庫中,優勢在于和Kubernetes一起發布、管理和迭代,相對穩定。但也因此存在更新迭代速度慢、靈活性較差的問題,屬于緊耦合的開發模式;
  • Out-of-Tree類存儲服務通過擴展Volume Plugin獨立于Kubernetes外,存儲提供方只需基于Kubernetes容器對接的存儲接口標準進行存儲插件的實現,就能使用Kubernetes的原生機制為容器提供存儲服務。而存儲提供方的代碼則可與Kubernetes代碼徹底解耦,部署也與Kubernetes核心組件分離。

在Kubernetes中,存儲插件的開發方式有Flexvolume和CSI兩種,接下來通過原理和案例演示的方式做進一步介紹。

03Felxvolume原理及案例演示

3.1 Flexvolume簡介

Flexvolume提供了一種擴展Volume Plugin的方式,用戶可以自定義自己的存儲插件,實現Attach、Mount等功能接口。比如AD Controller調用插件實現Attach操作時,會首先調用Flexvolume中的Attach接口。Flexvolume是可被Kubelet驅動的可執行二進制文件,該文件需要實現Flexvolume的相關接口,每一次調用相當于執行一次shell腳本,然后返回JSON格式的數據,因此其不是一個常駐內存的守護進程。Flexvolume存儲插件默認的存放位置是:/usr/libexec/kubernetes/kubelet-plugins/volume/exec/<vendor~driver>/<driver>,Volume plugin組件會不斷watch這個目錄來實現插件提供的增刪等功能。其中,vendor~driver的名字和Pod中flexVolume.driver的字段名相對應,vendor部分可自定義。

圖片

3.2 Flexvolume接口定義

Flexvolume接口可以根據需求自定義的實現,比如使用NFS文件存儲,因為不存在存儲卷的掛接操作,因此不需要實現Attach、Detach相關接口,只需將接口返回結果定義成{"status":"Not supported","message":"error message"} 即可。以下列舉Flexvolume部分接口:

圖片

3.3 Flexvolume案例演示

演示前提條件:Kubernetes集群已具備NFS存儲服務,并且NFS共享目錄已設置,jq工具已安裝。

# mkdir -p /root/wq/nfs //設置共享目錄
# chmod 755 /root/wq/nfs
# vim /etc/exports //配置NFS,寫入/root/wq/nfs *(rw,sync,no_root_squash)設置權限
# yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install jq -y //安裝jq工具
# systemctl restart rpcbind.service
# systemctl enable rpcbind.service
# systemctl restart nfs.service
# systemctl enable nfs.service //重啟RPC和NFS,使配置生效

演示案例使用Kubernetes官方給出的一個基于NFS文件存儲的Flexvolume插件示例,腳本鏈接:https://github.com/kubernetes/examples/blob/master/staging/volumes/flexvolume/nfs。根據下圖所示,在Flexvolume存儲插件默認的存放位置新建插件目錄wq-nfs,將腳本放置目錄下,并賦予文件可執行權限。

圖片

然后部署一個Pod到指定節點,并使用Flexvolume的方式對容器中的數據進行持久化存儲,詳細yaml文件內容如下。

apiVersion: v1
kind: Pod
metadata:
name: k8s-flexvolume #應用名稱
namespace: flexvolume #指定應用所在命名空間
spec:
nodeSelector:
kubernetes.io/hostname: kcs-ks-qq-m-snqnq #指定應用部署節點
volumes:
- name: f-volume
flexVolume:
driver: "wq/nfs" #存儲插件定義,用于在默認插件存儲位置查詢可執行文件
fsType: "nfs" #定義存儲系統類型
options: #定義存儲服務所需相關參數
server: "192.168.2.49"
share: "/root/wq/nfs" #指定共享存儲目錄
containers:
- name: nginx-proxy
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: f-volume
subPath: subfv
mountPath: /usr/share/nginx

通過查看Pod本地持久化目錄是否已被掛載到了NFS存儲系統上,可以得知Flexvolume插件是否正常運行。在NFS共享目錄下新建文本文件,并寫入一些內容,然后進入Pod查看新建文件和寫入內容是否已同步,即可進一步驗證存儲是否掛載成功,詳細操作如下圖所示。

圖片

04CSI原理及案例演示

4.1 CSI簡介

CSI是容器存儲接口Container Storage Interface的簡稱,作用是為了能在容器編排引擎和存儲系統之間建立一套標準的存儲調用接口,進而通過該接口為容器編排引擎提供存儲服務。

圖片

圖 CSI插件設計架構

4.2 CSI存儲體系及接口定義

CSI存儲體系主要由兩部分組成:External Components和Custom Components。

External Components(Kubernetes外部組件):主要包含Driver Registrar、External Attacher、External Provisioner三個部分,這三個組件源自Kubernetes原本的in-tree存儲體系,可以理解為Kubernetes的一個外部Controller,負責Watch Kubernetes的API資源對象,然后根據監聽到的狀態調用Custom Components實現存儲管理和操作。

  • Driver Registrar:CSI Node-Driver-Registrar是一個Sidecar容器,用于從CSI driver獲取驅動程序信息(使用NodeGetInfo),并使用Kubelet插件注冊機制在該節點上的 Kubelet中對其進行注冊。
  • External Attacher:用于監聽Kubernetes VolumeAttachment對象,并針對驅動程序端點觸發CSI ControllerPublish和ControllerUnpublish操作。
  • External Provisioner:監聽Kubernetes中的PVC對象,調用CSI對應的創建、刪除等Volume操作。

?注:External Components目前仍由Kubernetes團隊維護,插件開發者無需關心其實現細節。

Custom Components(CSI存儲插件):主要包含CSI Identity、CSI Controller、CSI Node三個部分,是需要開發者通過編碼來實現的,并以gRPC的方式對外提供服務。

  • CSI Identity:用于對外暴露這個插件本身的信息,確保插件的健康狀態。

service Identity {
// 返回插件的名稱和版本
rpc GetPluginInfo(GetPluginInfoRequest)
returns (GetPluginInfoResponse) {}
// 返回插件具備所有功能
rpc GetPluginCapabilities(GetPluginCapabilitiesRequest)
returns (GetPluginCapabilitiesResponse) {}
// 檢測插件的健康狀態,是否正在運行
rpc Probe (ProbeRequest)
returns (ProbeResponse) {}
}

  • CSI Controller:用于實現Volume管理流程中Provision和Attach階段操作,比如創建和刪除Volume、對Volume進行Attach/Detach(Publish/UnPublish)操作等。CSI Controller里定義的所有服務都有一個共同特點,那就是無需在宿主機上進行操作。

service Controller {
// 創建存儲卷
rpc CreateVolume (CreateVolumeRequest)
returns (CreateVolumeResponse) {}
// 刪除存儲卷
rpc DeleteVolume (DeleteVolumeRequest)
returns (DeleteVolumeResponse) {}
// Attach卷,即將存儲介質掛接到目標節點
rpc ControllerPublishVolume (ControllerPublishVolumeRequest)
returns (ControllerPublishVolumeResponse) {}
// Unattach卷
rpc ControllerUnpublishVolume (ControllerUnpublishVolumeRequest)
returns (ControllerUnpublishVolumeResponse) {}
// 返回存儲卷具備的功能,比如是否支持掛載到多個節點上等
rpc ValidateVolumeCapabilities (ValidateVolumeCapabilitiesRequest)
returns (ValidateVolumeCapabilitiesResponse) {}
// 返回所有可用存儲卷
rpc ListVolumes (ListVolumesRequest)
returns (ListVolumesResponse) {}
// 返回存儲資源池的可用空間大小
rpc GetCapacity (GetCapacityRequest)
returns (GetCapacityResponse) {}
// 返回controller插件具備的功能,比如是否支持Snapshot功能等
rpc ControllerGetCapabilities (ControllerGetCapabilitiesRequest)
returns (ControllerGetCapabilitiesResponse) {}
// 創建快照
rpc CreateSnapshot (CreateSnapshotRequest)
returns (CreateSnapshotResponse) {}
// 刪除快照
rpc DeleteSnapshot (DeleteSnapshotRequest)
returns (DeleteSnapshotResponse) {}
// 列出快照
rpc ListSnapshots (ListSnapshotsRequest)
returns (ListSnapshotsResponse) {}
// 擴容
rpc ControllerExpandVolume (ControllerExpandVolumeRequest)
returns (ControllerExpandVolumeResponse) {}
}

  • CSI Node:用于控制Kubernetes節點上Volume的相關功能操作。Volume在節點的Mount過程被分為NodeStageVolume和NodePublishVolume兩個階段,前者針對塊存儲類型將存儲設備格式化后,先掛載到節點的一個全局的臨時目錄,之后再調用NodePublishVolume接口將目錄掛載進Pod中指定的目錄上。

service Node {
// 在Kubernetes節點上格式化存儲卷,并將其掛載到一個全局的臨時目錄
rpc NodeStageVolume (NodeStageVolumeRequest)
returns (NodeStageVolumeResponse) {}
// NodeStageVolume的逆操作,將存儲卷從臨時目錄卸載掉
rpc NodeUnstageVolume (NodeUnstageVolumeRequest)
returns (NodeUnstageVolumeResponse) {}
// 將存儲卷從全局的臨時目錄掛載到指定的目標目錄(Pod內的目錄)
rpc NodePublishVolume (NodePublishVolumeRequest)
returns (NodePublishVolumeResponse) {}
// NodePublishVolume的逆操作,將存儲卷從Pod目錄卸載掉
rpc NodeUnpublishVolume (NodeUnpublishVolumeRequest)
returns (NodeUnpublishVolumeResponse) {}
// 返回可用于該卷的卷容量統計信息
rpc NodeGetVolumeStats (NodeGetVolumeStatsRequest)
returns (NodeGetVolumeStatsResponse) {}
// Kubernetes節點上執行卷擴容
rpc NodeExpandVolume(NodeExpandVolumeRequest)
returns (NodeExpandVolumeResponse) {}
// 返回節點插件具備的所有功能,比如是否支持Stage/Unstage功能
rpc NodeGetCapabilities (NodeGetCapabilitiesRequest)
returns (NodeGetCapabilitiesResponse) {}
// 返回節點的一些信息
rpc NodeGetInfo (NodeGetInfoRequest)
returns (NodeGetInfoResponse) {}
}

4.3 CSI案例演示

演示前提條件:Kubernetes集群中已安裝NFS相關的CSI驅動,用于實踐通過CSI的方式使用NFS文件存儲。Kubernetes官方有一個基于CSI驅動實現NFS存儲的項目可以用于初次實踐,鏈接如下:https://github.com/kubernetes-csi/csi-driver-nfs,同時提供以下兩種安裝部署方式。?

l 遠程安裝:通過以下命令訪問Github一鍵安裝。
# curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/v3.1.0/deploy/install-driver.sh | bash -s v3.1.0 -- //本次示例安裝csi-driver-nfs版本為v3.1.0,也可安裝其他版本
l 本地安裝:通過將項目Clone到本地,再執行安裝腳本方式進行安裝。
# git clone https://github.com/kubernetes-csi/csi-driver-nfs.git
# cd csi-driver-nfs
# ./deploy/install-driver.sh v3.1.0 local

?運行腳本后,可通過命令”kubectl -n kube-system get pod -o wide -l app=csi-nfs-controller”和”kubectl -n kube-system get pod -o wide -l app=csi-nfs-node”查看Pod狀態,如下所示則表示已安裝完畢。可以注意到,csi-nfs-node會以DaemonSet的方式在每個節點上運行,并執行存儲卷的Mount/Unmount操作。

圖片

csi-driver-nfs安裝完成后,就可以通過”spec.csi.driver”的規范來調用驅動使用NFS存儲。下面我們先通過Static Volume Provisioning,也就是靜態PV的供應方式調用CSI驅動創建PV。然后通過PVC使用這個PV,完成PVC和PV的綁定操作。

# Static Volume Provisioning創建PV所用yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-csi-nfs
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
mountOptions:
- hard
- nfsvers=4.1
csi:
driver: nfs.csi.k8s.io
readOnly: false
volumeHandle: unique-volumeid
volumeAttributes:
server: 192.168.2.49
share: /root/wq/nfs

# Static Volume Provisioning創建PVC所用yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-csi-nfs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
volumeName: pv-csi-nfs # 指定需要使用的PV
storageClassName: ""

實際操作過程如下圖所示。可以看到,通過CSI驅動,PV創建成功并已處于可使用的狀態。此時,便可通過PVC使用這個PV,PVC在創建后會與PV進行綁定,綁定成功后PV的狀態也會發生改變。

圖片

接下來,我們再通過Dynamic Volume Provisioning,動態PV的供應方式做進一步的演示。該方式相比Static Volume Provisioning,集群管理員無需再預先分配PV,而只是創建一個SC模板文件,用戶在通過PVC使用PV時,無需再關心PV所需的參數細節,因為這些信息已經預先設置到了SC里。?

# Dynamic Volume Provisioning創建SC所用yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-csi-nfs
provisioner: nfs.csi.k8s.io
parameters:
server: 192.168.2.49
share: /root/wq/nfs
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- hard
- nfsvers=4.1
# Dynamic Volume Provisioning創建PVC所用yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-sc-csi-nfs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: sc-csi-nfs

實際操作過程如下圖所示。可以看到,SC、PVC創建成功,PVC通過SC調用CSI驅動自動生成了PV(pvc-4c45d45b-ec52-4276-9cbd-589964da73b3),并最終與PVC完成了綁定。

圖片

05總結

本文介紹了Kubernetes存儲架構及插件的使用,主要包括以下三部分內容:

  • 第一部分介紹了Kubernetes存儲的基本知識、總體架構、存儲機制概述以及存儲插件的概念;
  • 第二部分對FlexVolume進行了介紹,描述了其用于開發的接口定義,并通過一個實際的例子演示了Flexvolume的使用方法;
  • 第三部分對CSI進行了介紹,解析了其存儲體系結構以及開發接口定義,最后通過實際的例子演示了如何通過CSI插件以靜態或者動態的方式使用PV進行存儲。?
責任編輯:未麗燕 來源: 移動Labs
相關推薦

2022-04-22 13:32:01

K8s容器引擎架構

2023-11-06 07:16:22

WasmK8s模塊

2022-02-11 23:11:09

Kubernetes集群容器化

2024-05-27 00:00:10

KubernetesK8s云原生

2023-09-06 08:12:04

k8s云原生

2022-01-02 08:42:50

架構部署容器

2021-07-14 14:20:22

root命令Linux

2021-08-05 07:28:26

K8sNFS ProvisiSubdir

2022-11-24 08:55:02

etcdK8sKubeBrain

2019-09-09 09:53:52

K8s集群架構

2020-05-12 10:20:39

K8s kubernetes中間件

2022-09-05 08:26:29

Kubernetes標簽

2024-02-22 15:35:05

2023-08-03 08:36:30

Service服務架構

2023-08-04 08:19:02

2023-05-25 21:38:30

2019-09-25 07:17:42

KubernetesIstio測試

2023-09-15 08:00:20

Ingress網關Istio

2022-04-07 10:17:18

云原生服務器優化

2023-03-05 21:50:46

K8s集群容量
點贊
收藏

51CTO技術棧公眾號

国产成人手机视频| 蜜桃精品久久久久久久免费影院| 国产一二三四区在线| 久久不卡日韩美女| 国产精品的网站| 国产精品对白一区二区三区| 亚洲精品男人的天堂| 久久在线视频| 精品99一区二区| 日韩无套无码精品| 激情av在线| 久久久久久影视| 91夜夜未满十八勿入爽爽影院| 国产在线精品观看| 91欧美在线| 亚洲精品成人免费| 992tv人人草| 欧洲一级精品| 亚洲国产乱码最新视频 | 国产精品久久久乱弄| 欧美精品一区二区三区四区 | 伊色综合久久之综合久久| 一本久久综合亚洲鲁鲁五月天| 正在播放精油久久| 黄色小视频在线免费观看| 国产乱码精品一区二区三| 992tv在线成人免费观看| 国产老头老太做爰视频| 精品理论电影在线| 亚洲电影免费观看高清完整版在线| 久久婷婷国产91天堂综合精品| 黄页在线观看免费| 亚洲丝袜制服诱惑| 日韩jizzz| 久草视频在线看| a级精品国产片在线观看| 3d精品h动漫啪啪一区二区 | 久久久久亚洲av片无码下载蜜桃| 欧美色图激情小说| 日韩精品在线视频| 性色av蜜臀av浪潮av老女人| 日本在线视频一区二区三区| 欧美日韩免费观看一区三区| xxxx一级片| 唐人社导航福利精品| 高潮白浆女日韩av免费看| 亚洲五码在线观看视频| 黄网站在线免费| 中文字幕一区二| 亚洲资源视频| 欧美日韩欧美| 亚洲人被黑人高潮完整版| 亚洲精品tv久久久久久久久| 91这里只有精品| 国产精品欧美久久久久一区二区| 日韩三级电影| 91精品国产综合久久久久久豆腐| 国产日韩亚洲欧美综合| 日韩在线国产| 欧美性videos| 亚洲人成精品久久久久久 | 亚洲影视综合| 日本久久久久久久| 亚洲综合成人av| 日韩电影在线一区二区三区| 国产精品普通话| 夜夜骚av一区二区三区| 国产一区在线观看麻豆| 成人看片视频| 日本一区视频| 国产日本欧洲亚洲| 正在播放国产精品| 波多野结衣在线播放| 黄色精品一区二区| av无码精品一区二区三区| 成人全视频免费观看在线看| 制服丝袜亚洲精品中文字幕| 五月婷婷之婷婷| 一区二区三区在线免费看| 欧美精品一区二区在线播放| 免费看污黄网站在线观看| 欧洲grand老妇人| 精品国产拍在线观看| 欧美精品成人久久| 亚洲在线黄色| 国产一区欧美二区三区| 亚洲国产www| 国产喂奶挤奶一区二区三区| 中文字幕一区二区三区最新 | 亚洲r级在线视频| www.中文字幕在线| 国产91在线精品| 精品奇米国产一区二区三区| 法国空姐电影在线观看| 亚洲高清资源在线观看| 91精品国产高清久久久久久91| 国产一级片一区二区| 国产精品99久久久久久宅男| 久久久久免费网| 国产精品剧情| 欧美色videos| 日韩精品在线播放视频| 加勒比久久综合| 欧美日韩电影在线观看| 最新中文字幕在线观看视频| 国产v综合v亚洲欧| 亚洲激情啪啪| 蜜桃视频在线观看免费视频| 91麻豆精品国产91久久久更新时间| 中文字幕影片免费在线观看| 久久精品欧美一区| 欧美在线一区二区三区四| 99国产在线播放| 中文一区在线播放| 黄色免费视频大全| 91成人午夜| 久久精品国产99国产精品澳门| 中文字幕在线观看视频网站| 国产精品1024| 亚洲一区二区在线观| 巨茎人妖videos另类| 精品国产免费人成在线观看| 久久国产高清视频| 日韩电影在线一区二区| 久久久久久久久久久一区| 丁香花高清在线观看完整版| 91精品国产欧美一区二区成人| 国产精品20p| 国产精品久久久免费| 成人在线免费观看一区| 超碰在线无需免费| 欧美人体做爰大胆视频| 91社区视频在线观看| 性8sex亚洲区入口| 精品国产免费一区二区三区| 黑人玩欧美人三根一起进| 欧美一级淫片007| www.xxxx日本| 国产综合色视频| 日本女人高潮视频| 99精品美女视频在线观看热舞| 国产亚洲精品日韩| 在线观看日本网站| 久久久久久久综合色一本| 精品久久久久久久久久中文字幕| 成人福利免费在线观看| 久久久精品一区二区| 91福利在线观看视频| 中文字幕在线一区免费| 97人人爽人人| 亚洲五月综合| 粉嫩av一区二区三区免费观看| 污污的网站在线免费观看| 欧美一卡二卡三卡| 国产在线视频卡一卡二| 成人福利视频在线看| 国产精品专区在线| 亚洲免费观看高清完整版在线观| 欧美一区二区视频97| 精品美女视频在线观看免费软件| 在线免费观看不卡av| 黄色av免费播放| 久久99精品久久久久久久久久久久 | 亚洲天堂免费在线观看视频| 午夜天堂在线视频| 欧美午夜一区| 久久精品国产一区二区三区日韩 | 老司机精品久久| 视频一区免费观看| 国产精品3区| 国语自产精品视频在线看抢先版图片 | 国产丝袜精品第一页| 人人草在线观看| 国产精品电影一区二区| 色哟哟网站在线观看| 国产精品美女久久久| 午夜一区二区三区| 日韩精品久久久久久久软件91| 久久欧美在线电影| 国产在线自天天| 欧美一级片免费看| 亚洲免费在线观看av| 国产精品区一区二区三| 国产性猛交96| 青娱乐精品视频| 三级在线免费观看| 一区二区三区日本久久久| 成人av番号网| 松下纱荣子在线观看| 久久天天躁狠狠躁夜夜躁| 日日夜夜精品免费| 欧美性色aⅴ视频一区日韩精品| 成人免费毛片xxx| 91免费在线视频观看| 黄色aaaaaa| 国产日产高清欧美一区二区三区| 在线观看欧美一区| 日韩福利视频一区| 91老司机精品视频| 亚洲va中文在线播放免费| 欧美国产激情18| 色影视在线观看| 精品无人区太爽高潮在线播放 | 国产综合成人久久大片91| 男女高潮又爽又黄又无遮挡| 亚洲成人av| 日韩欧美亚洲日产国| 国偷自产av一区二区三区| 国产免费一区二区三区香蕉精| 黄色软件视频在线观看| 久久国产精品电影| 成人在线观看黄色| 日韩精品在线观看一区二区| 成人av手机在线| 欧美色手机在线观看| 亚洲免费黄色网址| 亚洲图片欧美综合| 亚洲一区电影在线观看| 久久久99久久| 日本aaa视频| 成人综合在线观看| 亚洲三级在线视频| 精品一区二区三区在线观看国产 | 日韩少妇裸体做爰视频| 亚洲免费av网站| 亚洲怡红院在线观看| 国产三级精品在线| 国产一二三四五区| 久久在线观看免费| 97香蕉碰碰人妻国产欧美| 福利电影一区二区| 在线观看免费看片| 国产一区二区三区久久悠悠色av| 少妇一级淫免费播放| 日韩av成人高清| 欧美性猛交久久久乱大交小说| 9色精品在线| 欧美激情视频免费看| 国内在线观看一区二区三区| 青青在线免费视频| 欧美成人高清| 2022中文字幕| 国产综合自拍| 免费看毛片的网址| 亚洲每日在线| www黄色日本| 久久一区中文字幕| 国产精品少妇在线视频| 日日摸夜夜添夜夜添国产精品| 777米奇影视第四色| 香蕉久久国产| jizz欧美激情18| 青青草视频一区| aaa一级黄色片| 国产精品影视网| 日本一区二区免费视频| 99在线精品视频| 国产亚洲无码精品| 国产亚洲一区字幕| 中文字幕91视频| 亚洲人成在线播放网站岛国| 国产真实的和子乱拍在线观看| 亚洲国产成人91porn| 国产一区二区99| 欧美日韩免费观看一区二区三区| 国产精品毛片一区视频播| 日韩欧美在线1卡| 日韩一级片免费看| 亚洲人成自拍网站| 欧美成年黄网站色视频| 欧美激情三级免费| 自拍偷拍亚洲视频| 成人av在线亚洲| 精品国产午夜肉伦伦影院| 热re99久久精品国产99热| 日韩欧美一区二区三区免费看| 欧美少妇一区二区三区| 狠狠爱综合网| 国产精品无码一本二本三本色| 精品一区二区三区视频 | 久久久久久久久久久久久女国产乱| 成熟人妻av无码专区| 亚洲欧美另类小说| 日产精品久久久| 3d成人动漫网站| 四虎影视2018在线播放alocalhost| 亚洲深夜福利视频| 视频在线这里都是精品| 国产999在线观看| 精品国产亚洲一区二区在线观看 | 国产精品爽爽爽| 超碰成人97| 亚洲成人在线视频网站| 亚洲国产激情| 手机免费看av网站| 91女神在线视频| 免费一级片在线观看| 欧洲一区在线观看| 日本免费一区视频| 色999日韩欧美国产| 密臀av在线播放| 大波视频国产精品久久| 久久美女精品| 1024精品视频| 国产真实精品久久二三区| av女人的天堂| 午夜视频在线观看一区二区三区| 亚洲天堂狠狠干| 亚洲男女自偷自拍图片另类| 丝袜在线视频| 成人深夜直播免费观看| 国产va免费精品观看精品视频| 日韩精品一区在线视频| 国产一区二区三区四区五区美女| 亚洲午夜精品久久久久久高潮| 香蕉久久一区二区不卡无毒影院| 国产精品污视频| 中文字幕日韩高清| 唐人社导航福利精品| 精品国产一区二区三| 亚洲精品看片| 麻豆免费在线观看视频| 亚洲欧美日韩国产一区二区三区 | 亚洲精品一线二线三线| 久做在线视频免费观看| 国产精品免费久久久久影院| 久久av中文| 岳毛多又紧做起爽| av在线一区二区三区| 国产性70yerg老太| 日韩色视频在线观看| 国产一二区在线| 成人在线视频福利| 91视频综合| 九九热免费在线观看| 国产精品女人毛片| 伊人久久亚洲综合| 中文字幕亚洲色图| 免费视频观看成人| 亚洲日本欧美在线| 久久国产麻豆精品| 国产在视频线精品视频| 欧美色成人综合| 日本欧美在线视频免费观看| 国产免费一区二区三区在线观看| 日韩精品久久久久久久电影99爱| 中文久久久久久| 国产精品久久久久久福利一牛影视| 国产九色91回来了| xx视频.9999.com| 国产精品麻豆| 屁屁影院ccyy国产第一页| 成人国产免费视频| 日韩三级一区二区三区| 亚洲欧洲国产伦综合| 99久久综合国产精品二区| 亚洲精品成人久久久998| 国产一区二区三区美女| 国产一级一级片| 日韩精品在线观看一区| 日韩欧美2区| 熟女熟妇伦久久影院毛片一区二区| 国产美女久久久久| av资源吧首页| 亚洲人在线视频| 伊人久久大香线蕉综合影院首页| dy888午夜| 97国产精品videossex| 看黄色一级大片| 不卡伊人av在线播放| 黑人久久a级毛片免费观看| 成人观看免费完整观看| 国产精品三级在线观看| www.五月天激情| 欧美一区二区视频97| 欧美大黑bbbbbbbbb在线| 免费在线观看日韩av| 色欧美日韩亚洲| 久久bbxx| 久久爱av电影| 久久国产尿小便嘘嘘| 伊人久久综合视频| 中文字幕亚洲欧美| 国产成人夜色高潮福利影视| 国产成人精品视频ⅴa片软件竹菊| 国产欧美一区二区精品性色超碰| 国产手机视频在线| 欧美性做爰毛片| 亚洲欧美日韩高清在线| 五级黄高潮片90分钟视频| 91麻豆精品国产91| 日韩精品专区| 国产一级片91| 欧美激情一区二区在线| 亚洲精品无码久久久| 国产女同一区二区| 国产精品女主播一区二区三区| 97在线观看视频免费| 日韩精品一区二区三区第95| 警花av一区二区三区 |