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

如何使用 Kaniko在 Kubernetes 集群中構(gòu)建容器鏡像

云計(jì)算 云原生
眾所周知 Kubernetes 在 V1.24.x 版本之后默認(rèn)采用 containerd 作為容器運(yùn)行時(shí),不再支持 Docker,我們想用宿主機(jī)上的 /var/run/docker.sock 也用不了了。我們就需要另一種方式在 Kubernetes 集群中構(gòu)建容器鏡像,本文將介紹 Kaniko工具。

前言

如何構(gòu)建 Kubernetes 所需的容器鏡像?我想你答案肯定是 Docker,沒錯(cuò),Docker 確實(shí)是首選。我們在使用 Jenkins 進(jìn)行 CI/CD構(gòu)建容器鏡像的時(shí)候,做法通常是將 Jenkins 服務(wù)部署在物理機(jī)上,然后使用物理機(jī)的 docker build 命令來構(gòu)建鏡像。但是在 Jenkins on K8s 環(huán)境下,Jenkins Master 和 Jenkins Slave 都以 Pod 形式運(yùn)行在 Kubernetes 集群的 Node 上,我們的構(gòu)建環(huán)境都是 Pod ,沒有 docker 命令。

眾所周知 Kubernetes 在 V1.24.x 版本之后默認(rèn)采用 containerd 作為容器運(yùn)行時(shí),不再支持 Docker,我們想用宿主機(jī)上的 /var/run/docker.sock 也用不了了。我們就需要另一種方式在 Kubernetes 集群中構(gòu)建容器鏡像,本文將介紹 Kaniko工具。

什么是Kaniko

Github地址:https://github.com/GoogleContainerTools/kaniko

Kaniko 是Google開源的一款在 Kubernetes 用來構(gòu)建容器鏡像的工具,它是一個(gè)從 Dockerfile 構(gòu)建容器鏡像的工具,就像 Docker 一樣,但主要區(qū)別在于 Kaniko 可以在容器內(nèi)運(yùn)行,這意味著它可以在 Kubernetes 集群內(nèi)運(yùn)行。不需要特權(quán)模式,也不需要公開任何套接字。不需要在我們集群的節(jié)點(diǎn)上運(yùn)行 Docker,因此我們使用哪個(gè)容器引擎來運(yùn)行容器并不重要。重要的是 Kaniko 可以在容器內(nèi)構(gòu)建容器鏡像,并在 Kubernetes 集群內(nèi)自動(dòng)構(gòu)建,這就和宿主機(jī)上的 Docker 解綁了,更加安全可靠。特點(diǎn)如下:

  • docker in docker
  • 不依賴 Docker守護(hù)進(jìn)程
  • 不需要 privilege 權(quán)限,安全構(gòu)建
  • 僅需一條命令
  • 支持 Dockerfile 構(gòu)建

現(xiàn)在,讓我們一步一步來探索 Kaniko。

在Kubernetes中使用Kaniko

Kaniko 以容器的方式來運(yùn)行的,同時(shí)需要三個(gè)參數(shù): Dockerfile,上下文,以及遠(yuǎn)端鏡像倉庫的地址。

工作原理:

  • 讀取并解析指定的Dockerfile
  • 提取基礎(chǔ)鏡像的文件系統(tǒng)(Dockerfile 中的 FROM 鏡像)
  • 在獨(dú)立的Dockerfile中分別運(yùn)行每個(gè)命令
  • 每次運(yùn)行后都會(huì)對用戶空間文件系統(tǒng)的做快照
  • 每次運(yùn)行時(shí),將快照層附加到基礎(chǔ)層并更新鏡像元數(shù)據(jù)
  • 最后推送鏡像

前提條件:

  • 需要一個(gè)運(yùn)行的 kubernetes 集群
  • 需要?jiǎng)?chuàng)建一個(gè) Kubernetes secret,其中包含推送到鏡像倉庫所需的身份驗(yàn)證信息
  • 需要準(zhǔn)備好Dockerfile

