獨立配置中心k8s作為配置中心" />

日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

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

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

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

圖片圖片LNe28資訊網——每日最新資訊28at.com

圖片圖片LNe28資訊網——每日最新資訊28at.com

圖片圖片LNe28資訊網——每日最新資訊28at.com

圖片圖片LNe28資訊網——每日最新資訊28at.com

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


LNe28資訊網——每日最新資訊28at.com

獨立配置中心LNe28資訊網——每日最新資訊28at.com

k8s作為配置中心LNe28資訊網——每日最新資訊28at.com

學習成本LNe28資訊網——每日最新資訊28at.com

1.運維要學習搭建、維護LNe28資訊網——每日最新資訊28at.com

2.研發(fā)和研發(fā)都需要學習配置中心的工具、系統如何使用LNe28資訊網——每日最新資訊28at.com

1.熟悉yaml/json語法即LNe28資訊網——每日最新資訊28at.com

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

適配工作量LNe28資訊網——每日最新資訊28at.com

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

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

集群維護成本LNe28資訊網——每日最新資訊28at.com

額外維護成本LNe28資訊網——每日最新資訊28at.com

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

服務發(fā)現LNe28資訊網——每日最新資訊28at.com

支持服務發(fā)現LNe28資訊網——每日最新資訊28at.com

支持服務發(fā)現LNe28資訊網——每日最新資訊28at.com

云資源費用LNe28資訊網——每日最新資訊28at.com

增加成本LNe28資訊網——每日最新資訊28at.com

無額外成本LNe28資訊網——每日最新資訊28at.com

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

圖片圖片LNe28資訊網——每日最新資訊28at.com

圖片圖片LNe28資訊網——每日最新資訊28at.com

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

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

圖片圖片LNe28資訊網——每日最新資訊28at.com

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

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

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

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

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

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

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

看別人的東西,你TM文檔呢? LNe28資訊網——每日最新資訊28at.com

做自己的東西,這TM還用寫文檔?LNe28資訊網——每日最新資訊28at.com

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

流程如下LNe28資訊網——每日最新資訊28at.com

圖片圖片LNe28資訊網——每日最新資訊28at.com

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

2.dockerfile如何自動生成

我們再看看剛才列的清單LNe28資訊網——每日最新資訊28at.com

圖片圖片LNe28資訊網——每日最新資訊28at.com

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

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

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

2.makefile文件

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

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

然后我們再談談為什么會有編譯鏡像和運行鏡像的區(qū)別,我們看看下面這個流程LNe28資訊網——每日最新資訊28at.com

圖片圖片LNe28資訊網——每日最新資訊28at.com

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

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

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

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

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

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

圖片圖片LNe28資訊網——每日最新資訊28at.com

global/config.go這個文件長這樣LNe28資訊網——每日最新資訊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)境變量標記,只要有這個標記則支持注入}{  Server: &confserver.Server{    Port: 80,    Mode: "debug",  },  TestEnv: "123",}
github.com/kunlun-qilian/confx這個庫的作用就是注入環(huán)境變量和生成dockerfile,單獨出來了一個庫,只要是這個工程目錄結構都可以使用

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

圖片圖片LNe28資訊網——每日最新資訊28at.com

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

圖片圖片LNe28資訊網——每日最新資訊28at.com

重新運行一下服務,再看接口,變量被local.yml里面的值替換了LNe28資訊網——每日最新資訊28at.com

圖片圖片LNe28資訊網——每日最新資訊28at.com

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

export DEMO_DOCKER__TestEnv=terminal_789 && go run main.go

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

圖片圖片LNe28資訊網——每日最新資訊28at.com


再看看生成的dockerfile,下面這個就是自動生成的默認dockerfileLNe28資訊網——每日最新資訊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"]

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

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

在global/config.go中的init方法中,留了入口LNe28資訊網——每日最新資訊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)}

然后我們再重新運行一下看看結果,編譯鏡像、運行鏡像、代理都更新了LNe28資訊網——每日最新資訊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"]

如果服務有多個端口怎么處理?還是從global/config.go中下手,增加一個 TestPort 的變量,tag中加上 `env:"opt,expose"`LNe28資訊網——每日最新資訊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,}

然后咱們再運行一次,9090端口暴露出來了,這帶手表了,帶啥手表了?LNe28資訊網——每日最新資訊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ù)我們還會逐步開源一些工具LNe28資訊網——每日最新資訊28at.com

