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

kube-state-metrics 在大規(guī)模集群下的優(yōu)化

開源
分片是通過對(duì) Kubernetes 對(duì)象的 UID 進(jìn)行 MD5 哈希和對(duì)總分片數(shù)進(jìn)行取模運(yùn)算來完成的,每個(gè)分片決定是否由 kube-state-metrics 的相應(yīng)實(shí)例處理對(duì)象。

當(dāng)我們使用 Prometheus 來監(jiān)控 Kubernetes 集群的時(shí)候,kube-state-metrics(KSM) 基本屬于一個(gè)必備組件,它通過 Watch APIServer 來生成資源對(duì)象的狀態(tài)指標(biāo),它并不會(huì)關(guān)注單個(gè) Kubernetes 組件的健康狀況,而是關(guān)注各種資源對(duì)象的健康狀態(tài),比如 Deployment、Node、Pod、Ingress、Job、Service 等等,每種資源對(duì)象中包含了需要指標(biāo),我們可以在官方文檔 https://github.com/kubernetes/kube-state-metrics/tree/main/docs 處進(jìn)行查看。

要安裝 KSM 也非常簡單,代碼倉庫中就包含了對(duì)應(yīng)的資源清單文件,但是在安裝的時(shí)候記得要和你的 K8s 集群版本對(duì)應(yīng)。

圖片

我這里的測(cè)試集群是 v1.25 版本的,所以我先切換到該分支:

$ git clone https://github.com/kubernetes/kube-state-metrics && cd kube-state-metrics
$ git checkout v2.7.0
$ kubectl apply -f examples/standard

該方式會(huì)以 Deployment 方式部署一個(gè) KSM 實(shí)例:

$ kubectl get deploy -n kube-system kube-state-metrics
NAME READY UP-TO-DATE AVAILABLE AGE
kube-state-metrics 1/1 1 1 2m49s
$ kubectl get pods -n kube-system -l app.kubernetes.io/name=kube-state-metrics
NAME READY STATUS RESTARTS AGE
kube-state-metrics-548546fc89-zgkx5 1/1 Running 0 2m51s

然后只需要讓 Prometheus 來發(fā)現(xiàn) KSM 實(shí)例就可以了,當(dāng)然有很多方式,比如可以通過添加注解來自動(dòng)發(fā)現(xiàn),也可以單獨(dú)為 KSM 創(chuàng)建一個(gè)獨(dú)立的 Job,如果使用的是 Prometheus Operator,也可以創(chuàng)建 ServiceMonitor 對(duì)象來獲取 KSM 指標(biāo)數(shù)據(jù)。

這種方式對(duì)于小規(guī)模集群是沒太大問題的,數(shù)據(jù)量不大,可以正常提供服務(wù),只需要保證 KSM 高可用就可以在生產(chǎn)環(huán)境使用了。但是對(duì)于大規(guī)模的集群來說,就非常困難了,比如我們這里有一個(gè) 8K 左右 Pod 的集群,不算特別大。

圖片

但是只通過一個(gè) KSM 實(shí)例來提供 metrics 指標(biāo)還是非常吃力的,這個(gè)時(shí)候可能大部分情況下是獲取不到指標(biāo)的,因?yàn)?metrics 接口里面的數(shù)據(jù)量太大了。

圖片

即使偶爾獲取到了,也需要話花很長時(shí)間,要知道我們會(huì)每隔 scrape_interval 的時(shí)間都會(huì)去訪問該指標(biāo)接口的,可能前面一次請(qǐng)求還沒結(jié)束,下一次請(qǐng)求又發(fā)起了,要解決這個(gè)問題就得從 KSM 端入手解決,在 KSM 的啟動(dòng)參數(shù)中我們可以配置過濾掉一些不需要的指標(biāo)標(biāo)簽:

$ kube-state-metrics -h
kube-state-metrics is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects.

Usage:
kube-state-metrics [flags]
kube-state-metrics [command]

Available Commands:
completion Generate completion script for kube-state-metrics.
help Help about any command
version Print version information.