創(chuàng)建Dockerfile

編寫一個(gè)Dockerfile 文件,并創(chuàng)建configmap 在k8s中:

[root@localhost ~]# cat Dockerfile
FROM ubuntu
ENTRYPOINT ["/bin/bash", "-c", "echo hello"]
[root@localhost ~]# kubectl create configmap kaniko-dockerfile --from-file=./Dockerfile
configmap/kaniko-dockerfile created

創(chuàng)建鏡像倉庫憑證的Secret

創(chuàng)建一個(gè)配置kaniko推送到 阿里云鏡像倉庫的憑證,找一臺有安裝docker的機(jī)子,登錄倉庫:

[root@localhost ~]# docker login --username=xxx registry.cn-shanghai.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
 
Login Succeeded

登入成功之后,會(huì)生成一個(gè)config.json的文件,使用該文件創(chuàng)建一個(gè)secret供kaniko容器使用。

  • centos環(huán)境中文件位置:/root/.docker/config.json
  • ubuntu環(huán)境中文件位置:/home/ubuntu/.docker/config.json
[root@localhost ~]# kubectl create secret generic kaniko-secret --from-file=/root/.docker/config.json
secret/kaniko-secret created

啟動(dòng)kaniko容器用來構(gòu)建鏡像

kaniko_build_image.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: kaniko
spec:
  containers:
  - name: kaniko
    image: gcr.io/kaniko-project/executor:latest
    args: ["--dockerfile=/workspace/Dockerfile",
            "--context=dir://workspace",
            "--destination=registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko-demo:1.0"] # 替換成自己的倉庫地址
    volumeMounts:
      - name: kaniko-secret
        mountPath: /kaniko/.docker
      - name: dockerfile
        mountPath: /workspace
  volumes:
    - name: kaniko-secret
      secret:
        secretName: kaniko-secret
        items:
          - key: config.json
            path: config.json
    - name: dockerfile
      configMap:
        name: kaniko-dockerfile
  • args 部分:這部分就是上面所講的,kaniko運(yùn)行時(shí)需要三個(gè)參數(shù): Dockerfile(--dockerfile),上下文(--context),遠(yuǎn)端鏡像倉庫(--destination)
  • secret 部分:推送至指定遠(yuǎn)端鏡像倉庫需要認(rèn)證,所以以secret的方式掛載到/kaniko/.docker/這個(gè)目錄下,文件名稱為config.json

創(chuàng)建pod,查看狀態(tài),并看log是否正常完成。

[root@localhost ~]# kubectl apply -f kaniko_build_image.yaml
pod/kaniko created
[root@localhost ~]# kubectl get pod
NAME                       READY   STATUS    RESTARTS   AGE
kaniko                     1/1     Running   0          3s
 
[root@localhost ~]# kubectl logs -f kaniko
INFO[0000] Retrieving image manifest ubuntu            
INFO[0000] Retrieving image ubuntu from registry index.docker.io
INFO[0003] Built cross stage deps: map[]               
INFO[0003] Retrieving image manifest ubuntu            
INFO[0003] Returning cached image manifest             
INFO[0003] Executing 0 build triggers                  
INFO[0003] Building stage 'ubuntu' [idx: '0', base-idx: '-1']
INFO[0003] Skipping unpacking as no commands require it.
INFO[0003] ENTRYPOINT ["/bin/bash", "-c", "echo hello"]
INFO[0003] Pushing image to registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko-demo:1.0
INFO[0004] Pushed registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko-demo@sha256:d1855cc00550f9048c88b507626e0f24acf4c22e02856e006b2b9fdb0b80e567

查看阿里云鏡像倉庫已經(jīng)上傳上去了:

用kaniko生成的鏡像來測試下是否可用:

