獨(dú)立配置中心k8s作為配置中心" />

国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當(dāng)前位置:首頁 > 科技  > 軟件

摸魚心法第一章——和配置文件說拜拜

來源: 責(zé)編: 時間:2023-08-05 11:44:34 5386觀看
導(dǎo)讀為了能摸魚我們團(tuán)隊(duì)做了容器化,但是帶來的問題是服務(wù)配置文件很麻煩,然后大家在群里進(jìn)行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨(dú)立配置中心和k8s作為配置中心的區(qū)別
獨(dú)立配置中心k8s作為配置中心

為了能摸魚我們團(tuán)隊(duì)做了容器化,但是帶來的問題是服務(wù)配置文件很麻煩,然后大家在群里進(jìn)行了“親切友好”的溝通OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

對比就對比,簡單對比下獨(dú)立配置中心和k8s作為配置中心的區(qū)別OBO28資訊網(wǎng)——每日最新資訊28at.com


OBO28資訊網(wǎng)——每日最新資訊28at.com

獨(dú)立配置中心OBO28資訊網(wǎng)——每日最新資訊28at.com

k8s作為配置中心OBO28資訊網(wǎng)——每日最新資訊28at.com

學(xué)習(xí)成本OBO28資訊網(wǎng)——每日最新資訊28at.com

1.運(yùn)維要學(xué)習(xí)搭建、維護(hù)OBO28資訊網(wǎng)——每日最新資訊28at.com

2.研發(fā)和研發(fā)都需要學(xué)習(xí)配置中心的工具、系統(tǒng)如何使用OBO28資訊網(wǎng)——每日最新資訊28at.com

1.熟悉yaml/json語法即OBO28資訊網(wǎng)——每日最新資訊28at.com

2.研發(fā)只需要解析環(huán)境變量,無需關(guān)注注入細(xì)節(jié)OBO28資訊網(wǎng)——每日最新資訊28at.com

適配工作量OBO28資訊網(wǎng)——每日最新資訊28at.com

  1. 代碼需要引入對應(yīng)配置中心的庫進(jìn)行開發(fā)
  2. 需要在對應(yīng)的配置中心管理

  1. 服務(wù)直接解析環(huán)境變量即可
  2. k8s原生支持環(huán)境變量,并且支持通過configmap,secret資源注入到服務(wù)的環(huán)境變量中

集群維護(hù)成本OBO28資訊網(wǎng)——每日最新資訊28at.com

額外維護(hù)成本OBO28資訊網(wǎng)——每日最新資訊28at.com

保證集群etcd穩(wěn)定即可,無額外成本OBO28資訊網(wǎng)——每日最新資訊28at.com

服務(wù)發(fā)現(xiàn)OBO28資訊網(wǎng)——每日最新資訊28at.com

支持服務(wù)發(fā)現(xiàn)OBO28資訊網(wǎng)——每日最新資訊28at.com

支持服務(wù)發(fā)現(xiàn)OBO28資訊網(wǎng)——每日最新資訊28at.com

云資源費(fèi)用OBO28資訊網(wǎng)——每日最新資訊28at.com

增加成本OBO28資訊網(wǎng)——每日最新資訊28at.com

無額外成本OBO28資訊網(wǎng)——每日最新資訊28at.com

對比結(jié)果出來后,群里的研發(fā)也覺得k8s作為配置中心不錯了OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

我這里想問問在看文章的同學(xué):是不是都覺得運(yùn)維的東西很簡單?還有是不是個鍋都甩給運(yùn)維?像這樣的研發(fā)你身邊多么還是說你也是這樣的研發(fā)? OBO28資訊網(wǎng)——每日最新資訊28at.com

繼續(xù)今天的話題,既然服務(wù)要在k8s里運(yùn)行,同時也要把k8s作為配置中心使用,那服務(wù)適配需要做些啥? 咱們先列一個清單OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

服務(wù)要優(yōu)雅的適配容器化環(huán)境,需要解決以下問題OBO28資訊網(wǎng)——每日最新資訊28at.com

  • 避免繁瑣的定義和解析服務(wù)環(huán)境變量
  • 服務(wù)在本地調(diào)試下和容器環(huán)境運(yùn)行兩種場景下,對于環(huán)境變量的解析需要無縫切換
  • 服務(wù)的dockerfile可根據(jù)服務(wù)信息自動生成,盡量避免人工操作

1.首先說環(huán)境變量的問題

