精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

亚洲国产精品久久精品怡红院| 日本精品在线观看| 欧美一性一交| 一本色道综合亚洲| 久久久国产精华液999999| 亚洲精品成av人片天堂无码| 久久国产成人| 久久亚洲电影天堂| 蜜桃传媒一区二区亚洲av| 欧美综合社区国产| 精品久久久久久中文字幕一区奶水| 欧美三级网色| 亚洲免费视频网| 免费日本视频一区| 97在线视频免费观看| 美国黄色特级片| 欧美人成在线观看ccc36| 欧美在线观看视频一区二区| www.好吊操| √新版天堂资源在线资源| 成人免费三级在线| 国产欧美韩国高清| 欧美 日韩 精品| 欧美日本一区| 中文字幕自拍vr一区二区三区| 亚洲黄色小说在线观看| 国产精品99精品一区二区三区∴| 亚洲国产精品欧美一二99| 亚洲国产日韩欧美| 视频一区二区在线播放| 国产黄人亚洲片| 国产精品直播网红| 国产精品久久久久久人| 国产精品v欧美精品v日本精品动漫| 一区二区三区精品99久久 | 亚洲欧美日韩人成在线播放| 欧美放荡办公室videos4k| av男人的天堂av| 日韩极品在线| 亚洲激情免费观看| 青青草精品在线| 精品自拍视频| 欧美三级在线看| 成人黄色一区二区| 色老太综合网| 日韩欧美在线中文字幕| 日韩免费一级视频| 9999精品成人免费毛片在线看| 亚洲日本丝袜连裤袜办公室| 亚洲欧洲日韩精品| 岛国在线视频| 欧美—级在线免费片| 欧洲高清一区二区| 欧美午夜黄色| 91视频观看免费| 欧美精品七区| 狠狠色伊人亚洲综合网站l| 久久视频一区二区| 麻豆av一区二区| 亚州男人的天堂| 91污片在线观看| 久久精品二区| 久草视频在线看| 国产亚洲精品免费| 日本一区二区三区视频在线观看| 能在线看的av| 亚洲国产精品精华液2区45| 亚洲春色综合另类校园电影| 日本在线人成| 亚洲免费观看高清完整版在线观看 | 日韩一区二区精品视频| 国产三级aaa| 欧美激情aⅴ一区二区三区| 欧美日韩国产成人在线观看| 日本一区二区不卡在线| 翔田千里一区二区| 国产精品国产三级国产aⅴ浪潮| 亚洲视屏在线观看| 久久精品999| 产国精品偷在线| 污污网站在线免费观看| 久久这里都是精品| 一区二区免费在线观看| 欧美极品少妇videossex| 五月婷婷激情综合| 已婚少妇美妙人妻系列| 成人黄色91| 亚洲国产精品女人久久久| 37p粉嫩大胆色噜噜噜| 久久综合88| 高清在线视频日韩欧美| 久久久久在线视频| 激情欧美一区二区三区在线观看| 国产成人精品日本亚洲11| 免费动漫网站在线观看| 中文字幕中文乱码欧美一区二区| 免费在线看黄色片| 日韩一区二区三区免费视频| 日韩一二三区不卡| 六月婷婷七月丁香| 欧美大片aaaa| 91成人在线播放| 国产又黄又粗又长| 91视频在线看| 青青草视频在线视频| 芒果视频成人app| 日韩视频一区在线观看| 欧美黄色激情视频| 黄色精品网站| 成人字幕网zmw| 黄色影院在线播放| 亚洲成人高清在线| 亚洲一二三不卡| 国产欧美日韩精品一区二区三区| 色综合天天综合网国产成人网| 波多野结衣在线观看视频| 国产成人精品综合在线观看| 午夜精品一区二区三区在线观看| 91九色国产在线播放| 欧美喷潮久久久xxxxx| 亚洲国产果冻传媒av在线观看| 91精品国产自产在线观看永久∴ | 97人人做人人爽香蕉精品| 精品国产自在久精品国产| 精品伦精品一区二区三区视频密桃| 国产午夜精品一区二区三区欧美 | 天堂在线资源视频| 欧美综合自拍| 高清一区二区三区四区五区| aaa国产视频| 国产精品美女久久久久久久久久久 | 7777奇米亚洲综合久久| 高清毛片在线看| 日韩欧美国产成人| 欧美精品黑人猛交高潮| 影音先锋久久| 国产精品美女黄网| 亚洲奶水xxxx哺乳期| 在线不卡免费av| 91导航在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 奇米影视首页 狠狠色丁香婷婷久久综合 | 午夜伦理精品一区| 国产91免费在线观看| 一区二区三区四区在线免费观看| 亚洲精品在线网址| 亚洲中无吗在线| 91在线无精精品一区二区| 理论片午午伦夜理片在线播放| 欧美视频一区二区三区在线观看| av网在线播放| 日本特黄久久久高潮| 三区精品视频观看| yiren22亚洲综合| 在线日韩av观看| 中文字幕在线观看第二页| 国产精品理论片| 在线免费看污网站| 自拍日韩欧美| 国产福利不卡| 日韩av一卡| 亚洲老板91色精品久久| 无码人妻一区二区三区免费| 欧美经典一区二区三区| 日韩一区二区三区久久| 久久精品免费一区二区三区| 91免费综合在线| 欧美女同一区| 亚洲日韩欧美视频| 在线观看毛片网站| 亚洲乱码中文字幕| 国产不卡一二三| 美女爽到呻吟久久久久| 香蕉久久夜色| 精品久久国产一区| 91精品国产91久久久久久最新| 视频在线观看你懂的| 欧美日韩在线直播| 欧美视频www| 99国产精品国产精品毛片| 91蝌蚪视频在线观看| 国产韩日影视精品| 国产综合色一区二区三区| 精品免费av在线| 欧美成人精品一区二区三区| 手机av在线免费观看| 欧美午夜精品免费| 国产小视频在线观看免费| 久久久一区二区| 中文字幕剧情在线观看| 午夜一区二区三区不卡视频| 杨幂一区欧美专区| 激情视频极品美女日韩| 国产精品视频地址| 激情网站在线| 中国日韩欧美久久久久久久久| 国产成人精品毛片| 日本乱人伦一区| 青青草原免费观看| 国产日韩精品久久久| 人妻体体内射精一区二区| 久久精品亚洲| 欧美图片激情小说| 三上亚洲一区二区| 久久国产精品免费一区| www.欧美视频| 国产精品 欧美在线| h片在线观看视频免费免费| 色妞色视频一区二区三区四区| 欧美性受xxxx狂喷水| 在线电影一区二区三区| 亚洲乱码国产乱码精品| 亚洲午夜精品网| 一级黄色片日本| 国产欧美久久久精品影院| 国产真实乱人偷精品| 国产精品自拍毛片| 婷婷免费在线观看| 久久先锋影音| 午夜免费福利小电影| 在线中文字幕亚洲| 伊人婷婷久久| 成人羞羞网站| 日韩av图片| 亚洲最大在线| 久久久久久久久久码影片| 综合久久成人| 亚洲精品日韩激情在线电影| 久久免费资源| 国产精品亚发布| se69色成人网wwwsex| 国产成人精品久久| videos性欧美另类高清| 久久频这里精品99香蕉| 日本资源在线| 欧美精品久久一区二区 | 91国产中文字幕| 污网站在线免费看| 久热在线中文字幕色999舞| 日本暖暖在线视频| 深夜精品寂寞黄网站在线观看| av免费在线一区二区三区| 亚洲天堂av女优| 国产小视频在线观看| 亚洲天堂成人在线| 国产视频二区在线观看| 国产亚洲精品久久久| 国产一二三区在线| 色偷偷噜噜噜亚洲男人的天堂| av每日在线更新| 久久精品成人欧美大片古装| 麻豆tv免费在线观看| 免费91麻豆精品国产自产在线观看| 免费黄色在线观看| 美女视频黄免费的亚洲男人天堂| 国产调教视频在线观看| 欧美成人精品三级在线观看 | 久久免费精品视频在这里| 亚洲精品久久久久久一区二区| 成人在线免费观看网站| 伊人久久大香线蕉av一区| 亚洲一区色图| 黄色一级在线视频| 首页国产欧美日韩丝袜| 日韩大片一区二区| 国产一区不卡视频| 88av在线播放| 国产免费久久精品| 亚洲综合视频网站| 亚洲动漫第一页| 精品欧美一区二区三区免费观看 | 亚洲精品高清在线观看| 久久久久久久极品内射| 富二代精品短视频| 中文字幕免费播放| 日韩视频一区二区三区在线播放| 亚州男人的天堂| xx视频.9999.com| 91av久久| 国产精品日韩在线播放| 日本超碰一区二区| 欧美精品国产精品久久久 | 国产精品欧美激情在线| 日韩欧美你懂的| 天堂中文在线8| 日韩天堂在线视频| 国产乱码午夜在线视频 | 一区二区三区免费在线看| 国产专区一区二区三区| 欧美色网址大全| 免费网站在线观看视频| 日韩精品乱码免费| 中文字幕一二三区| 国产日韩欧美精品综合| 久久久综合久久久| 欧美亚洲综合久久| 六月婷婷综合网| 俺也去精品视频在线观看| 国产美女高潮在线| 91视频免费在线| 激情五月综合网| 黄色成人在线看| 久久成人久久鬼色| 性囗交免费视频观看| 亚洲人成人一区二区在线观看| 亚洲精品中文字幕乱码三区91| 日韩视频一区二区| 日本电影全部在线观看网站视频| 欧美在线一级va免费观看| 精品一区视频| 亚洲日本精品| 久久一区亚洲| 亚洲少妇18p| 综合电影一区二区三区| 国产精品欧美综合| 日韩av影视在线| 四虎影院观看视频在线观看| 国产精品美女免费看| 视频小说一区二区| 2018中文字幕第一页| 国产一区二区三区蝌蚪| 综合 欧美 亚洲日本| 精品日韩中文字幕| wwwav网站| 久久精品国产亚洲精品2020| 亚洲特级毛片| 中文久久久久久| 久久亚洲一区二区三区四区| 国产一级二级毛片| 91精品国产福利| 日本黄色片在线观看| 日本一本a高清免费不卡| 国产精品一线| 国产va亚洲va在线va| 国产精品原创巨作av| 国产黄色录像片| 欧美日韩一区精品| fc2在线中文字幕| 国产精品久久久久久久久久新婚 | 日产精品高清视频免费| 国产精品五区| 搡老熟女老女人一区二区| 亚洲电影在线播放| 亚洲精品久久久久avwww潮水 | www.51av欧美视频| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 51ⅴ精品国产91久久久久久| 超碰成人福利| 高清欧美精品xxxxx| 成人国产精品免费观看动漫| 中文字幕第28页| 亚洲国产天堂久久国产91| 女人让男人操自己视频在线观看 | 精品久久久久久久久久| 少妇又色又爽又黄的视频| 性日韩欧美在线视频| 青草久久视频| 91在线视频观看免费| 中文一区在线播放| 一区二区www| 久久99国产精品自在自在app | 成人免费黄色在线| 国产成人自拍视频在线| 亚洲跨种族黑人xxx| 91p九色成人| 一级黄色片播放| 成人91在线观看| 久久精品视频2| 色综合亚洲精品激情狠狠| 国产精品日本一区二区三区在线 | 久久综合九色| 亚洲综合第一区| 欧美成人免费网站| 亚洲日本天堂| www亚洲国产| www.日韩在线| 在线观看中文字幕2021| 久久99精品久久久久久噜噜| 亚洲bt欧美bt精品777| 第四色婷婷基地| 亚洲电影一级黄| 成年午夜在线| 国产成人精品日本亚洲11| 日韩一区精品字幕| 麻豆91精品91久久久| 亚洲一区二区久久| 午夜免费欧美电影| 欧美国产日韩在线播放| 一区二区三区在线观看网站| 日色在线视频| 亚洲一区二区三| 天堂一区二区在线| 91精品国产色综合| 欧美激情15p| 亚洲男人天堂av在线| 欧美日韩视频免费播放| 久久99精品久久久久久野外| 久久99精品久久久久久青青日本| 久久精品国产精品亚洲精品| 日本一区二区三区免费视频|