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

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

云計算
本文介紹了Cluster autoscaler并不追蹤CPU或內存用量,而是會監控未決的Pod,?我們可以用可用內存和CPU的總量來創建一個Pod,從而主動配置Kubernetes節點等內容。

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

延伸閱讀,了解Akamai cloud-computing

出海云服務,選擇Akamai Linode!

虛擬機的配置可能需要花費數分鐘,在這期間可能無法擴展應用

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

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

  • 理解集群Autoscaler的工作原理并最大限度提升其效用;
  • 使用Kubernetes scheduler為節點分配另一個Pod;以及

主動配置工作節點,以改善擴展效果。注意:本文涉及的所有代碼都已發布至LearnK8s GitHub

Cluster Autoscaler如何在Kubernetes中生效

Cluster Autoscaler在觸發自動擴展時并不檢查內存或CPU的可用數,而是會對事件作出反應,檢查所有不可調度的Pod。當調度器找不到能容納某個Pod的節點時,我們就說這個Pod是不可調度的。
我們可以這樣創建一個集群來測試看看。

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

請留意下列細節:

  • 每個節點有4GB內存和2個vCPU(例如“g6-standard-2”實例)
  • 集群中只有一個節點,并且
  • Cluster autoscaler被配置為從1個節點擴展至10個節點我們可以用下列命令驗證安裝已成功完成:
bash
$ kubectl get pods -A --kubecnotallow=kubeconfig

用環境變量導出kubeconfig文件通常是一種很方便的做法,為此我們可以運行:

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

部署應用程序

讓我們部署一個需要1GB內存和250m* CPU的應用程序。

注意:m = 內核的千分之一容量,因此250m = CPU的25%容量。

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隨后很快會發現一些情況。首先,三個Pod幾乎會立即開始運行,另有一個Pod處于“未決”狀態。

隨后很快:

  • 幾分鐘后,Autoscaler創建了一個額外的Pod,并且
  • 第四個Pod會被部署到一個新節點中。

最終,第四個Pod被部署到一個新節點中

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

Kubernetes節點中資源的分配

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

在Kubernetes工作節點上,內存和CPU會被拆分為:

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

Kubernetes節點中分配和保留的資源

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

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

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

選擇恰當數量的CPU和內存以優化實例的運行,這是個充滿挑戰的工作。Learnk8s計算器工具可以幫助我們更快速地完成這項工作。

一個問題解決了,但是創建新節點花費的時間呢?

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

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

但其實還有替代方案:我們可以在需要時主動創建已經配置好的節點

例如:我們可以配置讓Autoscaler始終準備好一個備用節點。當Pod被部署到備用節點后,Autoscaler可以主動創建另一個備用節點。然而Autoscaler并沒有內置這樣的功能,但我們可以很容易地重新創建。

我們可以創建一個請求數與節點資源相等的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完全不執行任何操作。

用占位Pod保護節點上的所有資源

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

隨后還需要確保當工作負載需要擴展時,這個占位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創建節點,隨后我們將有兩個節點:

  1. 一個包含四個Pod的節點
  2. 一個包含一個占位Pod的節點

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

用下列命令測試看看吧:

bash
kubectl scale deployment/podinfo --replicas=5

我們將會看到:

  1. 第五個Pod會立即創建出來,并在10秒內變為“正在運行”的狀態。
  2. 占位Pod會被清除,以便為第五個Pod騰出空間。

占位Pod會被清除,以便為常規Pod騰出空間

隨后:

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

未決的Pod觸發了Cluster autoscaler新建節點

在可以有更多節點時,為何又要主動創建出一個節點?

我們可以將占位Pod擴展到多個副本,每個副本都會預配置一個Kubernetes節點,準備接受標準工作負載。然而這些節點雖然是閑置的,但它們產生的費用依然會計入云服務賬單。因此一定要慎重,不要創建太多節點。

將Cluster Autoscaler與Horizontal Pod Autoscaler配合使用

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