從本地開發(fā)和容器運(yùn)行兩個角度來看,本地開發(fā)的時候讀取配文件比讀取環(huán)境變量方便,容器運(yùn)行中讀取環(huán)境變量比讀取配置文件方便,我想說你倆擱這卡bug呢?OBO28資訊網(wǎng)——每日最新資訊28at.com

但是這個問題其實(shí)不難,解決邏輯也很簡單。那就是采用覆寫的思路,如果環(huán)境變量里讀取到了值就用環(huán)境變量的,否則就用代碼里的值。OBO28資訊網(wǎng)——每日最新資訊28at.com

那按照這個思路是得有一個配置文件,然后服務(wù)讀取這個配置文件?可惜這個和我們團(tuán)隊(duì)的一個追求相違背——代碼及文檔OBO28資訊網(wǎng)——每日最新資訊28at.com

說到文檔,插個題外話,對于寫文檔這事兒。。。OBO28資訊網(wǎng)——每日最新資訊28at.com

看別人的東西,你TM文檔呢? OBO28資訊網(wǎng)——每日最新資訊28at.com

做自己的東西,這TM還用寫文檔?OBO28資訊網(wǎng)——每日最新資訊28at.com

回到環(huán)境變量這個問題來,其實(shí)在代碼里面定義變量并提供覆寫的能力就足夠了??紤]到在本地開發(fā)調(diào)試的時候,需要頻繁修改變量的值,無論是修改代碼里的變量值或者修改環(huán)境變量還是稍顯麻煩,所以覆寫的信息可以來源于環(huán)境變量或一個覆寫的變量文件OBO28資訊網(wǎng)——每日最新資訊28at.com

流程如下OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

針對提供反射機(jī)制的編程語言結(jié)合一定的規(guī)則,環(huán)境變量的key可以直接從定義的結(jié)構(gòu)體里獲取無需額外維護(hù)。無反射類型的編程語言也可以按照這個思路實(shí)現(xiàn),只是稍顯麻煩。這樣環(huán)境變量的問題解決了,然后就是dockerfile的問題OBO28資訊網(wǎng)——每日最新資訊28at.com

2.dockerfile如何自動生成

我們再看看剛才列的清單OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

首先說說核心問題如何編譯,有兩種方式OBO28資訊網(wǎng)——每日最新資訊28at.com

1.直接在dockerfile里面寫編譯過程

直接手寫dockerfile沒有問題,因?yàn)榉?wù)的開發(fā)人員最清楚自己的服務(wù)需要怎么編譯,但是不同的服務(wù)總會出現(xiàn)差異化的編譯過程,這樣從代碼自動生成dockerfile的角度來講不可控OBO28資訊網(wǎng)——每日最新資訊28at.com

2.makefile文件

通過makefile來執(zhí)行編譯步驟就解決了差異化的問題,在dockerfile里只需要執(zhí)行類似make build的固定命令便完成了服務(wù)編譯全過程。自動化工具按照固定的dockerfile模板生成文件,makefile完成具體的編譯過程,這樣服務(wù)編譯與工具完美解耦OBO28資訊網(wǎng)——每日最新資訊28at.com

核心問題解決了,至于dockerfile如何生成,每種編程語言都可以采用自身語言提供的模板庫進(jìn)行生成dockerfile了。即便不用模板,拼接字符串也是可以的,條條大路通羅馬。OBO28資訊網(wǎng)——每日最新資訊28at.com

然后我們再談?wù)劄槭裁磿芯幾g鏡像和運(yùn)行鏡像的區(qū)別,我們看看下面這個流程OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

從流程可以看出,服務(wù)在k8s里面啟動時會從鏡像倉庫拉去服務(wù)鏡像,這里存在一個網(wǎng)絡(luò)傳輸?shù)膯栴},內(nèi)網(wǎng)都不說了,如果從公網(wǎng)拉鏡像,并發(fā)量高一點(diǎn),拉的再頻繁點(diǎn),不管是固定帶寬還是按流量計(jì)費(fèi),老話說得好,這不就是小刀剌了貔貅腚——拉的都是錢OBO28資訊網(wǎng)——每日最新資訊28at.com

所以我們期望的是鏡像足夠小,這樣在部署服務(wù)的時候更快更省錢,尤其是首次部署的時候(這里涉及到docker 分層的問題不做展開)。編譯鏡像一般都非常龐大并不適合作為運(yùn)行鏡像使用,只需要提供編譯環(huán)境,編譯完成后將編譯后的文件放入一個很小的運(yùn)行鏡像中即可OBO28資訊網(wǎng)——每日最新資訊28at.com

