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

先發(fā)制人遇事不慌:Kubernetes集群主動擴展?

云計算
Cluster Autoscaler在觸發(fā)自動擴展時并不檢查內(nèi)存或CPU的可用數(shù),而是會對事件作出反應(yīng),檢查所有??不可調(diào)度的Pod??。當(dāng)調(diào)度器找不到能容納某個Pod的節(jié)點時,我們就說這個Pod是不可調(diào)度的。

當(dāng)集群資源不足時,Cluster Autoscaler會提供新節(jié)點并將其加入集群。使用Kubernetes時你可能會注意到,創(chuàng)建節(jié)點并將其加入集群的過程可能需要花費數(shù)分鐘。在這段時間里,應(yīng)用程序很容易被連接淹沒,因為已經(jīng)無法進一步擴展了

虛擬機的配置可能需要花費數(shù)分鐘,在這期間可能無法擴展應(yīng)

如何消除如此長的等待時間?

主動擴展(Proactive scaling),或者:

  1. 理解集群Autoscaler的工作原理并最大限度提升其效用;
  2. 使用Kubernetes scheduler為節(jié)點分配另一個Pod;以
  3. 主動配置工作節(jié)點,以改善擴展效果

注意:本文涉及的所有代碼都已發(fā)布至LearnK8s GitHub。

Linode可以支持這些解決方案。近期Lincode加入了 Akamai解決方案大家庭,現(xiàn)在注冊Linode,就可免費獲得價值100美元的使用額度,可以隨意使用Linode云平臺提供的各種服務(wù)。立即點擊這里了解詳情并注冊吧↓↓↓

進一步了解Akamai Linode云計算服務(wù)與能

Cluster Autoscaler如何在Kubernetes中生效

Cluster Autoscaler在觸發(fā)自動擴展時并不檢查內(nèi)存或CPU的可用數(shù),而是會對事件作出反應(yīng),檢查所有不可調(diào)度的Pod。當(dāng)調(diào)度器找不到能容納某個Pod的節(jié)點時,我們就說這個Pod是不可調(diào)度的。

我們可以這樣創(chuàng)建一個集群來測試看看。

bash
$ linode-cli lke cluster-create \
 --label learnk8s \
 --region eu-west \
 --k8s_version 1.23 \
 --node_pools.count 1 \
 --node_pools.type g6-standard-2 \
 --node_pools.autoscaler.enabled enabled \
 --node_pools.autoscaler.max 10 \
 --node_pools.autoscaler.min 1 \
$ linode-cli lke kubeconfig-view "insert cluster id here" --text | tail +2 | base64 -d > kubeconfig