Flags:
--add_dir_header If true, adds the file directory to the header of the log messages
--alsologtostderr log to standard error as well as files (no effect when -logtostderr=true)
--apiserver string The URL of the apiserver to use as a master
--config string Path to the kube-state-metrics options config file
--custom-resource-state-config string Inline Custom Resource State Metrics config YAML (experimental)
--custom-resource-state-config-file string Path to a Custom Resource State Metrics config file (experimental)
--custom-resource-state-only Only provide Custom Resource State metrics (experimental)
--enable-gzip-encoding Gzip responses when requested by clients via 'Accept-Encoding: gzip' header.
-h, --help Print Help text
--host string Host to expose metrics on. (default "::")
--kubeconfig string Absolute path to the kubeconfig file
--log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0)
--log_dir string If non-empty, write log files in this directory (no effect when -logtostderr=true)
--log_file string If non-empty, use this log file (no effect when -logtostderr=true)
--log_file_max_size uint Defines the maximum size a log file can grow to (no effect when -logtostderr=true). Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800)
--logtostderr log to standard error instead of files (default true)
--metric-allowlist string Comma-separated list of metrics to be exposed. This list comprises of exact metric names and/or regex patterns. The allowlist and denylist are mutually exclusive.
--metric-annotations-allowlist string Comma-separated list of Kubernetes annotations keys that will be used in the resource' labels metric. By default the metric contains only name and namespace labels. To include additional annotations provide a list of resource names in their plural form and Kubernetes annotation keys you would like to allow for them (Example: '=namespaces=[kubernetes.io/team,...],pods=[kubernetes.io/team],...)'. A single '*' can be provided per resource instead to allow any annotations, but that has severe performance implications (Example: '=pods=[*]').
--metric-denylist string Comma-separated list of metrics not to be enabled. This list comprises of exact metric names and/or regex patterns. The allowlist and denylist are mutually exclusive.
--metric-labels-allowlist string Comma-separated list of additional Kubernetes label keys that will be used in the resource' labels metric. By default the metric contains only name and namespace labels. To include additional labels provide a list of resource names in their plural form and Kubernetes label keys you would like to allow for them (Example: '=namespaces=[k8s-label-1,k8s-label-n,...],pods=[app],...)'. A single '*' can be provided per resource instead to allow any labels, but that has severe performance implications (Example: '=pods=[*]'). Additionally, an asterisk (*) can be provided as a key, which will resolve to all resources, i.e., assuming '--resources=deployments,pods', '=*=[*]' will resolve to '=deployments=[*],pods=[*]'.
--metric-opt-in-list string Comma-separated list of metrics which are opt-in and not enabled by default. This is in addition to the metric allow- and denylists
--namespaces string Comma-separated list of namespaces to be enabled. Defaults to ""
--namespaces-denylist string Comma-separated list of namespaces not to be enabled. If namespaces and namespaces-denylist are both set, only namespaces that are excluded in namespaces-denylist will be used.
--node string Name of the node that contains the kube-state-metrics pod. Most likely it should be passed via the downward API. This is used for daemonset sharding. Only available for resources (pod metrics) that support spec.nodeName fieldSelector. This is experimental.
--one_output If true, only write logs to their native severity level (vs also writing to each lower severity level; no effect when -logtostderr=true)
--pod string Name of the pod that contains the kube-state-metrics container. When set, it is expected that --pod and --pod-namespace are both set. Most likely this should be passed via the downward API. This is used for auto-detecting sharding. If set, this has preference over statically configured sharding. This is experimental, it may be removed without notice.
--pod-namespace string Name of the namespace of the pod specified by --pod. When set, it is expected that --pod and --pod-namespace are both set. Most likely this should be passed via the downward API. This is used for auto-detecting sharding. If set, this has preference over statically configured sharding. This is experimental, it may be removed without notice.
--port int Port to expose metrics on. (default 8080)
--resources string Comma-separated list of Resources to be enabled. Defaults to "certificatesigningrequests,configmaps,cronjobs,daemonsets,deployments,endpoints,horizontalpodautoscalers,ingresses,jobs,leases,limitranges,mutatingwebhookconfigurations,namespaces,networkpolicies,nodes,persistentvolumeclaims,persistentvolumes,poddisruptionbudgets,pods,replicasets,replicationcontrollers,resourcequotas,secrets,services,statefulsets,storageclasses,validatingwebhookconfigurations,volumeattachments"
--shard int32 The instances shard nominal (zero indexed) within the total number of shards. (default 0)
--skip_headers If true, avoid header prefixes in the log messages
--skip_log_headers If true, avoid headers when opening log files (no effect when -logtostderr=true)
--stderrthreshold severity logs at or above this threshold go to stderr when writing to files and stderr (no effect when -logtostderr=true or -alsologtostderr=false) (default 2)
--telemetry-host string Host to expose kube-state-metrics self metrics on. (default "::")
--telemetry-port int Port to expose kube-state-metrics self metrics on. (default 8081)
--tls-config string Path to the TLS configuration file
--total-shards int The total number of shards. Sharding is disabled when total shards is set to 1. (default 1)
--use-apiserver-cache Sets resourceVersinotallow=0 for ListWatch requests, using cached resources from the apiserver instead of an etcd quorum read.
-v, --v Level number for the log level verbosity
--vmodule moduleSpec comma-separated list of pattern=N settings for file-filtered logging