工具包confx: https://github.com/kunlun-qilian/confx本文的demo:  https://github.com/kunlun-qilian/gin-demo


LNe28資訊網——每日最新資訊28at.com

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

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

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

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

標簽:
  • 熱門焦點
  • K60 Pro官方停產 第三方瞬間漲價

    雖然沒有官方宣布,但Redmi的一些高管也已經透露了,Redmi K60 Pro已經停產且不會補貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機在停產之后
  • Java NIO內存映射文件:提高文件讀寫效率的優(yōu)秀實踐!

    Java的NIO庫提供了內存映射文件的支持,它可以將文件映射到內存中,從而可以更快地讀取和寫入文件數據。本文將對Java內存映射文件進行詳細的介紹和演示。內存映射文件概述內存
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發(fā)某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 慕巖炮轟抖音,百合網今何在?

    來源:價值研究所 作者:Hernanderz“難道就因為自己的一個產品牛逼了,從客服到總裁,都不愿意正視自己產品和運營上的問題,選擇逃避了嗎?”這一番話,出自百合網聯合創(chuàng)
  • 最“俊美”淘寶賣家,靠直播和短視頻圈粉,上架秒光,年銷3000萬

    來源 | 電商在線文|易琬玉編輯|斯問受訪店鋪:Ringdoll戒之人形圖源:微博@御座的黃山、“Ringdoll戒之人形”淘寶店鋪有關外貌的評價,黃山已經聽累了。生于1985年的他,哪
  • 自律,給不了Keep自由!

    來源 | 互聯網品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 三星Galaxy Z Fold5今日亮相:厚度縮減但仍略顯厚重

    據官方此前宣布,三星將于7月26日也就是今天在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • 自研Exynos回歸!三星Galaxy S24系列將提供Exynos和驍龍雙版本

    年初,全新的三星Galaxy S23系列發(fā)布,包含Galaxy S23、Galaxy S23+和Galaxy S23 Ultra三個版本,全系搭載超頻版驍龍8 Gen 2,雖同樣采用臺積電4nm工藝制
  • iQOO 11S新品發(fā)布會

    iQOO將在7月4日19:00舉行新品發(fā)布會,推出杭州亞運會電競賽事官方用機iQOO 11S。
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品日韩一区| 香蕉成人久久| 在线观看日韩av电影| 尤妮丝一区二区裸体视频| 雨宫琴音一区二区在线| 亚洲经典一区| 一本色道久久88精品综合| 亚洲一区二区三区四区中文| 欧美一区激情| 久热re这里精品视频在线6| 欧美一区二区视频97| 猛干欧美女孩| 欧美激情va永久在线播放| 欧美三级乱人伦电影| 国产日韩欧美一区| 亚洲高清自拍| 亚洲视屏在线播放| 久久er99精品| 亚洲激情小视频| 日韩亚洲成人av在线| 午夜精品美女久久久久av福利| 久久精品国产91精品亚洲| 老司机精品导航| 欧美私人网站| 黄色av一区| 中日韩男男gay无套| 欧美中文字幕第一页| 欧美成人激情在线| 国产精品久久久久一区二区| 精品成人乱色一区二区| 在线视频欧美日韩精品| 久久久www成人免费毛片麻豆 | 免费在线亚洲欧美| 国产精品久久久久久久久久三级| 国产自产v一区二区三区c| 亚洲激情小视频| 欧美亚洲午夜视频在线观看| 欧美成人性生活| 国产伦精品一区二区三区照片91| 亚洲国产专区| 欧美一区国产二区| 欧美日韩国产色视频| 狠狠色综合色区| 亚洲午夜一区| 欧美国产精品久久| 国产一区二区三区不卡在线观看 | 久久成人国产精品| 欧美日韩无遮挡| 在线欧美日韩国产| 性欧美video另类hd性玩具| 欧美电影资源| 黄色精品网站| 亚洲欧美日韩在线高清直播| 国产视频久久网| 99精品视频一区| 每日更新成人在线视频| 国产精品区免费视频| 亚洲精品男同| 久久亚洲欧美| 国产欧美日韩另类视频免费观看| 亚洲精品美女91| 久久久夜夜夜| 国产一区导航| 亚洲女人天堂av| 欧美日韩国产一区精品一区| 狠狠综合久久av一区二区小说| 亚洲欧美第一页| 欧美三级在线视频| 亚洲精品一区二区三区婷婷月| 久久看片网站| 国产一区二区中文| 欧美在线free| 国产欧美91| 亚洲综合国产精品| 欧美视频在线免费| 999在线观看精品免费不卡网站| 久久中文字幕一区| 狠狠色伊人亚洲综合网站色| 亚洲午夜免费视频| 欧美小视频在线| 一区二区三区你懂的| 欧美日韩成人在线视频| 亚洲人妖在线| 欧美高清不卡| 最近中文字幕日韩精品 | 国产一区二区av| 欧美综合激情网| 国产午夜精品在线观看| 午夜精品福利视频| 国产精品区一区二区三| 亚洲一二三四久久| 国产精品乱码人人做人人爱| 亚洲一区日本| 国产精品一区久久久| 午夜精品一区二区三区在线视| 国产精品天天看| 亚洲欧美日本伦理| 国产欧美日韩三区| 久久精品国产亚洲aⅴ| 国产一区久久| 久久精品夜色噜噜亚洲a∨| 国产一区二区无遮挡| 久久久999| 在线观看欧美亚洲| 欧美成人午夜77777| 亚洲三级影片| 欧美日韩午夜视频在线观看| 一区二区日韩精品| 国产精品久久77777| 亚洲欧美春色| 国产一区激情| 亚洲成色www8888| 久久综合九色综合网站| 91久久精品国产| 欧美日韩亚洲一区二区| 亚洲一区二区在线免费观看视频| 国产精品美女一区二区| 久久精品国产第一区二区三区最新章节| 韩国av一区二区| 欧美成人精品高清在线播放| 日韩天堂av| 国产农村妇女精品一二区| 久久另类ts人妖一区二区| 亚洲经典视频在线观看| 欧美婷婷在线| 久久精品噜噜噜成人av农村| 在线观看欧美日韩国产| 欧美精品久久久久久久| 亚洲一区制服诱惑| 娇妻被交换粗又大又硬视频欧美| 欧美成人一区二区三区| 亚洲午夜精品一区二区| 国产亚洲欧美一级| 欧美国产日韩在线观看| 亚洲永久免费av| 黄网站色欧美视频| 欧美日韩午夜在线| 久久精品国产一区二区三| 亚洲国产视频一区二区| 国产精品久久午夜夜伦鲁鲁| 久久久久久一区二区| 亚洲精选一区二区| 国产日韩精品一区二区三区在线| 免费观看国产成人| 亚洲综合二区| 91久久精品美女高潮| 国产精品一卡二卡| 欧美国产视频日韩| 欧美一区二区三区喷汁尤物| 亚洲国产天堂久久综合网| 国产精品色网| 欧美福利视频网站| 欧美怡红院视频| 日韩亚洲精品电影| 韩国免费一区| 国产精品爱啪在线线免费观看| 久久人人爽人人爽爽久久| 亚洲午夜激情网页| 亚洲欧洲另类国产综合| 国产日韩精品久久久| 欧美日韩第一区日日骚| 久久精品水蜜桃av综合天堂| 亚洲深夜av| 亚洲激情婷婷| 黄色欧美日韩| 国产麻豆视频精品| 欧美日韩在线另类| 欧美成熟视频| 久久久蜜臀国产一区二区| 亚洲欧美福利一区二区| 99精品久久久| 亚洲国产专区校园欧美| 黄色成人在线网站| 国产亚洲va综合人人澡精品| 欧美视频一区二区三区四区| 免费永久网站黄欧美| 久久久久国产免费免费| 午夜精品久久久久久久99樱桃| 一区二区三区精品视频在线观看| 亚洲国产精品成人综合| 国模吧视频一区| 国产欧美午夜| 国产精品欧美日韩一区| 欧美三级乱人伦电影| 欧美精品乱码久久久久久按摩| 久久性色av| 久久一区中文字幕| 久久久久久久性| 久久精品国产亚洲一区二区| 欧美在线短视频| 最新成人av在线| 一区二区在线观看av| 国产精品拍天天在线| 欧美黄色视屏| 久久综合久久综合久久| 午夜国产精品影院在线观看 | 欧美自拍偷拍| 亚洲一区影音先锋| 亚洲色图自拍| 亚洲精品一区中文| 一区在线播放| 国产伊人精品| 国产精品永久免费| 欧美性做爰猛烈叫床潮|