請留意下列細節(jié):

  1. 每個節(jié)點有4GB內(nèi)存和2個vCPU(例如“g6-standard-2”實例
  2. 集群中只有一個節(jié)點,并
  3. Cluster autoscaler被配置為從1個節(jié)點擴展至10個節(jié)

我們可以用下列命令驗證安裝已成功完成:

bash
$ kubectl get pods -A --kubecnotallow=kubeconfig

用環(huán)境變量導(dǎo)出kubeconfig文件通常是一種很方便的做法,為此我們可以運行:

bash
$ export KUBECONFIG=${PWD}/kubeconfig
$ kubectl get pods

部署應(yīng)用程序

讓我們部署一個需要1GB內(nèi)存和250m* CPU的應(yīng)用程序。

注意:m = 內(nèi)核的千分之一容量,因此250m = CPU25%容量。

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: podinfo
spec:
 replicas: 1
 selector:
 matchLabels:
 app: podinfo
 template:
 metadata:
 labels:
 app: podinfo
 spec:
 containers:
 - name: podinfo
 image: stefanprodan/podinfo
 ports:
 - containerPort: 9898
 resources:
 requests:
 memory: 1G
 cpu: 250m

用下列命令將資源提交至集群:

bash
$ kubectl apply -f podinfo.yaml

隨后很快會發(fā)現(xiàn)一些情況。首先,三個Pod幾乎會立即開始運行,另有一個Pod處于未決狀態(tài)。


隨后很快

  1. 幾分鐘后,Autoscaler創(chuàng)建了一個額外的Pod,并
  2. 第四個Pod會被部署到一個新節(jié)點中

最終,第四個Pod被部署到一個新節(jié)點

第四個Pod為何沒有部署到第一個節(jié)點中?讓我們一起看看已分配的資源。

Kubernetes節(jié)點中資源的分配

Kubernetes集群中部署的Pod會消耗內(nèi)存、CPU以及存儲資源。而且在同一個節(jié)點上,操作系統(tǒng)和Kubelet也需要消耗內(nèi)存和CPU

Kubernetes工作節(jié)點上,內(nèi)存和CPU會被拆分為:

  1. 運行操作系統(tǒng)和系統(tǒng)守護進程(如SSH、Systemd等)所需的資源。
  2. 運行Kubernetes代理程序(如Kubelet、容器運行時以及節(jié)點故障檢測程序等)所需的資源。
  3. 可用于Pod的資源。
  4. 為排空閾值(Eviction threshold)保留的資源

Kubernetes節(jié)點中分配和保留的資

如果集群運行了DaemonSet(如kube-proxy),那么可用內(nèi)存和CPU數(shù)量還將進一步減少。

那么我們不妨降低需求,以確保能將所有Pod都放入同一個節(jié)點中:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: podinfo
spec:
 replicas: 4
 selector:
 matchLabels:
 app: podinfo
 template:
 metadata:
 labels:
 app: podinfo
 spec:
 containers:
 - name: podinfo
 image: stefanprodan/podinfo
 ports:
 - containerPort: 9898
 resources:
 requests:
 memory: 0.8G # <- lower memory
 cpu: 200m # <- lower CPU
我們可以使用下列命令修改這個部署:
bash
$ kubectl apply -f podinfo.yaml

選擇恰當(dāng)數(shù)量的CPU和內(nèi)存以優(yōu)化實例的運行,這是個充滿挑戰(zhàn)的工作。Learnk8s計算器工具可以幫助我們更快速地完成這項工作。

一個問題解決了,但是創(chuàng)建新節(jié)點花費的時間呢?

遲早我們會需要四個以上的副本,我們是否真的需要等待好幾分鐘,隨后才能創(chuàng)建新的Pod

簡單來說:是的!Linode必須從頭開始創(chuàng)建和配置新虛擬機,隨后將其連接到集群。這個過程經(jīng)常會超過兩分鐘。

但其實還有替代方案:我們可以在需要時主動創(chuàng)建已經(jīng)配置好的節(jié)點。

例如:我們可以配置讓Autoscaler始終準(zhǔn)備好一個備用節(jié)點。當(dāng)Pod被部署到備用節(jié)點后,Autoscaler可以主動創(chuàng)建另一個備用節(jié)點。然而Autoscaler并沒有內(nèi)置這樣的功能,但我們可以很容易地重新創(chuàng)建。

我們可以創(chuàng)建一個請求數(shù)與節(jié)點資源相等的Pod

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: overprovisioning
spec:
 replicas: 1
 selector:
 matchLabels:
 run: overprovisioning
 template:
 metadata:
 labels:
 run: overprovisioning
 spec:
 containers:
 - name: pause
 image: k8s.gcr.io/pause
 resources:
 requests:
 cpu: 900m
 memory: 3.8G

用下列命令將資源提交至集群:

bash
kubectl apply -f placeholder.yaml

這個Pod完全不執(zhí)行任何操作。

用占位Pod保護節(jié)點上的所有資源

該節(jié)點的作用只是確保節(jié)點能夠被充分使用起來。

隨后還需要確保當(dāng)工作負載需要擴展時,這個占位Pod能夠被快速清除。為此我們可以使用Priority Class。

yaml
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
 name: overprovisioning
value: -1
globalDefault: false
description: "Priority class used by overprovisioning."
---
apiVersion: apps/v1
kind: Deployment
metadata:
 name: overprovisioning
spec:
 replicas: 1
 selector:
 matchLabels:
 run: overprovisioning
 template:
 metadata:
 labels:
 run: overprovisioning
 spec:
 priorityClassName: overprovisioning # <--
 containers:
 - name: pause
 image: k8s.gcr.io/pause
 resources:
 requests:
 cpu: 900m
 memory: 3.8G
用下列命令將其提交至集群:
bash
kubectl apply -f placeholder.yaml

至此,配置工作已全部完成。

我們可能需要等待一會讓Autoscaler創(chuàng)建節(jié)點,隨后我們將有兩個節(jié)點:

  1. 一個包含四個Pod的節(jié)
  2. 一個包含一個占位Pod的節(jié)

如果將部署擴展為5個副本會怎樣?是否要等待Autoscaler創(chuàng)建另一個新節(jié)點?

用下列命令測試看看吧:

bash
kubectl scale deployment/podinfo --replicas=5

我們將會看到:

  1. 第五個Pod會立即創(chuàng)建出來,并在10秒內(nèi)變?yōu)椤罢谶\行”的狀態(tài)。
  2. 占位Pod會被清除,以便為第五個Pod騰出空間。