Use "kube-state-metrics [command] --help" for more information about a command.

可以通過 --metric-allowlist 或者 --metric-denylist 參數(shù)進(jìn)行過濾。但是如果即使過濾了不需要的指標(biāo)或標(biāo)簽后指標(biāo)接口數(shù)據(jù)仍然非常大又該怎么辦呢?

其實(shí)我們可以想象一下,無論怎么過濾,請(qǐng)求一次到達(dá) metrics 接口后的數(shù)據(jù)量都是非常大的,這個(gè)時(shí)候是不是只能對(duì)指標(biāo)數(shù)據(jù)進(jìn)行拆分了,可以部署多個(gè) KSM 實(shí)例,每個(gè)實(shí)例提供一部分接口數(shù)據(jù),是不是就可以緩解壓力了,這其實(shí)就是我們常說的水平分片。為了水平分片 kube-state-metrics,它已經(jīng)實(shí)現(xiàn)了一些自動(dòng)分片功能,它是通過以下標(biāo)志進(jìn)行配置的:

  • --shard (從 0 開始)
  • --total-shards

分片是通過對(duì) Kubernetes 對(duì)象的 UID 進(jìn)行 MD5 哈希和對(duì)總分片數(shù)進(jìn)行取模運(yùn)算來完成的,每個(gè)分片決定是否由 kube-state-metrics 的相應(yīng)實(shí)例處理對(duì)象。不過需要注意的是,kube-state-metrics 的所有實(shí)例,即使已經(jīng)分片,也會(huì)處理所有對(duì)象的網(wǎng)絡(luò)流量和資源消耗,而不僅僅是他們負(fù)責(zé)那部分對(duì)象,要優(yōu)化這個(gè)問題,Kubernetes API 需要支持分片的 list/watch 功能。在最理想的情況下,每個(gè)分片的內(nèi)存消耗將比未分片設(shè)置少 1/n。通常,為了使 kube-state-metrics 能夠迅速返回其指標(biāo)給 Prometheus,需要進(jìn)行內(nèi)存和延遲優(yōu)化。減少 kube-state-metrics 和 kube-apiserver 之間的延遲的一種方法是使用 --use-apiserver-cache 標(biāo)志運(yùn)行 KSM,除了減少延遲,這個(gè)選項(xiàng)還將導(dǎo)致減少對(duì) etcd 的負(fù)載,所以我們也是建議啟用該參數(shù)的。

使用了分片模式,則最好對(duì)分片相關(guān)指標(biāo)進(jìn)行監(jiān)控,以確保分片設(shè)置符合預(yù)期,可以用下面兩個(gè)報(bào)警規(guī)則來進(jìn)行報(bào)警:

- alert: KubeStateMetricsShardingMismatch
annotations:
description: kube-state-metrics pods are running with different --total-shards configuration, some Kubernetes objects may be exposed multiple times or not exposed at all.
summary: kube-state-metrics sharding is misconfigured.
expr: |
stdvar (kube_state_metrics_total_shards{job="kube-state-metrics"}) != 0
for: 15m
labels:
severity: critical
- alert: KubeStateMetricsShardsMissing
annotations:
description: kube-state-metrics shards are missing, some Kubernetes objects are not being exposed.
summary: kube-state-metrics shards are missing.
expr: |
2^max(kube_state_metrics_total_shards{job="kube-state-metrics"}) - 1
-
sum( 2 ^ max by (shard_ordinal) (kube_state_metrics_shard_ordinal{job="kube-state-metrics"}) )
!= 0
for: 15m
labels:
severity: critical