[root@localhost ~]# docker run -it --rm registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko-demo:1.0
Unable to find image 'registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko-demo:1.0' locally
1.0: Pulling from kubesre02/kaniko-demo
445a6a12be2b: Pull complete
Digest: sha256:49bb962115b70a15a99b87e48fda28a883758081e41aef14766833d3a1578069
Status: Downloaded newer image for registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko-demo:1.0
hello

出來hello即成功。

自定義一個(gè)Kaniko鏡像

官方 kaniko 鏡像是基于 scratch 構(gòu)建的,里面沒有 shell,想在 kaniko 原生鏡像里在調(diào)用 shell 命令是很麻煩的。所以我們可以自定義我們自己私有的 Kaniko 鏡像。kaniko 的關(guān)鍵文件其實(shí)是/kaniko目錄下的二進(jìn)制文件,官方推薦是用 gcr.io/kaniko-project/executor 鏡像,我們就可以拷貝這個(gè)/kaniko目錄下的 executor 到我們自己的私有鏡像 Dockerfile:


FROM gcr.io/kaniko-project/executor:latest AS plugin
 
FROM ubuntu
 
ENV DOCKER_CONFIG /kaniko/.docker
 
COPY --from=plugin /kaniko/executor /usr/local/bin/kaniko
 
RUN mkdir -p /kaniko/.docker/
COPY config.json /kaniko/.docker/

上面 Dockerfile 構(gòu)建了一個(gè)基于Ubuntu的Docker鏡像:

(1) FROM gcr.io/kaniko-project/executor:latest AS plugin

  • 從名為gcr.io/kaniko-project/executor:latest的Docker鏡像開始構(gòu)建一個(gè)臨時(shí)階段,并將其命名為plugin。
  • 這個(gè)步驟是在一個(gè)已經(jīng)包含了Kaniko工具的Docker鏡像中構(gòu)建一個(gè)中間容器。

(2) FROM ubuntu

接下來創(chuàng)建一個(gè)新的Docker鏡像,基于官方的Ubuntu基礎(chǔ)鏡像。

(3) ENV DOCKER_CONFIG /kaniko/.docker

設(shè)置環(huán)境變量DOCKER_CONFIG為/kaniko/.docker,這是Kaniko工具使用的Docker配置目錄。這是為了確保Kaniko可以找到必要的Docker配置信息。

(4) COPY --from=plugin /kaniko/executor /usr/local/bin/kaniko

從之前構(gòu)建的plugin階段的鏡像中復(fù)制/kaniko/executor文件到新的鏡像的/usr/local/bin/kaniko路徑下。這將把Kaniko二進(jìn)制文件復(fù)制到新的Ubuntu鏡像中,以便后續(xù)在該鏡像中使用。

(5) RUN mkdir -p /kaniko/.docker/

在新的鏡像中創(chuàng)建/kaniko/.docker/目錄,用于存放Docker配置文件。

(6) COPY config.json /kaniko/.docker/

將本地的config.json文件復(fù)制到新的鏡像的/kaniko/.docker/目錄下。這個(gè)config.json文件很可能包含了Docker倉庫的認(rèn)證信息和其他配置,以便Kaniko可以訪問和推送Docker鏡像。

最終,這個(gè)Docker鏡像將包含了Ubuntu操作系統(tǒng)和Kaniko工具,并配置了Kaniko所需的Docker環(huán)境,使得可以在容器內(nèi)使用Kaniko構(gòu)建Docker鏡像,并且有了 shell 環(huán)境,同時(shí)保持了一定程度的隔離性和安全性。構(gòu)建并上傳鏡像:

[root@localhost ~]# docker build -t registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko:latest .
Sending build context to Docker daemon  212.1MB
Step 1/6 : FROM gcr.io/kaniko-project/executor:latest AS plugin
 ---> 03375da0f864
Step 2/6 : FROM ubuntu
 ---> aa786d622bb0