占位Pod會被清除,以便為常規(guī)Pod騰出空

隨后

  1. Cluster autoscaler會注意到未決的占位Pod并配置一個新的節(jié)點。
  2. 占位Pod會被部署到新創(chuàng)建的節(jié)點中。

未決的Pod觸發(fā)了Cluster autoscaler新建節(jié)

在可以有更多節(jié)點時,為何又要主動創(chuàng)建出一個節(jié)點?

我們可以將占位Pod擴展到多個副本,每個副本都會預(yù)配置一個Kubernetes節(jié)點,準(zhǔn)備接受標(biāo)準(zhǔn)工作負載。然而這些節(jié)點雖然是閑置的,但它們產(chǎn)生的費用依然會計入云服務(wù)賬單。因此一定要慎重,不要創(chuàng)建太多節(jié)點。

Cluster AutoscalerHorizontal Pod Autoscaler配合使用

為理解這項技術(shù)的含義,我們可以將Cluster autoscalerHorizontal Pod AutoscalerHPA)結(jié)合在一起來看。HPA可用于提高部署中的副本數(shù)量。

隨著應(yīng)用程序收到越來越多流量,我們可以讓Autoscaler調(diào)整處理請求的副本數(shù)量。當(dāng)Pod耗盡所有可用資源后,會觸發(fā)Cluster autoscaler新建一個節(jié)點,這樣HPA就可以繼續(xù)創(chuàng)建更多副本。

可以這樣新建一個集群來測試上述效果:

bash
$ linode-cli lke cluster-create \
 --label learnk8s-hpa \
 --region eu-west \
 --k8s_version 1.23 \
 --node_pools.count 1 \
 --node_pools.type g6-standard-2 \
 --node_pools.autoscaler.enabled enabled \
 --node_pools.autoscaler.max 10 \
 --node_pools.autoscaler.min 3 \
$ linode-cli lke kubeconfig-view "insert cluster id here" --text | tail +2 | base64 -d > kubeconfig-hpa

用下列命令驗證安裝過程已成功完成:

bash
$ kubectl get pods -A --kubecnotallow=kubeconfig-hpa

使用環(huán)境變量導(dǎo)出kubeconfig文件是一種方便的做法,為此我們可以運行:

bash
$ export KUBECONFIG=${PWD}/kubeconfig-hpa
$ kubectl get pods

接下來使用Helm安裝Prometheus并查看該部署的相關(guān)指標(biāo)。我們可以在官網(wǎng)上了解安裝Helm的詳細方法。

bash
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm install prometheus prometheus-community/prometheus
Kubernetes為HPA提供了一個控制器,借此可以動態(tài)增減副本數(shù)量。然

HPA也有一些局限性:

  1. 無法拆箱即用。需要安裝Metrics Server來匯總并暴露出指標(biāo)。
  2. PromQL查詢無法做到拆箱即用。

好在我們可以使用KEDA,它通過一些實用功能(包括從Prometheus讀取指標(biāo))擴展了HPA控制器的用法。KEDA是一種Autoscaler,可適用于下列三個組件:

  1. Scaler
  2. Metrics Adapter
  3. Controller


KEDA架構(gòu)

我們可以通過Helm安裝KEDA

bash
$ helm repo add kedacore https://kedacore.github.io/charts
$ helm install keda kedacore/keda

安裝好PrometheusKEDA之后,來創(chuàng)建一個部署吧。