由于手動(dòng)去配置分片可能會(huì)出現(xiàn)錯(cuò)誤,所以 KSM 也提供了自動(dòng)分片的功能,可以通過 StatefulSet 方式來部署多個(gè)副本的 KSM,自動(dòng)分片允許每個(gè)分片在 StatefulSet 中部署時(shí)發(fā)現(xiàn)其實(shí)例位置,這對(duì)于自動(dòng)配置分片非常有用。所以要啟用自動(dòng)分片,必須通過 StatefulSet 運(yùn)行 kube-state-metrics,并通過 --pod 和 --pod-namespace 標(biāo)志將 pod 名稱和命名空間傳遞給 kube-state-metrics 進(jìn)程,如下所示:

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: kube-state-metrics
namespace: kube-system
spec:
replicas: 10
selector:
matchLabels:
app.kubernetes.io/name: kube-state-metrics
serviceName: kube-state-metrics
template:
metadata:
labels:
app.kubernetes.io/component: exporter
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 2.8.0
spec:
automountServiceAccountToken: true
containers:
- args:
- --pod=$(POD_NAME)
- --pod-namespace=$(POD_NAMESPACE)
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.8.0
# ......

使用這種部署分片的方法,當(dāng)你想要通過單個(gè) Kubernetes 資源(在這種情況下為單個(gè) StatefulSet)管理 KSM 分片時(shí)是很有用的,而不是每個(gè)分片都有一個(gè) Deployment,這種優(yōu)勢(shì)在部署大量分片時(shí)尤為顯著。

當(dāng)然使用自動(dòng)分片的部署方式也是有缺點(diǎn)的,主要是來自于 StatefulSet 支持的滾動(dòng)升級(jí)策略,當(dāng)由 StatefulSet 管理時(shí),一個(gè)一個(gè)地替換 pod,當(dāng) pod 先被終止后,然后再重新創(chuàng)建,這樣的升級(jí)速度較慢,也可能會(huì)導(dǎo)致每個(gè)分片的短暫停機(jī),如果在升級(jí)期間進(jìn)行 Prometheus 抓取,則可能會(huì)錯(cuò)過 kube-state-metrics 導(dǎo)出的某些指標(biāo)。

自動(dòng)分片功能的示例清單在 examples/autosharding 目錄中可以找到,可以直接通過下面的命令來部署:

$ kubectl apply -k examples/autosharding

上面的命令會(huì)以 StatefulSet 方式部署 2 個(gè) KSM 實(shí)例:

$ kubectl get pods -n kube-system -l app.kubernetes.io/name=kube-state-metrics
NAME READY STATUS RESTARTS AGE
kube-state-metrics-0 1/1 Running 0 70m
kube-state-metrics-1 1/1 Running 0 65m

可以隨便查看一個(gè) Pod 的日志:

$ kubectl logs -f kube-state-metrics-1 -nkube-system
I0216 05:53:23.151163 1 wrapper.go:78] Starting kube-state-metrics
I0216 05:53:23.154495 1 server.go:125] "Used default resources"
I0216 05:53:23.154923 1 types.go:184] "Using all namespaces"
I0216 05:53:23.155556 1 server.go:166] "Metric allow-denylisting" allowDenyStatus="Excluding the following lists that were on denylist: "
W0216 05:53:23.155792 1 client_config.go:617] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
I0216 05:53:23.178553 1 server.go:311] "Tested communication with server"
I0216 05:53:23.241024 1 server.go:316] "Run with Kubernetes cluster version" major="1" minor="25" gitVersinotallow="v1.25.3" gitTreeState="clean" gitCommit="434bfd82814af038ad94d62ebe59b133fcb50506" platform="linux/arm64"
I0216 05:53:23.241169 1 server.go:317] "Communication with server successful"
I0216 05:53:23.245132 1 server.go:263] "Started metrics server" metricsServerAddress="[::]:8080"
I0216 05:53:23.246148 1 metrics_handler.go:103] "Autosharding enabled with pod" pod="kube-system/kube-state-metrics-1"
I0216 05:53:23.246233 1 metrics_handler.go:104] "Auto detecting sharding settings"
I0216 05:53:23.246267 1 server.go:252] "Started kube-state-metrics self metrics server" telemetryAddress="[::]:8081"
I0216 05:53:23.253477 1 server.go:69] levelinfomsgListening onaddress[::]:8081
I0216 05:53:23.253477 1 server.go:69] levelinfomsgListening onaddress[::]:8080
I0216 05:53:23.253944 1 server.go:69] levelinfomsgTLS is disabled.http2falseaddress[::]:8080
I0216 05:53:23.254534 1 server.go:69] levelinfomsgTLS is disabled.http2falseaddress[::]:8081
I0216 05:53:23.297524 1 metrics_handler.go:80] "Configuring sharding of this instance to be shard index (zero-indexed) out of total shards" shard=1 totalShards=2
I0216 05:53:23.411710 1 builder.go:257] "Active resources" activeStoreNames="certificatesigningrequests,configmaps,cronjobs,daemonsets,deployments,endpoints,horizontalpodautoscalers,ingresses,jobs,leases,limitranges,mutatingwebhookconfigurations,namespaces,networkpolicies,nodes,persistentvolumeclaims,persistentvolumes,poddisruptionbudgets,pods,replicasets,replicationcontrollers,resourcequotas,secrets,services,statefulsets,storageclasses,validatingwebhookconfigurations,volumeattachments"