Step 3/6 : ENV DOCKER_CONFIG /kaniko/.docker
 ---> Using cache
 ---> f7cd726aa130
Step 4/6 : COPY --from=plugin /kaniko/executor /usr/local/bin/kaniko
 ---> Using cache
 ---> 8fcac536196f
Step 5/6 : RUN mkdir -p /kaniko/.docker/
 ---> Using cache
 ---> 1afce75446a3
Step 6/6 : COPY config.json /kaniko/.docker/
 ---> Using cache
 ---> 4a2873a75a7c
Successfully built 4a2873a75a7c
Successfully tagged registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko:latest
 
[root@localhost ~]# docker push registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko:latest
The push refers to repository [registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko]
0cb4fb37580b: Pushed
c9dbd3644e5a: Pushed
33a2214b827c: Pushed
c5077dd8160b: Pushed
948c7f86fd48: Pushed
403aab81b15b: Pushed
7bff100f35cb: Pushed
latest: digest: sha256:b5642885f1333a757625cbe36a9b1102aba27646f2572acab79861a74dba1050 size: 1783

Kaniko 更多參數(shù)

  • --context:指定構(gòu)建上下文的路徑。默認(rèn)情況下,上下文是Dockerfile所在的目錄。可簡寫 -c
  • --dockerfile:指定要使用的Dockerfile的路徑。默認(rèn)情況下,Kaniko會(huì)在上下文中查找名為Dockerfile的文件。可簡寫 -f
  • --destination:指定構(gòu)建完成后的Docker鏡像名稱,可以包括標(biāo)簽。例如:myregistry/myimage:tag。可簡寫 -d
  • --cache:啟用或禁用Kaniko的構(gòu)建緩存功能。默認(rèn)情況下,緩存是啟用的。
  • --cache-ttl:設(shè)置構(gòu)建緩存的生存時(shí)間。例如,--cache-ttl=10h表示緩存在構(gòu)建完成后的10小時(shí)內(nèi)有效。
  • --cache-repo:指定用于存儲(chǔ)構(gòu)建緩存的Docker倉庫。默認(rèn)情況下,緩存存儲(chǔ)在本地。
  • --cache-dir:指定用于存儲(chǔ)構(gòu)建緩存的本地目錄路徑。
  • --skip-tls-verify:跳過TLS證書驗(yàn)證,用于不安全的Docker倉庫。
  • --build-arg:傳遞構(gòu)建參數(shù)給Dockerfile中的ARG指令。例如:--build-arg key=value。
  • --insecure:允許從不受信任的Registry拉取基礎(chǔ)鏡像。
  • --insecure-registry:允許連接到不受信任的Registry。
  • --verbosity:設(shè)置構(gòu)建的詳細(xì)程度,可以是panic、error、warning、info、debug或trace。
  • --digest-file:指定一個(gè)文件,用于存儲(chǔ)構(gòu)建生成的鏡像的摘要(Digest)。
  • --oci-layout-path:指定OCI(Open Container Initiative)布局文件的路徑,用于存儲(chǔ)構(gòu)建過程的元數(shù)據(jù)。

更多參考 官方:https://github.com/GoogleContainerTools/kaniko#additional-flags

Kaniko 構(gòu)建緩存

--cache-copy-layers 此參數(shù)在執(zhí)行命令之前 kaniko 會(huì)檢查層的緩存,如果存在 kaniko將拉取并提取緩存層,而不是執(zhí)行命令。如果沒有 kaniko將執(zhí)行命令,然后將新創(chuàng)建的層推送到緩存。用戶可以通過設(shè)置 --cache=true 參數(shù)決定是否啟用緩存,并且可以通過--cache-repo 標(biāo)志提供用于存儲(chǔ)緩存層的遠(yuǎn)程存儲(chǔ)庫,如果未提供此標(biāo)志則將從提供的 –destination 推斷緩存的repo。通常  --cache=true --cache-copy-layers=true 這兩個(gè)參數(shù)同時(shí)使用。