在這個實驗中,我們將使用一個每秒可以處理固定數(shù)量請求的應(yīng)用。每個Pod每秒最多可以處理十個請求,如果Pod收到第11個請求,會將請求掛起,稍后再處理。

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
 name: podinfo
spec:
 replicas: 4
 selector:
 matchLabels:
 app: podinfo
 template:
 metadata:
 labels:
 app: podinfo
 annotations:
 prometheus.io/scrape: "true"
 spec:
 containers:
 - name: podinfo
 image: learnk8s/rate-limiter:1.0.0
 imagePullPolicy: Always
 args: ["/app/index.js", "10"]
 ports:
 - containerPort: 8080
 resources:
 requests:
 memory: 0.9G
---
apiVersion: v1
kind: Service
metadata:
 name: podinfo
spec:
 ports:
 - port: 80
 targetPort: 8080
 selector:
 app: podinfo

使用下列命令將資源提交至集群:

bash
$ kubectl apply -f rate-limiter.yaml

為了生成一些流量,我們可以使用Locust。下列YAML定義將創(chuàng)建一個分布式負載測試集群:

yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: locust-script
data:
 locustfile.py: |-
 from locust import HttpUser, task, between
 class QuickstartUser(HttpUser):
 @task
 def hello_world(self):
 self.client.get("/", headers={"Host": "example.com"})
---
apiVersion: apps/v1
kind: Deployment
metadata:
 name: locust
spec:
 selector:
 matchLabels:
 app: locust-primary
 template:
 metadata:
 labels:
 app: locust-primary
 spec:
 containers:
 - name: locust
 image: locustio/locust
 args: ["--master"]
 ports:
 - containerPort: 5557
 name: comm
 - containerPort: 5558
 name: comm-plus-1
 - containerPort: 8089
 name: web-ui
 volumeMounts:
 - mountPath: /home/locust
 name: locust-script
 volumes:
 - name: locust-script
 configMap:
 name: locust-script
---
apiVersion: v1
kind: Service
metadata:
 name: locust
spec:
 ports:
 - port: 5557
 name: communication
 - port: 5558
 name: communication-plus-1
 - port: 80
 targetPort: 8089
 name: web-ui
 selector:
 app: locust-primary
 type: LoadBalancer
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: locust
spec:
 selector:
 matchLabels:
 app: locust-worker
 template:
 metadata:
 labels:
 app: locust-worker
 spec:
 containers:
 - name: locust
 image: locustio/locust
 args: ["--worker", "--master-host=locust"]
 volumeMounts:
 - mountPath: /home/locust
 name: locust-script
 volumes:
 - name: locust-script
 configMap:
 name: locust-script

運行下列命令將其提交至集群:

bash
$ kubectl locust.yaml
Locust會讀取下列l(wèi)ocustfile.py文件,該文件存儲在一個ConfigMap中:
py
from locust import HttpUser, task, between
class QuickstartUser(HttpUser):
 @task
 def hello_world(self):
 self.client.get("/")

該文件并沒有什么特別的作用,只是向一個URL發(fā)出請求。若要連接至Locust儀表板,我們需要提供其負載均衡器的IP地址。為此可使用下列命令獲取地址:

bash
$ kubectl get service locust -o jsnotallow='{.status.loadBalancer.ingress[0].ip}'

隨后打開瀏覽器并訪問該IP地址即可。

此外還需要注意一個問題:Horizontal Pod Autoscaler。KEDA autoscaler會用一個名為ScaledObject的特殊對象來封裝Horizontal Autoscaler。

yaml
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: podinfo
spec:
scaleTargetRef:
 kind: Deployment
 name: podinfo
minReplicaCount: 1
maxReplicaCount: 30
cooldownPeriod: 30
pollingInterval: 1
triggers:
- type: prometheus
 metadata:
 serverAddress: http://prometheus-server
 metricName: connections_active_keda
 query: |
 sum(increase(http_requests_total{app="podinfo"}[60s]))
 threshold: "480" # 8rps * 60s

KEDA可以連接由Prometheus收集的指標(biāo),并將其發(fā)送給Kubernetes。最后,它還將使用這些指標(biāo)創(chuàng)建一個Horizontal Pod Autoscaler (HPA)。