隨著應用程序收到越來越多流量,我們可以讓Autoscaler調整處理請求的副本數量。當Pod耗盡所有可用資源后,會觸發Cluster autoscaler新建一個節點,

這樣HPA就可以繼續創建更多副本。

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

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

使用環境變量導出kubeconfig文件是一種方便的做法,為此我們可以運行:

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

接下來使用Helm安裝Prometheus并查看該部署的相關指標。我們可以在官網上了解安裝Helm的詳細方法。

bash
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm install prometheus prometheus-community/prometheus

Kubernetes為HPA提供了一個控制器,借此可以動態增減副本數量。然而HPA也有一些局限性:

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

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

  • Scaler
  • Metrics Adapter
  • Controller

KEDA架構

我們可以通過Helm安裝KEDA:

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

安裝好Prometheus和KEDA之后,來創建一個部署吧。

在這個實驗中,我們將使用一個每秒可以處理固定數量請求的應用。每個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定義將創建一個分布式負載測試集群:

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會讀取下列locustfile.py文件,該文件存儲在一個ConfigMap中:

py
from locust import HttpUser, task, between
class QuickstartUser(HttpUser):
 @task
 def hello_world(self):
 self.client.get("/")

該文件并沒有什么特別的作用,只是向一個URL發出請求。若要連接至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收集的指標,并將其發送給Kubernetes。最后,它還將使用這些指標創建一個Horizontal Pod Autoscaler (HPA)

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

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

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

bash
$ kubectl apply -f scaled-object.yaml

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

集群和Horizontal pod autoscaler的結合

可以看到,副本的數量增加了!

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

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

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

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