可以看到有類型 "Configuring sharding of this instance to be shard index (zero-indexed) out of total shards" shard=1 totalShards=2 這樣的日志信息,表面自動(dòng)分片成功了。我們可以去分別獲取下分片的指標(biāo)數(shù)據(jù)大小,并和未分片之前的進(jìn)行對(duì)比,可以看到分片后的指標(biāo)明顯減少了,如果單個(gè)實(shí)例的指標(biāo)數(shù)據(jù)還是太大,則可以增加 StatefulSet 的副本數(shù)即可。

圖片

此外我們還可以單獨(dú)針對(duì) pod 指標(biāo)按照每個(gè)節(jié)點(diǎn)進(jìn)行分片,只需要加上 --node 和 --resource 即可,這個(gè)時(shí)候我們直接使用一個(gè) DaemonSet 來創(chuàng)建 KSM 實(shí)例即可,如下所示:

apiVersion: apps/v1
kind: DaemonSet
spec:
template:
spec:
containers:
- image: registry.k8s.io/kube-state-metrics/kube-state-metrics:IMAGE_TAG
name: kube-state-metrics
args:
- --resource=pods
- --node=$(NODE_NAME)
env:
- name: NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName

對(duì)于其他的指標(biāo)我們也可以使用 --resource 來單獨(dú)指定部署,也可以繼續(xù)使用分片的方式。總結(jié)來說就是對(duì)于大規(guī)模集群使用 kube-state-metrics 需要做很多優(yōu)化:

  • 過濾不需要的指標(biāo)和標(biāo)簽
  • 通過分片降低 KSM 實(shí)例壓力
  • 可以使用 DaemonSet 方式單獨(dú)針對(duì) pod 指標(biāo)進(jìn)行部署

當(dāng)然可能也有人會(huì)問,如果自己的業(yè)務(wù)指標(biāo)也超級(jí)大的情況下該怎么辦呢?當(dāng)然就得讓業(yè)務(wù)方來做支持了,首先要明確指標(biāo)數(shù)據(jù)這么大是否正常?如果需求就是如此,那么也得想辦法能夠支持分片。

責(zé)任編輯:姜華 來源: k8s技術(shù)圈
相關(guān)推薦

2019-04-18 11:37:49

NameNodeHDFS架構(gòu)

2010-12-23 11:01:19

集群FTPFTP代理

2015-08-31 05:51:37

集群運(yùn)維私有云

2015-06-11 13:24:27

集群運(yùn)維

2021-08-29 20:02:38

高并發(fā)集群部署

2016-08-12 15:40:17

CCEKubernetes華為

2015-10-12 15:11:36

GoogleBorg集群管理

2015-10-13 11:06:36

谷歌Google Borg集群管理

2015-09-07 12:06:10

51CTO技術(shù)周刊集群運(yùn)維

2022-05-11 09:34:15

云原生集群數(shù)倉

2015-06-26 09:17:28

WOT2015360孔德亮

2019-10-09 10:00:02

集群故障場景

2019-10-09 09:39:15

PythonHDFS大數(shù)據(jù)

2020-04-09 11:56:10

Elasticsear集群硬件

2011-07-15 17:12:15