我們可以用下列命令手工檢查HPA

bash
$ kubectl get hpa
$ kubectl describe hpa keda-hpa-podinfo

并使用下列命令提交該對象:

bash
$ kubectl apply -f scaled-object.yaml

接下來可以測試擴展效果了。請在Locust儀表板中用下列設(shè)置啟動一項實驗:

  1. Number of users:300
  2. Spawn rate:0.4
  3. Host:http://podinfo


集群和Horizontal pod autoscaler的結(jié)

可以看到,副本的數(shù)量增加了!

效果不錯,但有個問題不知道你是否注意到。

當(dāng)該部署擴展到8Pod后,需要等待幾分鐘,隨后才能在新節(jié)點中創(chuàng)建新的Pod。在這段時間里,每秒處理的請求數(shù)量也不再增加了,因為當(dāng)前的8個副本每個都只能處理10個請求。

讓我們試試看收縮容量并重復(fù)該實驗:

bash
kubectl scale deployment/podinfo --replicas=4 # or wait for the autoscaler to remove pods

這次,我們將用一個占位Pod實現(xiàn)超量配置(Overprovision):

yaml
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
 name: overprovisioning
value: -1
globalDefault: false
description: "Priority class used by overprovisioning."
---
apiVersion: apps/v1
kind: Deployment
metadata:
 name: overprovisioning
spec:
 replicas: 1
 selector:
 matchLabels:
 run: overprovisioning
 template:
 metadata:
 labels:
 run: overprovisioning
 spec:
 priorityClassName: overprovisioning
 containers:
 - name: pause
 image: k8s.gcr.io/pause
 resources:
 requests:
 cpu: 900m
 memory: 3.9G

運行下列命令將其提交至集群:

bash
kubectl apply -f placeholder.yaml

打開Locust儀表板并用下列設(shè)置重復(fù)實驗:

  1. Number of users:300
  2. Spawn rate:0.4
  3. Host:http://podinfo


在超量配置的情況下進行集群和Horizontal pod autoscaler的結(jié)

這一次,新節(jié)點將在后臺創(chuàng)建,每秒請求數(shù)量將持續(xù)增減,不會原地踏步。很棒!

總結(jié)

本文介紹了下列內(nèi)容:

  1. Cluster autoscaler并不追蹤CPU或內(nèi)存用量,而是會監(jiān)控未決的Pod。
  2. 我們可以用可用內(nèi)存和CPU的總量來創(chuàng)建一個Pod,從而主動配置Kubernetes節(jié)點
  3. Kubernetes節(jié)點會為Kubelet、操作系統(tǒng)以及排空閾值保留一定的資源。
  4. 我們可以結(jié)合使用Prometheus和KEDA,從而通過PromQL查詢擴展自己的Pod。

這篇文章的內(nèi)容感覺還行吧?有沒有想要立即在Linode平臺上親自嘗試一下?別忘了,現(xiàn)在注冊可以免費獲得價值100美元的使用額度,快點自己動手體驗本文介紹的功能和服務(wù)吧↓↓↓

進一步了解Akamai Linode云計算服務(wù)與能力!

歡迎關(guān)注Akamai知乎機構(gòu)號 ,第一時間了解高可用的MySQL/MariaDB參考架構(gòu),以及豐富的應(yīng)用程序示例


責(zé)任編輯:張燕妮
相關(guān)推薦

2023-09-08 11:00:13

云計算內(nèi)存

2021-01-26 11:37:40

FedoraChrome谷歌

2010-02-05 15:54:22

2024-03-13 10:50:55

2017-06-28 14:52:38

安全

2017-02-22 21:51:24

2025-08-06 06:05:00

網(wǎng)絡(luò)故障Linux命令

2022-01-22 00:17:07

物聯(lián)網(wǎng)網(wǎng)絡(luò)安全漏洞

2021-06-22 10:20:30

5G物聯(lián)網(wǎng)生態(tài)系統(tǒng)

2023-07-24 15:24:31

2017-04-13 10:15:18

機器人工作

2021-08-05 10:56:54

谷歌開發(fā)人員Linux

2018-01-07 01:32:31

2023-09-07 10:31:50

AIGCChatGPT

2023-07-10 13:32:00

2024-02-22 15:45:56