CI/CD 中使用Kaniko

jenkins pipline 中使用:

基于 Kubernetes 的 動(dòng)態(tài)生成 Jenkins Slave pod CI/CD,以下是一個(gè)簡化的Pipeline示例:

// 鏡像倉庫地址
def registry = "registry.cn-shanghai.aliyuncs.com/kubesre02/demo"
 
pipeline {
    agent {
        kubernetes {
      yaml """
kind: Pod
metadata:
  name: kaniko
spec:
  containers:
  - name: kaniko
    # 使用自定義的 kaniko 鏡像
    image: registry.cn-shanghai.aliyuncs.com/kubesre02/kaniko:latest
    imagePullPolicy: Always
    command:
    - cat
    tty: true
"""
      }
    }
   
    stages {
        stage('拉代碼') {
            steps {
                git clone ...
            }
        }
       
        stage('構(gòu)建鏡像') {
            steps {
                // 使用 kaniko 來構(gòu)建鏡像
                container(name: 'kaniko') {
                    Dockerfile 內(nèi)容...
                    sh "kaniko -f Dockerfile -c ./ -d $registry:$BUILD_NUMBER --force"
                }
            }
        }
         
        stage('部署') {
            steps {
                部署...
            }
        }
         
    }
}

可以看出,Kaniko 是非常適合在Kubernetes平臺上構(gòu)建容器鏡像的,而且易于集成到 DevOps Jenkins pipeline 里,好了,kaniko 就介紹到這里。

責(zé)任編輯:趙寧寧 來源: 云原生運(yùn)維圈
相關(guān)推薦

2021-12-21 15:17:53

Kubernetes緩存Linux

2019-09-10 13:34:30

Linux操作系統(tǒng)軟件

2017-08-08 11:14:47

AzureKubernetes多容器應(yīng)用程序

2022-08-10 10:46:13

?CrossplanKubernete插件

2022-08-11 08:41:31

CrossplaneVCluster

2019-10-30 12:00:02

Ansible容器與云容器鏡像

2022-03-18 08:48:35

Kubernetes臨時(shí)容器運(yùn)維

2024-04-10 11:50:28

2022-04-30 11:10:40

Nacos集群環(huán)境企業(yè)

2020-07-16 21:00:05

樹莓派Kubernetes集Linux

2021-07-06 07:46:16

KubernetesRook存儲(chǔ)

2024-02-20 08:08:43

2014-12-24 09:35:29

Docker集群管理kubernetes

2015-12-30 14:50:45

Kubernetes容器技術(shù)Docker

2021-02-03 15:10:38

GoKubernetesLinux

2023-03-30 09:17:42

KubesprayKubernetesLinux

2020-07-08 08:03:37

KubernetesLens集群

2019-05-22 15:36:22

Linux容器鏡像

2022-11-30 09:39:44

KubeadmDebian 11Kubernetes

2022-07-23 21:31:24

KubernetesLinux開源
點(diǎn)贊
收藏

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