以我們團(tuán)隊(duì)采用的是Golang語言為例,編譯鏡像目前采用的1.20.5-buster,AMD64的鏡像大小為275M,ARM的鏡像大小為264M,運(yùn)行鏡像采用的是gcr.io/distroless/static-debian11,最終運(yùn)行鏡像大小在20M左右,這不得起飛了啊,拉鏡像就跟玩兒一樣。OBO28資訊網(wǎng)——每日最新資訊28at.com

好了,今天的文章主要分享了在容器化環(huán)境下,通過拋棄服務(wù)配置文件而采用環(huán)境變量的形式來解決配置注入的問題,自動生成dockerfile需要避免的坑,希望對在走容器化道路的同學(xué)有所幫助。如果大家想聽聽其他的可以留言或者私信我們。OBO28資訊網(wǎng)——每日最新資訊28at.com

接下來就是Golang的福利時間,我們將這個變量注入的庫進(jìn)行了開源。現(xiàn)在用gin框架寫個demo來演示環(huán)境變量注入和生成dockerfile。(我們在gin框架上加了一點(diǎn)點(diǎn)東西,這樣更好用)OBO28資訊網(wǎng)——每日最新資訊28at.com

首先創(chuàng)建一個工程目錄OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

global/config.go這個文件長這樣OBO28資訊網(wǎng)——每日最新資訊28at.com