這次,我們將用一個占位Pod實現超量配置(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儀表板并用下列設置重復實驗:

在超量配置的情況下進行集群和Horizontal pod autoscaler的結合

這一次,新節點將在后臺創建,每秒請求數量將持續增減,不會原地踏步。很棒!

總結

本文介紹了下列內容:

  • Cluster autoscaler并不追蹤CPU或內存用量,而是會監控未決的Pod。
  • 我們可以用可用內存和CPU的總量來創建一個Pod,從而主動配置Kubernetes節點。
  • Kubernetes節點會為Kubelet、操作系統以及排空閾值保留一定的資源。
  • 我們可以結合使用Prometheus和KEDA,從而通過PromQL查詢擴展自己的Pod。

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

出海云服務,選擇Akamai Linode!

歡迎關注Akamai,第一時間了解高可用的MySQL/MariaDB參考架構,以及豐富的應用程序示例。

責任編輯:張燕妮
相關推薦

2023-11-08 11:32:49

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

網絡故障Linux命令

2022-01-22 00:17:07

物聯網網絡安全漏洞

2021-06-22 10:20:30

5G物聯網生態系統

2023-07-24 15:24:31

2017-04-13 10:15:18

機器人工作

2021-08-05 10:56:54

谷歌開發人員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

系統程序員開發
點贊
收藏

51CTO技術棧公眾號

亚洲AV成人无码网站天堂久久| 中文字幕日韩一区二区三区不卡| 97人人澡人人爽人人模亚洲| 一区二区三区日本久久久 | 亚洲福利视频二区| 欧美视频第一区| 日本在线观看视频| av不卡在线观看| 国产精选久久久久久| 国产无遮挡aaa片爽爽| 欧美日韩国产传媒| 精品国产露脸精彩对白| 亚洲视频在线观看一区二区三区| 少女频道在线观看高清 | 黄色的视频在线观看| 久久嫩草精品久久久精品一| 亚洲jizzjizz日本少妇| 9i精品福利一区二区三区| 最新国产精品| 一区二区在线视频播放| 污污内射在线观看一区二区少妇| 日韩久久一区| 日本高清不卡一区| 国产精品自拍片| 国产cdts系列另类在线观看| 久久精品欧美日韩| 精品国产福利| 亚洲av无码一区二区乱子伦| 免费在线观看成人| 国产不卡在线观看| 日韩特黄一级片| 国产精品大片免费观看| 久久视频免费观看| 欧美自拍偷拍网| 国产探花在线精品一区二区| 欧美精品一区二区三区在线| 亚洲女人在线观看| 久久er热在这里只有精品66| 色综合夜色一区| 成年人网站免费视频| 欧美性受ⅹ╳╳╳黑人a性爽| 国产精品视频看| 日本不卡二区高清三区| 无码国产精品96久久久久| 国产91丝袜在线播放| 91美女高潮出水| 91精品人妻一区二区三区果冻| 丝袜美腿亚洲一区| 国产成人97精品免费看片| 日本中文在线播放| 夜夜爽av福利精品导航| 亚州精品天堂中文字幕| 日韩成人一区二区三区| 99精品国产在热久久婷婷| 欧美国产在线视频| 国产真实的和子乱拍在线观看| 黑丝一区二区| 久久久久久国产精品美女| 欧美日韩三级在线观看 | 国产亚洲一区二区三区四区| 欧美日韩一区二区视频在线 | 暴力调教一区二区三区| 国产乱码精品一区二区三区中文| 日本高清视频www| 成人免费视频播放| 久久久www免费人成黑人精品| 四虎免费在线观看| 久久久另类综合| 色噜噜色狠狠狠狠狠综合色一| 在线免费看黄网站| 亚洲精品中文字幕乱码三区| 青青草综合视频| 九色porny丨国产首页在线| 爽爽窝窝午夜精品一区二区| xxxxx性欧美特大| 久久品道一品道久久精品| 欧美日韩在线精品一区二区三区| 国产一区二区在线不卡| 女人另类性混交zo| 欧美日韩三区四区| 精产国品一区二区| 日韩中文字幕91| 91精品综合视频| xxxx国产精品| 91网站在线观看视频| 日韩精品亚洲视频| 伊人成人222| 成人18夜夜网深夜福利网| 亚洲精品国产电影| 农村老熟妇乱子伦视频| 欧美涩涩网站| 欧美性受xxxx黑人猛交| 97超碰人人模人人人爽人人爱| 国产成人免费在线观看| 欧美亚洲另类在线一区二区三区| 福利视频在线| 日韩欧美国产高清91| 九色porny自拍| 99久久香蕉| 国产一区二区三区在线观看视频| 天天色天天综合| 国产精品视频一二区| 国产精品爽爽久久久久久| 毛片一区二区| 91香蕉国产在线观看| 亚洲欧美日韩动漫| 亚洲欧美日本韩国| 亚洲黄色a v| 国产香蕉精品| 一区二区三区精品99久久| 日韩欧美第二区在线观看| 欧美激情视频在线播放| 狠狠做深爱婷婷久久综合一区 | 免费看污黄网站在线观看| 欧美一区二区三区另类| 国产精品国产亚洲伊人久久| 国产91久久久| 亚洲人成影院在线观看| 亚洲无吗一区二区三区| 婷婷精品视频| 久久全国免费视频| 国产激情久久久久久熟女老人av| 日本一区二区视频在线观看| 黄www在线观看| 老汉色老汉首页av亚洲| 色综合91久久精品中文字幕 | 精品电影一区二区| 亚洲伦理一区二区三区| 免费高清在线视频一区·| 欧美成人dvd在线视频| 99在线视频影院| 日韩欧美二区三区| 强乱中文字幕av一区乱码| 久久国内精品视频| 亚洲一二三区精品| 成人黄色在线| 在线播放日韩专区| 精品乱码一区内射人妻无码| 久久综合av免费| 亚洲欧美激情精品一区二区| 日本xxx在线播放| 一本色道久久综合亚洲精品不卡 | 老司机精品视频网站| 国产精品久久一区二区三区| 午夜小视频在线观看| 91精品麻豆日日躁夜夜躁| 欧美性生给视频| 麻豆精品一区二区综合av| 亚洲欧美精品| 亚洲精品毛片| 久久伊人精品视频| 国产成人精品一区二三区四区五区| 国产精品国产自产拍高清av| 亚洲精品手机在线观看| 视频在线不卡免费观看| 成人激情在线观看| 一区二区三区伦理| 亚洲成人黄色网| 国产奶水涨喷在线播放| 99久久精品免费| 99精品免费在线观看| 精品国产欧美日韩| 成人国产在线激情| 色呦呦在线播放| 亚洲精品国产欧美| 国产精品传媒在线观看| 国产精品黄色在线观看| 国产又黄又嫩又滑又白| 中日韩男男gay无套| 日本不卡一区二区三区在线观看| 国产精品无码久久久久| 欧美成在线视频| 蜜桃av噜噜一区二区三区麻豆| 欧美日韩国产在线看| 人妻视频一区二区| 精彩视频一区二区| 日韩av在线播放不卡| 免费欧美视频| 成人综合网网址| 国产理论在线| 色悠悠国产精品| 欧洲成人一区二区三区| 在线一区二区三区| 在线免费日韩av| 久久尤物电影视频在线观看| 亚洲久久中文字幕| 亚洲国产一区二区三区a毛片 | 久久精品一卡二卡| 国产精品久久久久久久久久妞妞| 天堂va久久久噜噜噜久久va| 欧美黄视频在线观看| 热re99久久精品国产66热| 免费成人黄色| 日韩精品极品在线观看播放免费视频| 又骚又黄的视频| 香蕉久久一区二区不卡无毒影院 | 国产成人久久| 亚洲综合成人婷婷小说| 电影网一区二区| 色中色综合影院手机版在线观看 | 国产一区二区三区亚洲| 国产精品第100页| 波多野结依一区| 久久精品91久久香蕉加勒比| 手机福利在线| 欧美成人一区二区三区片免费| 欧美一级淫片免费视频黄| 一区二区三区精品视频| 夫妇露脸对白88av| 99精品视频中文字幕| 91视频免费入口| 久久99精品国产麻豆不卡| 日韩少妇内射免费播放| 欧美区日韩区| 日韩视频在线观看视频| 少妇一区二区视频| 国产精品制服诱惑| 欧美影院在线| 91免费精品视频| 欧美三级电影网址| 国产精品激情av电影在线观看| 午夜激情电影在线播放| 欧美激情精品久久久久久| 麻豆tv免费在线观看| 中文字幕av一区二区| 天堂av在线7| 精品香蕉一区二区三区| 人妻妺妺窝人体色www聚色窝| 欧美一区二区三区视频| 91久久久久久久久久久久| 欧美在线啊v一区| 久久人人爽人人爽人人片av免费| 欧美日韩国产精品专区| 亚欧洲精品在线视频| 性久久久久久久| 成年人免费看毛片| 性欧美大战久久久久久久久| 日韩高清免费av| 五月天网站亚洲| 欧美亚韩一区二区三区| 激情久久av一区av二区av三区| 国产精品16p| 午夜久久久久久久久| 日本三级理论片| 欧美日韩中文字幕日韩欧美| 天天爽夜夜爽夜夜爽精品| 精品女同一区二区三区在线播放| 日本三级视频在线| 色综合咪咪久久| 国产情侣小视频| 欧美日韩午夜在线| 91精品人妻一区二区三区果冻| 91精品一区二区三区久久久久久| 国产精品国产一区二区三区四区 | 国产尤物久久久| 欧美久久久久久| 久久99视频| 婷婷精品国产一区二区三区日韩| 欧美三级三级| 一区二区精品视频| 亚洲精品成人无限看| 人妻av无码专区| 亚洲一级电影| 欧美日韩黄色一级片| 久久在线精品| 永久免费的av网站| 韩国成人福利片在线播放| 欧美xxxx日本和非洲| av男人天堂一区| 摸摸摸bbb毛毛毛片| 国产精品蜜臀在线观看| 日韩黄色免费观看| 亚洲成国产人片在线观看| 国产又大又黑又粗免费视频| 91黄色免费版| 99久久精品国产色欲| 精品久久一区二区三区| 亚洲三级中文字幕| 日韩在线中文字| 2021国产在线| 日本久久久久亚洲中字幕| 欧美天堂在线| 国产女人水真多18毛片18精品 | 一区二区三区四区不卡| 欧美激情第8页| 国产极品粉嫩福利姬萌白酱| 日本午夜一区二区| 少妇高潮一69aⅹ| 国产三级精品视频| 九九视频在线免费观看| 精品国产乱码久久久久酒店 | 97在线观看视频免费| 亚洲国产日韩精品| 亚洲熟妇无码久久精品| 亚洲电影免费观看高清| av在线电影播放| 性金发美女69hd大尺寸| 欧美成人毛片| 久久精品ww人人做人人爽| 91精品精品| 精品视频无码一区二区三区| 国产福利精品一区二区| 小早川怜子久久精品中文字幕| 亚洲男人的天堂一区二区| 四虎成人在线观看| 欧美精品一区二区三区蜜桃 | 555www成人网| 日韩av综合| 亚洲精品一卡二卡三卡四卡| 国产视频亚洲| www.四虎精品| ...xxx性欧美| 中文字幕视频在线播放| 精品亚洲一区二区三区在线观看| 在线黄色网页| 91久久国产精品91久久性色| 啪啪亚洲精品| 国产二区视频在线播放| 成人丝袜高跟foot| 91久久国产综合| 欧美日韩一区二区三区四区五区| 亚洲人午夜射精精品日韩| 欧美夫妻性生活视频| 国产专区精品| 亚洲欧美日韩不卡| 久久精品国产亚洲高清剧情介绍| www在线观看免费视频| 精品福利在线观看| 成人午夜视频一区二区播放| 久久久国产成人精品| 亚洲电影有码| 日本电影一区二区三区| 免费在线观看成人av| 五十路六十路七十路熟婆| 亚洲制服丝袜av| www黄色网址| 欧美国产亚洲精品久久久8v| 日本一区二区乱| 成人短视频在线观看免费| 国产精品99久久久久久有的能看| 青青操在线视频观看| 91精品在线一区二区| caoporm免费视频在线| 亚洲mm色国产网站| 欧美日韩国产探花| 深田咏美中文字幕| 亚洲高清三级视频| 五月激情六月婷婷| 日本在线观看天堂男亚洲| 久久av影视| xx欧美撒尿嘘撒尿xx| 亚洲欧洲av另类| 精品人妻伦一区二区三区久久 | 亚洲蜜桃av| 国产真实乱偷精品视频免| 麻豆精品一区二区三区视频| 日韩免费性生活视频播放| 国产丝袜在线观看视频| 精品亚洲第一| 日韩激情在线观看| 国产第一页浮力| 日韩欧美123| 欧美男男tv网站在线播放| 日韩中文字幕一区| 精品一区中文字幕| 国产性70yerg老太| 国产视频精品xxxx| 久久久久久久性潮| 超碰97在线看| 99riav久久精品riav| 国产天堂第一区| 两个人的视频www国产精品| 成人资源在线播放| 熟女人妇 成熟妇女系列视频| 国产精品久久毛片a| 成人无码一区二区三区| 日韩美女中文字幕| 一精品久久久| 蜜臀av一区二区三区有限公司| 欧美午夜不卡视频| 少女频道在线观看免费播放电视剧| 久久av一区二区三区亚洲| 男女男精品视频网| 国产亚洲第一页| 在线观看中文字幕亚洲| 6080亚洲理论片在线观看| 国产成人在线免费看| 国产精品国产三级国产aⅴ无密码| 草草视频在线播放| 国产精品欧美亚洲777777| 欧美激情一区| 国产一二三四区在线| 亚洲国产日韩精品在线| 精品久久99| 欧美aⅴ在线观看| 亚洲精品视频观看| 国产三级在线观看| 国产精品一区在线播放| 国产在线精品一区二区| 无码人妻精品一区二区|