云計(jì)算SkyptLync

2024-06-07 14:01:29

2020-02-17 08:00:02

云計(jì)算云開發(fā)Kubernetes

2022-02-17 20:16:15

DDOS網(wǎng)絡(luò)攻擊

2023-05-26 08:39:44

深度學(xué)習(xí)Alluxio

2021-11-05 16:08:57

作業(yè)幫Kubernetesserverless
點(diǎn)贊
收藏

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

国产真人真事毛片视频| 麻豆传媒网站在线观看| 中文字幕av影视| 亚洲精品91| 亚洲第一av网| 亚洲最大综合网| 女人天堂av在线播放| 成人激情黄色小说| 国产精品久久久久影院日本| 毛片aaaaa| 精品国产午夜| 精品久久久久av影院 | 一区二区三区四区日韩| 亚洲精品国产精品国自产观看浪潮| 中文字幕国产传媒| 国产经典三级在线| 国产精品高潮呻吟久久| 国产一区在线观| 亚洲一区二区色| 日韩视频在线一区二区三区 | av在线网站观看| 日本在线视频一区二区三区| 色综合久久精品| 欧洲精品在线播放| 欧美人xxx| 久久久久久**毛片大全| 国产福利久久精品| 97免费观看视频| 日韩—二三区免费观看av| 久久久久免费视频| 糖心vlog免费在线观看| 精品精品久久| 亚洲色图美腿丝袜| 精品人妻一区二区三区日产乱码卜| 9999在线精品视频| 欧美午夜精品一区二区蜜桃 | 欧美日韩中文字幕在线观看| 精品视频97| 亚洲欧美日韩网| 亚洲综合自拍网| 都市激情亚洲欧美| 日韩免费高清av| 三级黄色片播放| 亚洲综合视频| 欧美精品视频www在线观看| 91蝌蚪视频在线观看| 美女露胸视频在线观看| 亚洲国产wwwccc36天堂| 成人小视频在线观看免费| 2024最新电影在线免费观看| 亚洲视频在线一区观看| 尤物一区二区三区| 免费在线观看黄| 国产精品国产三级国产aⅴ中文| 日本在线视频一区| 美女欧美视频在线观看免费 | 国产精彩视频在线观看| 欧美黄色aaaa| 欧美日韩成人黄色| 69精品久久久| 99国产精品| 国产999精品视频| 91麻豆精品在线| 麻豆免费精品视频| 91影视免费在线观看| 国产精品一二三四五区| 国产成人欧美日韩在线电影| 岛国视频一区免费观看| 手机看片国产1024| 91香蕉视频mp4| 日韩av电影免费播放| se在线电影| 亚洲美女一区二区三区| av在线免费观看国产| 国产理论电影在线| 一本色道亚洲精品aⅴ| 国内自拍视频网| 成人av在线播放| 精品久久久久av影院| 一本色道久久综合亚洲精品图片 | 99精品国产99久久久久久白柏| 国产日韩精品一区观看| 美女欧美视频在线观看免费 | 欧美一区二区三区红桃小说| 亚洲欧美日韩在线高清直播| 手机看片国产日韩| 国产精品v亚洲精品v日韩精品 | 国产精品色呦呦| 51xx午夜影福利| 亚洲优女在线| 欧美精品一卡二卡| 中出视频在线观看| 99久久99久久精品国产片桃花| 欧美丰满少妇xxxx| 日本a级c片免费看三区| 激情欧美一区二区| 久久亚洲午夜电影| h片在线播放| 在线亚洲+欧美+日本专区| 国产永久免费网站| 先锋影音国产精品| 久久综合伊人77777尤物| 亚洲日本韩国在线| 国内精品第一页| 欧美连裤袜在线视频| 黄色网址在线免费播放| 欧美性猛交xxxxx水多| 精品国产鲁一鲁一区二区三区| 欧美电影在线观看免费| 久久在精品线影院精品国产| 国产精品久久久久久久久久精爆| 国产又粗又猛又爽又黄91精品| 欧美凹凸一区二区三区视频| 人人超在线公开视频| 欧美三级午夜理伦三级中视频| 亚洲精品乱码久久| 91精品国产91久久久久久密臀| 欧洲成人在线观看| 亚洲精品国产av| 1区2区3区精品视频| 国产自偷自偷免费一区| 牛牛影视一区二区三区免费看| 久久久97精品| 在线播放成人av| 99国产精品久久久| 男女日批视频在线观看| 成人51免费| 精品国内亚洲在观看18黄| 免费黄色片视频| 91在线精品秘密一区二区| 国产一级片91| 国产高清亚洲| xxxxxxxxx欧美| 欧美在线视频精品| 国产亚洲精品免费| 免费无码av片在线观看| 玖玖玖免费嫩草在线影院一区| 欧美剧在线观看| 99久久精品国产色欲| 成人欧美一区二区三区白人| 天堂av8在线| 日韩欧美一区二区三区免费看| 国产成人久久久| 国产一区电影| 欧美综合色免费| 国产一区二区三区四区在线| 首页国产欧美久久| 麻豆亚洲一区| 欧美色999| 国产香蕉97碰碰久久人人| 亚洲中文字幕无码爆乳av| 久久这里只有精品6| 美女福利视频在线| 国产探花在线精品| 国产成人精品综合久久久| 91大神xh98hx在线播放| 欧美视频第二页| 亚洲欧美另类日本| 国产一二三精品| 大荫蒂性生交片| 香蕉久久夜色精品国产使用方法 | 天天干,天天干| 国产清纯白嫩初高生在线观看91 | 波多野结衣国产| 久久久午夜精品理论片中文字幕| 爆乳熟妇一区二区三区霸乳| 欧美一级淫片| 51成人做爰www免费看网站| 欧美性爽视频| 亚洲欧美日韩中文在线制服| 337p粉嫩色噜噜噜大肥臀| 中文字幕欧美一| 成年女人免费视频| 美女黄色成人网| 亚洲综合首页| 国产成人在线中文字幕| 日本高清不卡的在线| 一级毛片视频在线| 日韩免费视频一区二区| 日韩精品1区2区| 国产精品理论在线观看| 国产精品二区视频| 国产日韩高清一区二区三区在线| 色播五月综合| 少妇精品在线| 国产91免费看片| 97超碰资源站在线观看| 日韩精品中文字幕在线播放| 91精品视频免费在线观看| 亚洲综合视频网| b站大片免费直播| 国产精品18久久久久久久久久久久 | 性生交大片免费看l| 亚洲男人影院| 男女激烈动态图| 妖精视频一区二区三区免费观看 | 99re8这里有精品热视频8在线| 91国产高清在线| 麻豆视频在线免费观看| 日韩精品小视频| 国产视频一区二区三区四区五区| 欧美日韩一区二区在线 | 欧美zozo| 欧美成人vps| 亚洲天堂777| 欧美午夜激情视频| 福利所第一导航| 国产精品网站在线| 国产麻豆xxxvideo实拍| 久久99国产精品免费网站| 春日野结衣av| 欧美精品国产一区二区| 亚洲自拍三区| 欧美手机在线| 欧美激情第六页| 99re6热只有精品免费观看| 成人激情av在线| 色老太综合网| 欧美性视频精品| 国产乱码在线| 欧美高清在线观看| 欧美性videos| 日韩一二三在线视频播| 黄色软件在线| 亚洲日本aⅴ片在线观看香蕉| 免费国产精品视频| 欧美一级夜夜爽| 国产又粗又猛又黄又爽| 欧美伊人久久久久久久久影院 | 欧美不卡视频一区| 国产精品福利电影| 欧美在线免费观看亚洲| 视频一区二区三区四区五区| 亚洲高清视频中文字幕| 杨钰莹一级淫片aaaaaa播放| **欧美大码日韩| 污污视频网站在线免费观看| 国产女人18毛片水真多成人如厕 | 黄色福利在线观看| 日韩欧美一二区| 性生交生活影碟片| 日韩精品一区二区在线观看| 精品国产亚洲av麻豆| 91麻豆精品国产91久久久久久| 91精品国产乱码久久久久| 欧美久久一区二区| 国产又粗又猛又黄又爽| 在线综合亚洲欧美在线视频| 91亚洲精品国偷拍自产在线观看| 欧美日韩国产系列| 国产精品免费无遮挡| 91精品国产一区二区三区| aa视频在线免费观看| 欧美电影免费提供在线观看| 精品国产伦一区二区三| 精品日韩成人av| 四虎免费在线观看| 亚洲精品网址在线观看| 国产小视频在线观看| 在线视频欧美日韩| 国产鲁鲁视频在线观看特色| 欧美精品在线视频观看| 国产经典三级在线| 日韩av片电影专区| 亚洲黑人在线| 99porn视频在线| 天美av一区二区三区久久| 日本一区二区不卡高清更新| 久久影视一区| 国产乱子伦精品无码专区| 午夜亚洲福利在线老司机| 91人人澡人人爽人人精品| 极品少妇一区二区三区精品视频 | 欧美韩国日本综合| 伊人久久久久久久久久久久久久| 一区二区三区在线高清| 日本道在线观看| 欧美色中文字幕| 精品女同一区二区三区| 日韩av一卡二卡| 999国产在线视频| 欧美另类极品videosbest最新版本| caoporn-草棚在线视频最| 国产www精品| 久久久久毛片免费观看| 久久综合九色综合久99| 国产精品97| 国产资源在线视频| 看国产成人h片视频| 成人性生活免费看| 一色屋精品亚洲香蕉网站| 国产精品老女人| 91精品国产高清一区二区三区蜜臀| 污污的视频网站在线观看| 亚洲人线精品午夜| 国产盗摄在线视频网站| 国产精品视频中文字幕91| 国产精品xxxav免费视频| 视频一区在线免费观看| 亚洲高清资源| jizzzz日本| 91性感美女视频| 中文字幕人妻一区二| 在线免费亚洲电影| 亚洲第一精品网站| 色999日韩欧美国产| 亚洲小少妇裸体bbw| www.成人av| 欧美国产一级| 免费在线观看日韩视频| 国产成人免费xxxxxxxx| 日本美女bbw| 日韩欧美国产视频| 好吊色在线观看| 久久成人18免费网站| 亚洲不卡系列| 久久综合毛片| 在线 亚洲欧美在线综合一区| 九九九九九伊人| 久久精品人人爽人人爽| 国产精品99精品| 日韩欧美激情四射| 九义人在线观看完整免费版电视剧| 国产精品6699| 亚洲综合图色| 欧美成人xxxxx| 不卡的av在线| 国产精彩视频在线观看| 日韩精品专区在线| 日韩精品分区| 99精品国产高清一区二区| 综合精品久久| 自拍偷拍激情视频| 亚洲女同一区二区| 国产农村妇女毛片精品久久| 中文字幕日韩综合av| 少妇精品视频一区二区免费看| 欧美日韩精品免费在线观看视频| 一区二区三区四区五区精品视频| 丝袜熟女一区二区三区 | 久久久av电影| 国产aa精品| 成年在线观看视频| 国产精品一区二区久久精品爱涩 | 91黄色精品| 亚洲一区二区三区| 原创真实夫妻啪啪av| 一区二区在线观看视频在线观看| 国产黄a三级三级三级| 精品中文字幕乱| 成人中文字幕视频| 激情五月宗合网| 久久日韩粉嫩一区二区三区 | 免费观看成人av| 999福利视频| 555夜色666亚洲国产免| av大片在线| 精品日本一区二区三区| 亚洲综合好骚| gv天堂gv无码男同在线观看| 欧美图区在线视频| 国产高清一区二区三区视频| 99电影在线观看| 99伊人成综合| 少妇人妻好深好紧精品无码| 欧美日韩国产免费| gogo在线观看| 久久国产精品精品国产色婷婷| 美女诱惑黄网站一区| 亚洲色图日韩精品| 欧美一级精品大片| 亚洲人体影院| 自拍偷拍一区二区三区| 国产黄色91视频| 国产精品自拍99| 日日骚久久av| 久久久久久毛片免费看| 久久午夜夜伦鲁鲁一区二区| 亚洲视频一区二区在线| 人妻va精品va欧美va| 国产999在线| 欧美全黄视频| a级片在线观看| 欧美成人a视频| 电影天堂国产精品| 黄色一级片国产| 欧美国产欧美综合| 高清毛片aaaaaaaaa片| 国产精品福利在线观看| 综合一区二区三区| 免费观看av网站| 日韩三级视频在线看| 欧美日韩电影免费看| 大桥未久一区二区| 久久蜜桃av一区精品变态类天堂| 99热这里只有精品在线观看| 日本视频久久久| 国产综合色产| www.99re6| 亚洲欧美中文字幕|