package globalimport (  "github.com/kunlun-qilian/conflogger"  "github.com/kunlun-qilian/confserver"  "github.com/kunlun-qilian/confx")func init() {  confx.SetConfX("demo-docker", "..")  confx.ConfP(&Config)}var Config = struct {  Logger  *conflogger.Log  Server  *confserver.Server  TestEnv string `env:""`# 環(huán)境變量標(biāo)記,只要有這個標(biāo)記則支持注入}{  Server: &confserver.Server{    Port: 80,    Mode: "debug",  },  TestEnv: "123",}
github.com/kunlun-qilian/confx這個庫的作用就是注入環(huán)境變量和生成dockerfile,單獨(dú)出來了一個庫,只要是這個工程目錄結(jié)構(gòu)都可以使用

運(yùn)行之后會生成config/default.yml,這個環(huán)境變量文件就是每次啟動服務(wù)后根據(jù)上述global/config.go文件自動生成的默認(rèn)配置文件,這個文件是作為后續(xù)本地覆寫配置文件的藍(lán)本,免得不知道環(huán)境變量是啥,環(huán)境變量規(guī)則是“服務(wù)名__環(huán)境變量名”OBO28資訊網(wǎng)——每日最新資訊28at.com

DEMO_DOCKER__Logger_Level: ""DEMO_DOCKER__Logger_Output: AlwaysDEMO_DOCKER__Server_Mode: debugDEMO_DOCKER__Server_UseH2C: "false"DEMO_DOCKER__TestEnv: "123"

demo里加入了一個接口來返回TestEnv的值OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

在本地開發(fā)的時候需要覆寫默認(rèn)值的時候,只需要在config目錄下加入一個叫做 local.yml(這個放gitignore里)的文件并添加想替換的值OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

重新運(yùn)行一下服務(wù),再看接口,變量被local.yml里面的值替換了OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com

然后我們再通過當(dāng)前命令行會話中注入一個環(huán)境變量,然后啟動OBO28資訊網(wǎng)——每日最新資訊28at.com

export DEMO_DOCKER__TestEnv=terminal_789 && go run main.go

值又被替換成了環(huán)境變量的值,有了這個還要啥自行車?OBO28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片OBO28資訊網(wǎng)——每日最新資訊28at.com


再看看生成的dockerfile,下面這個就是自動生成的默認(rèn)dockerfileOBO28資訊網(wǎng)——每日最新資訊28at.com

FROM dockerproxy.com/library/golang:1.20-buster AS build-envFROM build-env AS builderWORKDIR /go/srcCOPY ./ ./# buildRUN make build WORKSPACE=demo-docker# runtimeFROM gcr.dockerproxy.com/distroless/static-debian11COPY --from=builder /go/src/cmd/demo-docker/demo-docker /go/bin/demo-dockerEXPOSE 80ARG PROJECT_NAMEARG PROJECT_VERSIONENV PROJECT_NAME=${PROJECT_NAME} PROJECT_VERSION=${PROJECT_VERSION}WORKDIR /go/binENTRYPOINT ["/go/bin/demo-docker"]

上文中提到的幾個配置信息,咱們定義了一個結(jié)構(gòu),包含了編譯鏡像,運(yùn)行鏡像,GOPROXY代理,openapi文件,奧,差點(diǎn)忘了這篇不涉及到openapi,篇幅有限這個在后續(xù)篇章里講,你們懂的OBO28資訊網(wǎng)——每日最新資訊28at.com

type DockerConfig struct {  BuildImage   string  RuntimeImage string  GoProxy      GoProxyConfig  Openapi      bool}type GoProxyConfig struct {  ProxyOn bool  Host    string}

在global/config.go中的init方法中,留了入口OBO28資訊網(wǎng)——每日最新資訊28at.com

func init() {  confx.SetConfX("demo-docker", "..", confx.DockerConfig{    BuildImage:   "private-harbor.xxx.com/xxx/builder:v1.0.0",    RuntimeImage: "private-harbor.xxx.com/xxx/runtime:v1.0.0",    GoProxy: confx.GoProxyConfig{      ProxyOn: true,      Host:    "https://goproxy.cn,direct",    },  })  confx.ConfP(&Config)}

然后我們再重新運(yùn)行一下看看結(jié)果,編譯鏡像、運(yùn)行鏡像、代理都更新了OBO28資訊網(wǎng)——每日最新資訊28at.com

FROM private-harbor.xxx.com/xxx/builder:v1.0.0 AS build-envFROM build-env AS builderARG GOPROXY=https://goproxy.cn,directWORKDIR /go/srcCOPY ./ ./# buildRUN make build WORKSPACE=demo-docker# runtimeFROM private-harbor.xxx.com/xxx/runtime:v1.0.0COPY --from=builder /go/src/cmd/demo-docker/demo-docker /go/bin/demo-dockerEXPOSE 80ARG PROJECT_NAMEARG PROJECT_VERSIONENV PROJECT_NAME=${PROJECT_NAME} PROJECT_VERSION=${PROJECT_VERSION}WORKDIR /go/binENTRYPOINT ["/go/bin/demo-docker"]

如果服務(wù)有多個端口怎么處理?還是從global/config.go中下手,增加一個 TestPort 的變量,tag中加上 `env:"opt,expose"`OBO28資訊網(wǎng)——每日最新資訊28at.com

var Config = struct {  Logger  *conflogger.Log  Server  *confserver.Server  TestEnv string `env:""`  TestPort int `env:"opt,expose"` # 看這里,看這里}{  Server: &confserver.Server{    Port: 80,    Mode: "debug",  },  TestEnv:  "123",  TestPort: 9090,}

然后咱們再運(yùn)行一次,9090端口暴露出來了,這帶手表了,帶啥手表了?OBO28資訊網(wǎng)——每日最新資訊28at.com

FROM private-harbor.xxx.com/xxx/builder:v1.0.0 AS build-envFROM build-env AS builderARG GOPROXY=https://goproxy.cn,directWORKDIR /go/srcCOPY ./ ./# buildRUN make build WORKSPACE=demo-docker# runtimeFROM private-harbor.xxx.com/xxx/runtime:v1.0.0COPY --from=builder /go/src/cmd/demo-docker/demo-docker /go/bin/demo-dockerEXPOSE 9090EXPOSE 80ARG PROJECT_NAMEARG PROJECT_VERSIONENV PROJECT_NAME=${PROJECT_NAME} PROJECT_VERSION=${PROJECT_VERSION}WORKDIR /go/binENTRYPOINT ["/go/bin/demo-docker"]

最后貼上全球最大同。。不對,是github鏈接,后續(xù)我們還會逐步開源一些工具OBO28資訊網(wǎng)——每日最新資訊28at.com

工具包c(diǎn)onfx: https://github.com/kunlun-qilian/confx本文的demo:  https://github.com/kunlun-qilian/gin-demo


OBO28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-79-0.html摸魚心法第一章——和配置文件說拜拜

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Rust中的高吞吐量流處理

下一篇: 掘力計(jì)劃第 20 期:Flutter 混合開發(fā)的混亂之治

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 一加Ace2 Pro官宣:普及16G內(nèi)存 引領(lǐng)24G

    一加官方今天繼續(xù)為本月發(fā)布的新機(jī)一加Ace2 Pro帶來預(yù)熱,公布了內(nèi)存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領(lǐng),還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待?!蓖瑫r
  • 紅魔電競平板評測:大屏幕硬實(shí)力

    前言:三年的疫情因?yàn)橐暇W(wǎng)課的原因激活了平板市場,如今網(wǎng)課的時代已經(jīng)過去,大家的生活都恢復(fù)到了正軌,這也就意味著,真正考驗(yàn)平板電腦生存的環(huán)境來了。也就是面對著這種殘酷的
  • 6月安卓手機(jī)性價(jià)比榜:Note 12 Turbo斷層式碾壓

    6月份有一個618,雖然這是京東周年慶的日子,但別的電商也都不約而同的跟進(jìn)了,反正促銷沒壞處,廠商和用戶都能滿意。618期間一些產(chǎn)品也出現(xiàn)了歷史低價(jià),那么各個價(jià)位段的產(chǎn)品性價(jià)比
  • 使用Webdriver-manager解決瀏覽器與驅(qū)動不匹配所帶來自動化無法執(zhí)行的問題

    1、前言在我們使用 Selenium 進(jìn)行 UI 自動化測試時,常常會因?yàn)闉g覽器驅(qū)動與瀏覽器版本不匹配,而導(dǎo)致自動化測試無法執(zhí)行,需要手動去下載對應(yīng)的驅(qū)動版本,并替換原有的驅(qū)動,可能還
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學(xué)好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現(xiàn)百度,功能雖然實(shí)現(xiàn)了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來源:價(jià)值研究所 作者:Hernanderz“難道就因?yàn)樽约旱囊粋€產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運(yùn)營上的問題,選擇逃避了嗎?”這一番話,出自百合網(wǎng)聯(lián)合創(chuàng)
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁“充值中心”入口上線了本機(jī)生活界面。壹覽商業(yè)發(fā)現(xiàn),該界面目前主要
  • 小米汽車電池信息疑似曝光:容量101kWh,支持800V高壓快充

    7月14日消息,今日一名博主在社交媒體發(fā)布了一張疑似小米汽車電池信息的照片,顯示該電池包正是寧德時代麒麟電池,容量為101kWh,電壓為726.7V,可以預(yù)測小
  • 8月見!小米MIX Fold 3獲得3C認(rèn)證:支持67W快充

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
99精品视频中文字幕| 国产精品美女| 国产精品亚洲一区二区三区妖精| 天堂影院一区二区| 一区二区三区不卡在线观看| 亚洲色图制服诱惑| 亚洲丝袜自拍清纯另类| 国产精品青草综合久久久久99| 亚洲精品在线观| 久久久久综合网| 久久久精品免费观看| 国产精品午夜久久| 中文字幕日韩一区| 一区二区三区在线视频免费观看| 亚洲免费色视频| 性做久久久久久| 香蕉久久夜色精品国产使用方法| 日韩高清一区二区| 久久99精品国产.久久久久久| 国产在线看一区| av成人免费在线| 国内激情久久| 国产日韩一区二区| 色999日韩国产欧美一区二区| 欧美精品国产精品| 精品99久久久久久| 中文字幕在线不卡| 亚洲高清免费观看| 精品一区二区在线视频| 成人福利视频在线看| 亚洲高清激情| 一本久久综合亚洲鲁鲁五月天| 7777精品伊人久久久大香线蕉的 | 玖玖国产精品视频| 欧美伊人久久久久久午夜久久久久| 91麻豆精品国产91久久久| 久久免费午夜影院| 亚洲一区二区视频在线| 久久 天天综合| 暖暖成人免费视频| 麻豆91精品| 精品久久人人做人人爱| 亚洲另类春色校园小说| 国产一级精品在线| 在线高清一区| 欧美日韩另类一区| 国产精品青草综合久久久久99| 三级在线观看一区二区| 成人国产亚洲欧美成人综合网| 在线观看福利一区| 欧美男生操女生| 亚洲日穴在线视频| 国产在线不卡视频| 激情久久中文字幕| 欧美人妖巨大在线| 一区二区三区四区激情| 高清不卡在线观看av| 99精品免费视频| 日韩欧美一级二级三级久久久| 亚洲人成小说网站色在线| 国产乱码精品一品二品| 欧美日韩国产欧美日美国产精品| 日韩精品一区二区三区在线播放| 亚洲一区二区三区小说| 99久久精品国产一区| 老牛影视一区二区三区| 国产精品欧美一级免费| 国产乱人伦偷精品视频不卡| 国产欧美日韩在线播放| 久久久久9999亚洲精品| 久久国产精品第一页| 一区二区国产精品| 久久免费偷拍视频| 狠狠色丁香久久婷婷综| 国产欧美一级| 国产精品毛片久久久久久久| 成人动漫一区二区| 在线观看欧美精品| 亚洲自拍另类综合| 国产精品swag| 精品国产免费一区二区三区香蕉| 日本不卡一区二区三区| 国产婷婷精品| 亚洲人成网站色在线观看| 欧美88av| 国产清纯在线一区二区www| 高清国产一区二区| 欧美理论电影在线| 美女看a上一区| 色女孩综合影院| 亚洲成a人v欧美综合天堂下载| 亚洲高清精品中出| 自拍视频在线观看一区二区| 色综合色综合色综合色综合色综合| 日韩一区二区在线观看视频| 国产麻豆精品在线| 欧美日韩国产另类一区| 美女免费视频一区| 欧美揉bbbbb揉bbbbb| 久久精品99国产国产精| 欧美系列一区二区| 蜜臀a∨国产成人精品| 91黄色小视频| 国产一区二区主播在线| 欧美欧美欧美欧美| 国产成人精品一区二区三区网站观看| 欧美日本一区二区在线观看| 久久精品国产99国产| 欧美日本视频在线| 国产精品一二三四五| 日韩欧美中文一区二区| 成人的网站免费观看| 久久久久久久久一| 国产精品二区三区四区| 中文字幕一区二区不卡| 99日韩精品| 爽好久久久欧美精品| 欧美视频一区二区三区四区| 国产在线精品一区二区不卡了| 日韩视频在线永久播放| www.日韩大片| 亚洲人成7777| 久久久精品性| 国产乱人伦偷精品视频不卡| 久久综合国产精品| 狠狠久久综合婷婷不卡| 一二三四社区欧美黄| 欧美综合久久久| 丁香六月久久综合狠狠色| 国产午夜精品美女毛片视频| 在线视频亚洲| 久久99久久99精品免视看婷婷| 91精品国产综合久久福利软件| 99久久精品99国产精品| 亚洲欧美一区二区三区久本道91 | 亚洲欧美日韩视频二区| 精品一区二区综合| 精品99999| 国产精品一区二区三区观看| 激情国产一区二区| 国产欧美1区2区3区| 亚洲影视在线| 国产 日韩 欧美大片| 亚洲色欲色欲www在线观看| 欧美在线观看一区二区| 91性感美女视频| 亚洲丶国产丶欧美一区二区三区| 欧美日韩不卡在线| 欧美日韩一区二区三区免费| 日韩精品免费专区| 久久久久久亚洲综合影院红桃| 亚洲伊人观看| 91天堂素人约啪| 日本不卡123| 国产精品美女久久久久久久 | 三级成人在线视频| 久久精品无码一区二区三区| 色综合久久88色综合天天| 91在线播放网址| 日本va欧美va精品发布| 国产日韩欧美不卡在线| 欧美曰成人黄网| 国内精品福利| 国产成人免费av在线| 一区二区三区波多野结衣在线观看| 欧美久久久久中文字幕| 亚洲精品偷拍| 成人高清伦理免费影院在线观看| 午夜一区二区三区视频| 久久精品夜色噜噜亚洲a∨| 色噜噜久久综合| 亚洲欧洲午夜| 99精品视频在线观看免费| 蜜臀久久99精品久久久画质超高清| 国产精品久久久久一区二区三区 | 中国女人久久久| 欧美极品一区| 成人午夜激情在线| 久久精品国产精品亚洲红杏| 亚洲一区二区成人在线观看| 中文字幕第一页久久| 日韩一区二区三区高清免费看看| 久久精彩视频| 国产三级精品在线不卡| 欧美午夜精品久久久久免费视| 国产精品一区二区在线观看网站| 性做久久久久久| 一区二区三区 在线观看视频| 中文字幕国产精品一区二区| 久久综合色8888| 欧美成人猛片aaaaaaa| 欧美精品 国产精品| 色婷婷综合久久久| 久久精品国产99精品国产亚洲性色| 亚洲理论在线| 99精品99久久久久久宅男| 影音先锋亚洲电影| 韩国亚洲精品| 国产精品国产三级欧美二区| 欧美日韩一区二区国产|