这里只有精品在线播放| 亚洲成人免费在线观看| 亚洲aaa激情| 黄网站免费在线| 国产免费av一区二区三区| 欧美午夜影院一区| 中国黄色录像片| 天堂中文资源在线观看| 日本美女视频一区二区| 久99久在线视频| 国产免费一区二区三区网站免费| 国产亚洲观看| 色综合激情五月| 久久免费一级片| 国产视频在线看| 国产麻豆视频精品| 国产精品高清在线观看| 一本大道东京热无码aⅴ| 久久精品国产亚洲av久| 色噜噜成人av在线| 色狠狠综合天天综合综合| 成人黄色片免费| 国产三级在线看| 99在线热播精品免费| 成人h视频在线观看播放| 四虎精品永久在线| 亚洲经典自拍| 欧美另类在线播放| www.xx日本| 国产精品一国产精品| 亚洲丁香婷深爱综合| 国产成人在线综合| 亚洲第一会所001| 欧美日韩中文字幕在线| 久久男人资源站| 在线看女人毛片| 中文字幕亚洲不卡| 日韩中文字幕av在线| www.香蕉视频| 国产精品一区二区视频| 国产欧美婷婷中文| 在线播放国产一区| 日韩成人一级大片| 国产成人啪精品视频免费网| 欧美bbbbbbbbbbbb精品| 伊人久久大香线蕉综合热线| 九九久久久久久久久激情| 男人av资源站| 97视频精品| 视频在线一区二区| 大吊一区二区三区| 久久亚洲精品中文字幕蜜潮电影| 国产午夜精品美女视频明星a级| 亚洲av片不卡无码久久| 外国成人在线视频| 亚洲毛片在线观看.| 亚洲一区二区乱码| 亚洲毛片免费看| 亚洲美女激情视频| 非洲一级黄色片| 欧美在线电影| 色婷婷av一区二区三区在线观看| 激情无码人妻又粗又大| 人人狠狠综合久久亚洲婷| 中文字幕久久亚洲| 中文字幕美女视频| 欧美国内亚洲| 国内精品久久久久影院优| 日操夜操天天操| 久久婷婷av| 国产精品久久激情| 国产精品久久久久久久成人午夜 | 婷婷五月综合缴情在线视频| missav|免费高清av在线看| 亚洲成人av电影在线| 日韩激情免费视频| 成人在线高清| 日韩欧美卡一卡二| 呦呦视频在线观看| 欧美三级情趣内衣| 久久亚洲电影天堂| 99免费在线观看| 久久久夜夜夜| 91在线观看免费| 国产小视频免费观看| 久久婷婷国产综合精品青草| 一区二区三区在线观看www| av在线播放观看| 欧美午夜激情在线| 亚洲va综合va国产va中文| 粉嫩一区二区三区四区公司1| 亚洲精品视频播放| 欧美手机在线观看| 亚洲精品在线二区| 国产精品欧美激情| 免费a视频在线观看| 久久久精品国产99久久精品芒果| 国产日韩视频在线播放| 免费看男女www网站入口在线| 欧美性淫爽ww久久久久无| 欧美xxxx日本和非洲| 欧美综合在线视频观看 | 国产直播在线| 欧美日韩二区三区| www.超碰97| 亚洲精品小说| 国产精品jizz在线观看麻豆| а√中文在线资源库| 国产午夜精品美女毛片视频| 欧美极品少妇无套实战| www.一区| 亚洲免费影视第一页| 老妇女50岁三级| 日韩激情在线观看| 精品无人区一区二区三区| 免费黄色在线网站| 色婷婷久久99综合精品jk白丝| 女同性αv亚洲女同志| 99精品在线免费在线观看| 欧美亚洲伦理www| 精品国自产在线观看| 国产精品久久久久影院老司| av免费播放网址| 国产成人在线中文字幕| 久久久精品久久| 天堂免费在线视频| 91色porny在线视频| 国产xxxx振车| 久久99精品久久久野外观看| 最近中文字幕日韩精品| 无码人妻aⅴ一区二区三区有奶水| 丁香婷婷综合五月| 97在线免费视频观看| 亚洲国产天堂| 日韩专区中文字幕| 波多野结衣理论片| 国产欧美日韩一区二区三区在线观看| 国产日本在线播放| 丁香婷婷成人| 久久久这里只有精品视频| 999国产精品视频免费| 综合色中文字幕| 中文字幕一区久久| 999国产精品视频| 国产剧情日韩欧美| 一区二区三区视频网站| 欧美亚洲国产bt| 亚洲女同二女同志奶水| 久久爱另类一区二区小说| 亚洲三区四区| 懂色av色香蕉一区二区蜜桃| 欧美xxxx做受欧美.88| 国产免费高清视频| 一区二区三区四区精品在线视频| 真实乱偷全部视频| 精品999日本| 国产高清在线一区| 高清在线视频不卡| 亚洲深夜福利在线| 国产在线观看第一页| 国产精品免费丝袜| 伊人免费视频二| 亚洲无线视频| 裸模一区二区三区免费| 精品三区视频| 日韩亚洲欧美中文高清在线| jizz国产视频| 精品成人乱色一区二区| 一区二区三区久久久久| 久久99精品久久久久久国产越南 | 鲁丝一区二区三区免费| 国产高清不卡| 日韩一区二区三区xxxx| 国产99久久九九精品无码免费| 亚洲国产裸拍裸体视频在线观看乱了 | 国产性70yerg老太| 久久综合九色综合97婷婷 | 国产中文字幕精品| 成人免费a级片| 米奇777超碰欧美日韩亚洲| 国产精品自拍偷拍| 蜜臀av在线| 夜夜躁日日躁狠狠久久88av| 99国产精品久久久久99打野战| 亚洲一区日韩精品中文字幕| 四虎永久免费在线观看| 激情成人综合网| av动漫在线看| 97人人精品| 欧美一区二区三区在线播放 | 中文字幕在线观看二区| 国产成人亚洲精品青草天美| 大肉大捧一进一出好爽动态图| 99久久精品费精品国产风间由美| 精品国产一区二区三| 欧美xxxx性| 91高清视频免费观看| 久久bbxx| 亚洲人高潮女人毛茸茸| 精品二区在线观看| 在线视频欧美精品| 日韩av电影网| 亚洲日本乱码在线观看| 久久成人激情视频| 成人免费av在线| 91 在线视频观看| 玖玖在线精品| 国产人妻777人伦精品hd| 国产电影一区二区在线观看| 欧美久久久久久久| 91成人噜噜噜在线播放| 国产精品视频自拍| 免费h在线看| 久久久久久久久爱| 国产三级在线播放| 中文字幕久热精品视频在线| 亚洲av成人精品一区二区三区在线播放 | 午夜激情小视频| 日韩欧美一区二区三区在线| 中文字幕在线观看1| 欧美午夜片欧美片在线观看| 国产一级生活片| 一区二区在线电影| 潘金莲一级黄色片| 中文av字幕一区| 91成人在线免费视频| 久久综合久久鬼色| 国产chinese中国hdxxxx| 国产成人午夜电影网| 91丨九色丨蝌蚪| 久久99热99| 三级视频中文字幕| 秋霞国产午夜精品免费视频| 欧美日韩第二页| 久久国产日韩| 日本三级免费网站| 亚洲欧美久久| 亚洲色欲综合一区二区三区| 99热免费精品在线观看| 国产极品在线视频| 国产日韩精品视频一区二区三区 | 美女网站视频一区| 日本中文字幕不卡免费| 男人最爱成人网| 国产99在线|中文| 日韩中文视频| 国产精品午夜视频| 亚洲爽爆av| 97久久人人超碰caoprom欧美| 国产一区二区在线观| 99国产超薄丝袜足j在线观看 | 性欧美18一19内谢| 久久久久久久久久久久久久久久久久| 中文字幕日韩精品一区二区| 国产精品精品| 毛片在线视频观看| 极品中文字幕一区| jizzjizz国产精品喷水| 免费日韩精品中文字幕视频在线| 男人搞女人网站| 久久99日本精品| 2018国产精品| 26uuu国产日韩综合| 国产又粗又猛又爽又黄av| 国产精品久久久久久户外露出| 激情无码人妻又粗又大| 亚洲一二三四区| 中文字幕精品无码一区二区| 欧美系列日韩一区| 成 人 黄 色 片 在线播放| 亚洲国产成人精品女人久久久 | 亚洲成人777777| 亚洲国产精品va在线观看黑人| 天堂av2024| 亚洲性线免费观看视频成熟| 国产精品扒开做爽爽爽的视频| 欧美福利视频在线| 91av亚洲| 91在线观看免费网站| 欧美激情影院| 在线不卡视频一区二区| 伊人狠狠色j香婷婷综合| av动漫免费看| 国产一区亚洲一区| 国产白嫩美女无套久久| 中文字幕一区二区三区在线不卡 | 超碰97在线人人| 久久99国产成人小视频| 97精品国产97久久久久久粉红| 亚洲三级色网| 99中文字幕在线| 91啪亚洲精品| 欧美日韩一级大片| 91久久线看在观草草青青 | 亚洲人成绝费网站色www| 国产区在线看| 日本电影亚洲天堂| 日韩精品一区二区三区中文| 青青成人在线| 极品av少妇一区二区| 最新免费av网址| 久久色在线观看| 久久一二三四区| 欧美亚洲一区三区| 天天干天天舔天天射| 久久国产精品影片| 国内自拍亚洲| 久久综合久久久| 国产精品av一区二区| 在线观看高清免费视频| 97久久超碰国产精品| 麻豆疯狂做受xxxx高潮视频| 欧美三日本三级三级在线播放| 午夜在线视频免费| 欧美国产日本高清在线 | 久久久成人av毛片免费观看| 国产福利久久精品| 欧美成人一区二免费视频软件| av在线无限看| 国产亚洲精品7777| 国产成人在线免费观看视频| 欧美一区二区三区性视频| av大片在线观看| 日韩免费观看av| 偷拍自拍一区| 日韩精品一区二区三区久久| 成人av第一页| 一级片免费网址| 欧美成人乱码一区二区三区| 怡红院av在线| http;//www.99re视频| 欧美激情亚洲| 激情小说欧美色图| 亚洲精品日产精品乱码不卡| 国产精品欧美亚洲| 国产亚洲欧美日韩在线一区| 色www免费视频| 久久久国际精品| 黄色av网站免费观看| 亚洲人成电影网站色www| 2022成人影院| 日本精品一区二区三区不卡无字幕| 国产视频一区免费看| 亚洲精品女人久久久| 午夜伦欧美伦电影理论片| 黑人乱码一区二区三区av| 久久久免费av| 果冻天美麻豆一区二区国产| 蜜桃传媒一区二区三区| av激情亚洲男人天堂| 1级黄色大片儿| 亚洲欧美日韩久久久久久| 欧美中文字幕精在线不卡| 日韩一区二区三区资源| 精品一区二区在线看| 草视频在线观看| 亚洲精品一区二区三区福利| 丝袜诱惑一区二区| 秋霞在线观看一区二区三区| 日av在线不卡| 国产免费无码一区二区视频 | 神马午夜在线观看| 97avcom| 免费看成人哺乳视频网站| 手机在线看福利| 亚洲美女视频一区| 天天操天天操天天操| 国产成人涩涩涩视频在线观看| 国产高清一区| 中文成人无字幕乱码精品区| 日本乱人伦aⅴ精品| 亚洲xxxxxx| 都市激情久久久久久久久久久| 午夜一区二区三区不卡视频| 国产91丝袜美女在线播放| 欧美一区欧美二区| 国语对白在线刺激| 日本一区二区三区在线视频| 精品一区二区三区不卡| 久久综合激情网| 亚洲女人天堂av| 国产精品99久久免费| 欧美综合在线播放| 国产精品区一区二区三区| www.日韩在线观看| 日韩av手机在线看| 亚洲综合中文| 美女又爽又黄视频毛茸茸| 欧美日韩精品欧美日韩精品一| 亚洲第一图区| 欧美精品一区在线| 国产成人精品免费在线| 无码人妻精品一区二区三区蜜桃91 | √8天堂资源地址中文在线| 日本一区二区视频| 成人av在线一区二区三区| 在线观看毛片网站| 91po在线观看91精品国产性色| 天天影视欧美综合在线观看| 国内精品久久99人妻无码|