2022-07-01 17:57:45

KubernetesAPI

2011-02-15 09:35:25

2020-07-17 13:28:49

系統(tǒng)程序員開發(fā)
點贊
收藏

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

国产精品亚洲一区二区无码| 中文字幕色一区二区| 91香蕉在线视频| 国产一区不卡| 4438亚洲最大| 美女日批免费视频| 91在线直播| 成人午夜激情影院| 国产精品久久久久9999| 九九免费精品视频| 成人久久电影| 亚洲福利视频网站| 亚洲精品性视频| 男人久久天堂| 亚洲精品国产a久久久久久| 精品免费日产一区一区三区免费| 亚洲在线视频播放| 精品动漫av| 日韩三级成人av网| 国产chinese中国hdxxxx| 视频精品导航| 精品久久久久久中文字幕大豆网| 致1999电视剧免费观看策驰影院| 亚洲色图另类小说| 国产乱码精品1区2区3区| 国产成人精品亚洲精品| 免费毛片一区二区三区| 亚洲乱码精品| 中日韩美女免费视频网址在线观看| 久久久久99人妻一区二区三区| 99久久亚洲国产日韩美女| 亚洲第一福利一区| 欧美做受777cos| 嫩草在线视频| 国产精品日韩精品欧美在线| 欧美极品色图| 噜噜噜久久,亚洲精品国产品| 美女高潮久久久| 国产成人精品优优av| 毛片视频网站在线观看| 亚洲电影在线| 欧美精品videos性欧美| 国产大学生自拍| 97精品视频| 主播福利视频一区| 五月天精品视频| 欧美猛男做受videos| 亚洲二区中文字幕| 影音先锋资源av| 亚洲一区电影| 精品剧情在线观看| 国产sm在线观看| 在线精品视频一区| 欧美大黄免费观看| 无码人妻一区二区三区在线| 欧美另类中文字幕| 欧美一区二区三区视频在线| 三级av免费观看| 九九久久国产| 欧美区在线观看| 在线一区二区不卡| 国产美女视频一区二区| 91精品福利在线一区二区三区| 日韩av片专区| 日韩区欧美区| 精品国内二区三区| 国产十八熟妇av成人一区| 美腿丝袜亚洲图片| 国产视频精品自拍| 手机看片福利视频| 91综合网人人| 欧美精品亚州精品| 久久精品99国产精| 夜夜精品视频| 日韩av免费在线看| 中文字幕a级片| 韩国欧美国产一区| 波多野结衣精品久久| 天堂国产一区二区三区| 久久久久久亚洲综合影院红桃| 性欧美精品一区二区三区在线播放 | 国产99在线 | 亚洲| 欧美亚洲在线日韩| 美女扒开尿口让男人操亚洲视频网站| 免看一级a毛片一片成人不卡| 亚洲国产日本| 国产成人精品一区二区在线| 一级做a爱片性色毛片| 国产v综合v亚洲欧| 欧美日韩精品久久久免费观看| 国产精品一区在线看| 亚洲欧洲日韩一区二区三区| 成人小视频在线观看免费| 五月天国产在线| 欧美日韩不卡一区二区| 无码国产精品一区二区高潮| 日韩电影在线观看完整免费观看| 一区二区亚洲欧洲国产日韩| 九九视频在线免费观看| 三级影片在线观看欧美日韩一区二区| 91久久精品国产91性色| 天天操天天干天天操| 国产精品女主播在线观看| 成人午夜免费在线视频| 天天综合网天天| 欧美mv日韩mv国产网站| 一区二区伦理片| 亚洲午夜91| 国产精品丝袜一区二区三区| 免费国产黄色片| 亚洲欧美一区二区在线观看| 国产白丝袜美女久久久久| 小说区图片区亚洲| 国产丝袜一区视频在线观看 | 亚洲狠狠爱一区二区三区| 丰满少妇在线观看| 免费成人三级| 久久91精品国产| 中文字幕欧美色图| 波多野结衣在线一区| 亚洲一区二区精品在线| 精精国产xxxx视频在线野外| 欧美一区二区三区男人的天堂| 无码国产69精品久久久久同性| 欧美欧美全黄| 成人性生交xxxxx网站| 免费毛片在线| 精品久久久久久亚洲国产300| 日日夜夜精品视频免费观看| 欧美丰满老妇| 国产精品久久久久久久久久三级| 四虎永久在线观看| 亚洲综合久久av| www.偷拍.com| 91精品秘密在线观看| 国产精品一二区| av每日在线更新| 在线日韩国产精品| 精品少妇一区二区三区免费观| 亚洲国产二区| 国产麻豆日韩| 1234区中文字幕在线观看| 日韩欧美资源站| 日韩在线观看视频一区二区| 久久99九九99精品| 中文字幕一区二区三区乱码| 国产人妖一区| 精品激情国产视频| 国产精品久久无码一三区| 国产精品人成在线观看免费| 99视频在线视频| 日韩激情图片| 国产在线精品播放| 9191在线观看| 91精品国产福利| 国产这里有精品| 大尺度一区二区| 福利视频免费在线观看| 高清精品xnxxcom| 海角国产乱辈乱精品视频| 黄色av免费观看| 婷婷成人激情在线网| 亚洲av片不卡无码久久| 久久精品1区| 亚洲免费不卡| 精品国产亚洲一区二区三区在线 | 超碰在线观看91| 国产亚洲综合色| 日韩欧美国产片| 欧美+日本+国产+在线a∨观看| 99国产精品久久久久老师| 高h视频在线播放| 亚洲欧洲高清在线| 怡红院男人天堂| 亚洲精品国产a| 成年人的黄色片| 日本不卡高清视频| a级片一区二区| 亚洲美女15p| 国产精品自产拍在线观看中文 | 亚洲欧美日韩一区二区三区在线观看| www.久久久久久久久久久| 欧美激情五月| 免费看污久久久| 亚洲毛片在线免费| 韩剧1988免费观看全集| 99视频在线观看地址| 日韩免费成人网| 久久影视中文字幕| 亚洲精品乱码久久久久久黑人| 国产精品伦子伦| 麻豆精品在线看| 亚洲精品无码国产| 成人在线免费观看91| 成人在线免费网站| 欧美暴力调教| 午夜欧美大片免费观看| av资源在线观看免费高清| 欧美xxxx在线观看| www.久久视频| 亚洲成人黄色影院| 亚洲精品电影院| caoporen国产精品视频| 一本色道久久亚洲综合精品蜜桃| 国产精品av久久久久久麻豆网| 欧美日韩精品久久久免费观看| 一区二区免费| 国产日韩欧美在线| 东京一区二区| 久久久久久久久久久免费精品| av资源网在线观看| 亚洲а∨天堂久久精品喷水| 亚洲一级片免费看| 色综合一个色综合亚洲| 免费毛片在线播放免费| 国产免费观看久久| 日本一区二区在线免费观看| 国产制服丝袜一区| 天天爽人人爽夜夜爽| 亚洲欧美日韩视频二区| 青青青在线观看视频| 国产精品传媒精东影业在线| 日本在线观看一区二区| 久久97久久97精品免视看秋霞| 成人免费看片视频| 91欧美精品| 国产91色在线| 345成人影院| 2019精品视频| 国产精品蜜芽在线观看| 久精品免费视频| 超碰免费公开在线| 日韩中文字幕精品| av在线资源网| 中文字幕av一区二区三区谷原希美| 无码国产色欲xxxx视频| 精品久久人人做人人爰| 精品久久久无码中文字幕| 欧美电影影音先锋| 一区二区三区免费在线| 欧美日韩国产首页| 91精品国产乱码久久久| 欧美图片一区二区三区| 中文字幕第99页| 欧美性生活影院| 中文字幕视频在线播放| 欧美日韩高清影院| 一区二区三区精| 91精品国产综合久久久久久漫画| 亚洲天堂777| 884aa四虎影成人精品一区| 一级黄色大片免费观看| 欧美日韩午夜在线| 国产伦理一区二区| 欧美成人女星排名| 日本高清视频网站| 亚洲高清色综合| 婷婷色在线观看| 亚洲精品国产综合区久久久久久久| 天天色天天操天天射| 亚洲免费精彩视频| av一本在线| 久久久精品视频成人| 少女频道在线观看免费播放电视剧| 色综合男人天堂| 乡村艳史在线观看| 国产精品久久久久久久久久久久 | 蜜桃伊人久久| 天堂一区在线观看| 韩国av一区二区| 在线观看一区二区三区四区| 不卡一区中文字幕| 亚洲精品视频久久久| 亚洲国产精品t66y| 欧美日韩精品在线观看视频 | www.爱爱.com| 日韩福利视频在线观看| 国产69精品久久app免费版| xxav国产精品美女主播| 美女尤物在线视频| 日本成人免费在线| 成人国产精品久久| 韩国一区二区三区美女美女秀| 九九热精品视频在线观看| 亚洲精品国产精品国自产| 韩日精品视频| 国产一二三区av| 东方欧美亚洲色图在线| 亚洲国产天堂av| 亚洲综合色网站| 中国a一片一级一片| 日韩女优视频免费观看| 欧美日韩激情视频一区二区三区| 久久精品福利视频| 亚洲最新无码中文字幕久久| 91精品啪在线观看麻豆免费| 天堂日韩电影| 日韩精品福利片午夜免费观看| 免费国产自线拍一欧美视频| 中文字幕资源在线观看| 99国产精品国产精品久久| 在线观看黄网址| 日韩欧美在线免费| www.成人免费视频| 色婷婷av一区二区三区久久| 55av亚洲| 99在线热播| 99精品小视频| 激情综合网俺也去| 成年人午夜久久久| 黄色一级片中国| 欧美午夜不卡视频| 五月天激情开心网| 欧美激情成人在线视频| www.一区| 日韩啊v在线| 免播放器亚洲| 亚洲国产精品无码久久久久高潮| 亚洲激情综合网| 91激情在线观看| 中文字幕国产亚洲| 欧美三级网址| 精品久久久久亚洲| 伊人狠狠色j香婷婷综合| 午夜免费一级片| 中文av字幕一区| 国产成人a v| 亚洲网在线观看| 欧美电影h版| 久久综合久久综合这里只有精品| 亚洲天堂激情| 无码人妻aⅴ一区二区三区玉蒲团| 综合久久给合久久狠狠狠97色| 成人黄色免费网| 一区二区亚洲欧洲国产日韩| 深夜成人影院| 日本亚洲导航| 日韩精品1区2区3区| 能免费看av的网站| 色婷婷综合久久久中文一区二区 | 99re免费视频精品全部| 亚洲一区 视频| 亚洲а∨天堂久久精品9966| 美女航空一级毛片在线播放| 97国产超碰| 激情另类综合| 欧美无人区码suv| 欧美色xxxx| 久草在线网址| 国产精品美女久久久久av超清| 精品国产91久久久久久浪潮蜜月| 欧美少妇性生活视频| 久久精品这里都是精品| 国产精品乱码一区二区视频| 日韩在线观看免费全集电视剧网站| 国产精品4hu.www| 这里只有精品66| 国产高清视频一区| 久久久精品视频免费| 亚洲精品美女在线| 国模套图日韩精品一区二区| 午夜一区二区三区| 国产在线乱码一区二区三区| 黄页网站免费观看| 日韩国产高清视频在线| 成人软件在线观看| 一区二区三区在线视频111| 国产在线麻豆精品观看| 国产性生活网站| 国产婷婷成人久久av免费高清| 不卡亚洲精品| 日韩专区第三页| 91一区二区在线| 成人黄色免费网| 久久久久久久97| 国产一区二区三区网| 亚洲第一天堂久久| 亚洲成人免费观看| 黄色片在线播放| 亚洲v日韩v综合v精品v| 一本综合精品| 亚洲视频重口味| 亚洲国产精久久久久久 | 亚洲欧美色图视频| 欧美丝袜丝交足nylons图片| 最新国产露脸在线观看| 久久人人九九| 韩日欧美一区二区三区| 日韩xxx高潮hd| 色青青草原桃花久久综合| 盗摄牛牛av影视一区二区| 99视频在线免费| 亚洲激情第一区| 国内av一区二区三区| 91国产在线免费观看| 视频在线在亚洲| 久草免费在线视频观看| 一本色道久久88亚洲综合88| 日韩欧美中文字幕在线视频| 国产视频一区二区视频|