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

如何絲滑般將 Kubernetes 容器運行時從 Docker 切換成 Containerd

云計算
前面我們了解了 containerd 的發展歷史和基本使用方式,本節我們就來嘗試下使用 containerd 來作為 Kubernetes 集群的容器運行時。

[[418144]]

前面我們了解了 containerd 的發展歷史和基本使用方式,本節我們就來嘗試下使用 containerd 來作為 Kubernetes 集群的容器運行時。

前面我們安裝的集群默認使用的是 Docker 作為容器運行時,那么應該如何將容器運行時從 Docker 切換到 containerd 呢?

維護節點

首先標記需要切換的節點為維護模式,強制驅逐節點上正在運行的 Pod,這樣可以最大程度降低切換過程中影響應用的正常運行,比如我們先將 node1 節點切換到 containerd。

首先使用 kubectl cordon 命令將 node1 節點標記為 unschedulable 不可調度狀態:

  1. # 將 node1 標記為 unschedulable 
  2. ➜  ~ kubectl cordon node1 
  3. node/node1 cordoned 
  4. ➜  ~ kubectl get nodes 
  5. NAME     STATUS                     ROLES    AGE   VERSION 
  6. master   Ready                      master   85d   v1.19.11 
  7. node1    Ready,SchedulingDisabled   <none>   85d   v1.19.11 
  8. node2    Ready                      <none>   85d   v1.19.11 

執行完上面的命令后,node1 節點變成了一個 SchedulingDisabled 狀態,表示不可調度,這樣新創建的 Pod 就不會調度到當前節點上來了。

接下來維護 node1 節點,使用 kubectl drain 命令來維護節點并驅逐節點上的 Pod:

  1. # 維護 node1 節點,驅逐 Pod 
  2. ➜  ~ kubectl drain node1 --ignore-daemonsets 
  3. node/node1 already cordoned 
  4. WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-mzdgl, kube-system/kube-proxy-vddh9, lens-metrics/node-exporter-2g4hr 
  5. evicting pod "kiali-85c8cdd5b5-27cwv" 
  6. evicting pod "jenkins-587b78f5cd-9gvn8" 
  7. evicting pod "argocd-application-controller-0" 
  8. pod/argocd-application-controller-0 evicted 
  9. pod/kiali-85c8cdd5b5-27cwv evicted 
  10. pod/jenkins-587b78f5cd-9gvn8 evicted 
  11. node/node1 evicted 

上面的命令會強制將 node1 節點上的 Pod 進行驅逐,我們加了一個 --ignore-daemonsets 的參數可以用來忽略 DaemonSet 控制器管理的 Pods,因為這些 Pods 不用驅逐到其他節點去,當節點驅逐完成后接下來我們就可以來對節點進行維護操作了,除了切換容器運行時可以這樣操作,比如我們需要變更節點配置、升級內核等操作的時候都可以先將節點進行驅逐,然后再進行維護。

切換 containerd

接下來停掉 docker、containerd 和 kubelet:

  1. ➜  ~ systemctl stop kubelet 
  2. ➜  ~ systemctl stop docker 
  3. ➜  ~ systemctl stop containerd 

因為我們安裝的 Docker 默認安裝使用了 containerd 作為后端的容器運行時,所以不需要單獨安裝 containerd 了,當然你也可以將 Docker 和 containerd 完全卸載掉,然后重新安裝,這里我們選擇直接使用之前安裝的 containerd。

因為 containerd 中默認已經實現了 CRI,但是是以 plugin 的形式配置的,以前 Docker 中自帶的 containerd 默認是將 CRI 這個插件禁用掉了的(使用配置 disabled_plugins = ["cri"]),所以這里我們重新生成默認的配置文件來覆蓋掉:

  1. ➜  ~ containerd config default > /etc/containerd/config.toml 

前面我們已經介紹過上面的配置文件了,首先我們修改默認的 pause 鏡像為國內的地址,替換 [plugins."io.containerd.grpc.v1.cri"] 下面的 sandbox_image:

  1. [plugins."io.containerd.grpc.v1.cri"
  2.   sandbox_image = "registry.aliyuncs.com/k8sxio/pause:3.2" 
  3.   ...... 

同樣再配置下鏡像倉庫的加速器地址:

  1. [plugins."io.containerd.grpc.v1.cri".registry] 
  2.   [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 
  3.     [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"
  4.       endpoint = ["https://bqr1dr1n.mirror.aliyuncs.com"
  5.     [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"
  6.       endpoint = ["https://registry.aliyuncs.com/k8sxio"

接下來修改 kubelet 配置,將容器運行時配置為 containerd,打開 /etc/sysconfig/kubelet 文件,在該文件中可以添加一些額外的 kubelet 啟動參數,配置如下所示:

  1. KUBELET_EXTRA_ARGS="--container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock" 

上面的配置中我們增加了兩個參數,--container-runtime 參數是用來指定使用的容器運行時的,可選值為 docker 或者 remote,默認是 docker,由于我們這里使用的是 containerd 這種容器運行時,所以配置為 remote 值(也就是除 docker 之外的容器運行時都應該指定為 remote),然后第二個參數 --container-runtime-endpoint 是用來指定遠程的運行時服務的 endpiont 地址的,在 Linux 系統中一般都是使用 unix 套接字的形式,比如這里我們就是指定連接 containerd 的套接字地址 unix:///run/containerd/containerd.sock。

  • 其實還應該配置一個 --image-service-endpoint 參數用來指定遠程 CRI 的鏡像服務地址,如果沒有指定則默認使用 --container-runtime-endpoint 的值了,因為 CRI 都會實現容器和鏡像服務的。

配置完成后重啟 containerd 和 kubelet 即可:

  1. ➜  ~ systemctl daemon-reload 
  2. ➜  ~ systemctl restart containerd 
  3. ➜  ~ systemctl restart kubelet 

重啟完成后查看節點狀態是否正常:

  1. ➜  ~ kubectl get nodes -o wide 
  2. NAME     STATUS                     ROLES    AGE   VERSION    INTERNAL-IP      EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION                CONTAINER-RUNTIME 
  3. master   Ready                      master   85d   v1.19.11   192.168.31.30    <none>        CentOS Linux 7 (Core)   3.10.0-1160.25.1.el7.x86_64   docker://19.3.9 
  4. node1    Ready,SchedulingDisabled   <none>   85d   v1.19.11   192.168.31.95    <none>        CentOS Linux 7 (Core)   3.10.0-1160.25.1.el7.x86_64   containerd://1.4.4 
  5. node2    Ready                      <none>   85d   v1.19.11   192.168.31.215   <none>        CentOS Linux 7 (Core)   3.10.0-1160.25.1.el7.x86_64   docker://19.3.9 

獲取節點的時候加上 -o wide 可以查看節點的更多信息,從上面對比可以看到 node1 節點的容器運行時已經切換到 containerd://1.4.4 了。

最后把 node1 節點重新加回到集群中來允許調度 Pod 資源:

  1. ➜  ~ kubectl uncordon node1 
  2. node/node1 uncordoned 
  3. ➜  ~ kubectl get nodes 
  4. NAME     STATUS   ROLES    AGE   VERSION 
  5. master   Ready    master   85d   v1.19.11 
  6. node1    Ready    <none>   85d   v1.19.11 
  7. node2    Ready    <none>   85d   v1.19.11 

用同樣的方法再去處理其他節點即可將整個集群切換成容器運行時 containerd 了。

crictl

現在我們可以 node1 節點上使用 ctr 命令來管理 containerd,查看多了一個名為 k8s.io 的命名空間:

  1. ➜  ~ ctr ns ls 
  2. NAME   LABELS 
  3. k8s.io 
  4. moby 

上文我們已經介紹 kubernetes 集群對接的 containerd 所有資源都在 k8s.io 的命名空間下面,而 docker 的則默認在 moby 下面,當然現在 moby 下面沒有任何的數據了,但是在 k8s.io 命名空間下面就有很多鏡像和容器資源了:

  1. ➜  ~ ctr -n moby c ls 
  2. CONTAINER    IMAGE    RUNTIME 
  3. ➜  ~ ctr -n moby i ls 
  4. REF TYPE DIGEST SIZE PLATFORMS LABELS 
  5. ➜  ~ ctr -n moby t ls 
  6. TASK    PID    STATUS 
  7. ctr -n k8s.io i ls -q 
  8. docker.io/library/busybox:latest 
  9. docker.io/library/busybox@sha256:0f354ec1728d9ff32edcd7d1b8bbdfc798277ad36120dc3dc683be44524c8b60 
  10. quay.io/coreos/flannel:v0.14.0 
  11. quay.io/coreos/flannel@sha256:4a330b2f2e74046e493b2edc30d61fdebbdddaaedcb32d62736f25be8d3c64d5 
  12. registry.aliyuncs.com/k8sxio/pause:3.2 
  13. ...... 

我們當然可以直接使用 ctr 命令來直接管理鏡像或容器資源,但是我們在使用過程中明顯可以感覺到該工具沒有 docker CLI 方便,從使用便捷性和功能性上考慮,我們更推薦使用 crictl 作為管理工具,crictl 為 CRI 兼容的容器運行時提供 CLI,這允許 CRI 運行時開發人員在無需設置 Kubernetes 組件的情況下調試他們的運行時。

接下來我們就先簡單介紹下如何使用 crictl 工具來提升管理容器運行時的效率。

安裝

首先我們需要先安裝 crictl 工具,直接從 cri-tools 的 release 頁面下載對應的二進制包,解壓放入 PATH 路徑下即可:

  1. ➜  ~ VERSION="v1.22.0" 
  2. ➜  ~ wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz 
  3. # 如果有限制,也可以替換成下面的 URL 加速下載 
  4. # wget https://download.fastgit.org/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz 
  5. ➜  ~ tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin 
  6. ➜  ~ rm -f crictl-$VERSION-linux-amd64.tar.gz 
  7. ➜  ~ crictl -v 
  8. crictl version v1.22.0 

到這里證明 crictl 工具安裝成功了。

用法

crictl 安裝完成后,接下來我們來了解下該工具的一些常見使用方法。

首先需要修改下默認的配置文件,默認為 /etc/crictl.yaml,在文件中指定容器運行時和鏡像的 endpoint 地址,內容如下所示:

  1. runtime-endpoint: unix:///var/run/containerd/containerd.sock 
  2. image-endpoint: unix:///var/run/containerd/containerd.sock 
  3. debug: false 
  4. pull-image-on-createfalse 
  5. disable-pull-on-run: false 

配置完成后就可以使用 crictl 命令了。

獲取 Pod 列表

通過 crictl pods 命令可以獲取當前節點上運行的 Pods 列表,如下所示:

  1. ➜  ~ crictl pods 
  2. POD ID              CREATED             STATE               NAME                       NAMESPACE           ATTEMPT             RUNTIME 
  3. cb18081b33933       39 minutes ago      Ready               kube-flannel-ds-mzdgl      kube-system         1                   (default
  4. 95d6004c55902       40 minutes ago      Ready               node-exporter-2g4hr        lens-metrics        1                   (default
  5. cfae80b3209db       40 minutes ago      Ready               kube-proxy-vddh9           kube-system         1                   (default
  6. 99ac2583da87f       40 minutes ago      Ready               jenkins-587b78f5cd-dfzns   kube-ops            0                   (default
  7. 07ebdc51f1def       45 minutes ago      NotReady            node-exporter-2g4hr        lens-metrics        0                   (default
  8. bec027b98f194       45 minutes ago      NotReady            kube-proxy-vddh9           kube-system         0                   (default
  9. b44b5ec385053       45 minutes ago      NotReady            kube-flannel-ds-mzdgl      kube-system         0                   (default

還可以使用 --name 參數獲取指定的 Pod:

  1. ➜  ~ crictl pods --name kube-flannel-ds-mzdgl 
  2. POD ID              CREATED             STATE               NAME                    NAMESPACE           ATTEMPT             RUNTIME 
  3. cb18081b33933       About an hour ago   Ready               kube-flannel-ds-mzdgl   kube-system         1                   (default

同樣也可以根據標簽來篩選 Pod 列表:

  1. ➜  ~ crictl pods --label app=flannel 
  2. POD ID              CREATED             STATE               NAME                    NAMESPACE           ATTEMPT             RUNTIME 
  3. cb18081b33933       About an hour ago   Ready               kube-flannel-ds-mzdgl   kube-system         1                   (default

獲取鏡像列表

使用 crictl images 命令可以獲取所有的鏡像:

  1. ➜  ~ crictl images 
  2. IMAGE                                     TAG                 IMAGE ID            SIZE 
  3. docker.io/jenkins/jenkins                 lts                 3b4ec91827f28       303MB 
  4. docker.io/library/busybox                 latest              69593048aa3ac       771kB 
  5. quay.io/coreos/flannel                    v0.14.0             8522d622299ca       21.1MB 
  6. quay.io/prometheus/node-exporter          v1.0.1              0e0218889c33b       13MB 
  7. registry.aliyuncs.com/k8sxio/kube-proxy   v1.19.11            732e0635ac9e0       49.3MB 
  8. registry.aliyuncs.com/k8sxio/pause        3.2                 80d28bedfe5de       300kB 

同樣在命令后面可以加上 -v 參數來顯示鏡像的詳細信息:

  1. ➜  ~ crictl images -v 
  2. ID: sha256:3b4ec91827f28ed482b08f6e379c56ea2308967d10aa4f458442c922e0771f87 
  3. RepoTags: docker.io/jenkins/jenkins:lts 
  4. RepoDigests: docker.io/jenkins/jenkins@sha256:abcd55c9f19c85808124a4d82e3412719cd5c511c03ebd7d4210e9fa9e8f1029 
  5. Size: 302984002 
  6. Username: jenkins 
  7.  
  8. ID: sha256:69593048aa3acfee0f75f20b77acb549de2472063053f6730c4091b53f2dfb02 
  9. RepoTags: docker.io/library/busybox:latest 
  10. RepoDigests: docker.io/library/busybox@sha256:0f354ec1728d9ff32edcd7d1b8bbdfc798277ad36120dc3dc683be44524c8b60 
  11. Size: 770886 
  12.  
  13. ...... 

獲取容器列表

使用 crictl ps 命令可以獲取正在運行的容器列表:

  1. ➜  ~ crictl ps 
  2. CONTAINER           IMAGE               CREATED             STATE               NAME                ATTEMPT             POD ID 
  3. c8474738e4587       3b4ec91827f28       About an hour ago   Running             jenkins             0                   99ac2583da87f 
  4. 0f9c826f87ef8       8522d622299ca       About an hour ago   Running             kube-flannel        1                   cb18081b33933 
  5. da444f718d37b       0e0218889c33b       About an hour ago   Running             node-exporter       1                   95d6004c55902 
  6. a484a8a69ea59       732e0635ac9e0       About an hour ago   Running             kube-proxy          1                   cfae80b3209db 

還有更多其他可選參數,可以通過 crictl ps -h 獲取,比如顯示最近創建的兩個容器:

  1. ➜  ~ crictl ps -n 2 
  2. CONTAINER           IMAGE               CREATED             STATE               NAME                ATTEMPT             POD ID 
  3. c8474738e4587       3b4ec91827f28       About an hour ago   Running             jenkins             0                   99ac2583da87f 
  4. 0f9c826f87ef8       8522d622299ca       About an hour ago   Running             kube-flannel        1                   cb18081b33933 

使用 -s 選項按照狀態進行過濾:

  1. ➜  ~ crictl ps -s Running 
  2. CONTAINER           IMAGE               CREATED             STATE               NAME                ATTEMPT             POD ID 
  3. c8474738e4587       3b4ec91827f28       About an hour ago   Running             jenkins             0                   99ac2583da87f 
  4. 0f9c826f87ef8       8522d622299ca       About an hour ago   Running             kube-flannel        1                   cb18081b33933 
  5. da444f718d37b       0e0218889c33b       About an hour ago   Running             node-exporter       1                   95d6004c55902 
  6. a484a8a69ea59       732e0635ac9e0       About an hour ago   Running             kube-proxy          1                   cfae80b3209db 

在容器中執行命令

crictl 也有類似 exec 的命令支持,比如在容器 ID 為 c8474738e4587 的容器中執行一個 date 命令:

  1. ➜  ~ crictl exec -it c8474738e4587 date 
  2. Tue 17 Aug 2021 08:23:02 AM UTC 

輸出容器日志

還可以獲取容器日志信息:

  1. ➜  ~ crictl logs c8474738e4587 
  2. ...... 
  3. 2021-08-17 07:19:51.846+0000 [id=155]   INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Periodic background build discarder 
  4. 2021-08-17 07:19:51.854+0000 [id=155]   INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Periodic background build discarder. 6 ms 
  5. 2021-08-17 08:19:51.846+0000 [id=404]   INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Periodic background build discarder 
  6. 2021-08-17 08:19:51.848+0000 [id=404]   INFO    hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Periodic background build discarder. 1 ms 

和 kubectl logs 類似于,還可以使用 -f 選項來 Follow 日志輸出,--tail N 也可以指定輸出最近的 N 行日志。

資源統計

使用 crictl stats 命令可以列舉容器資源的使用情況:

  1. ➜  ~ crictl stats 
  2. CONTAINER           CPU %               MEM                 DISK                INODES 
  3. 0f9c826f87ef8       0.00                21.2MB              0B                  17 
  4. a484a8a69ea59       0.00                23.55MB             12.29kB             25 
  5. c8474738e4587       0.08                413.2MB             3.338MB             12 
  6. da444f718d37b       0.00                14.46MB             0B                  16 

此外鏡像和容器相關的一些操作也都支持,比如:

  • 拉取鏡像:crictl pull
  • 運行 Pod:crictl runp
  • 運行容器:crictl run
  • 啟動容器:crictl start
  • 刪除容器:crictl rm
  • 刪除鏡像:crictl rmi
  • 刪除 Pod:crictl rmp
  • 停止容器:crictl stop
  • 停止 Pod:crictl stopp
  • ......

更多信息請參考 https://github.com/kubernetes-sigs/cri-tools。

CLI 對比

前面我們了解了圍繞鏡像、容器和 Pod 可以使用 docker、ctr、crictl 這些命令行工具進行管理,接下來我們就來比較下這幾個常用命令的使用區別。

需要注意的是通過 ctr containers create 命令創建的容器只是一個靜態的容器,所以還需要通過 ctr task start 來啟動容器進程。當然,也可以直接使用 ctr run 命令來創建并運行容器。在進入容器操作時,與 docker 不同的是,必須在 ctr task exec 命令后指定 --exec-id 參數,這個 id 可以隨便寫,只要唯一就行。另外,ctr 沒有 stop 容器的功能,只能暫停(ctr task pause)或者殺死(ctr task kill)容器。

另外要說明的是 crictl pods 列出的是 Pod 的信息,包括 Pod 所在的命名空間以及狀態。crictl ps 列出的是應用容器的信息,而 docker ps 列出的是初始化容器(pause 容器)和應用容器的信息,初始化容器在每個 Pod 啟動時都會創建,通常不會關注,所以 crictl 使用起來更簡潔明了一些。

日志配置

docker 和 containerd 除了在常用命令上有些區別外,在容器日志及相關參數配置方面也存在一些差異。

當使用 Docker 作為 Kubernetes 容器運行時的時候,容器日志的落盤是由 Docker 來完成的,日志被保存在類似 /var/lib/docker/containers/ 的目錄下面,kubelet 會在 /var/log/pods 和 /var/log/containers 下面創建軟鏈接,指向容器日志目錄下的容器日志文件。對應的日志相關配置可以通過配置文件進行指定,如下所示:

  1.     "log-driver""json-file"
  2.     "log-opts": { 
  3.         "max-size""100m"
  4.         "max-file: "10" 
  5.     } 

而當使用 containerd 作為 Kubernetes 容器運行時的時候,容器日志的落盤則由 kubelet 來完成了,被直接保存在 /var/log/pods/ 目錄下面,同時在 /var/log/containers 目錄下創建軟鏈接指向日志文件。同樣日志配置則是通過 kubelet 參數中進行指定的,如下所示:

  1. --container-log-max-files=10 --container-log-max-size="100Mi" 

所以如果我們有進行日志收集理論上來說兩種方案都是兼容的,基本上不用改動。

當然除了這些差異之外,可能對于我們來說鏡像構建這個環節是我們最需要關注的了。切換到 containerd 之后,需要注意 docker.sock 不再可用,也就意味著不能再在容器里面執行 docker 命令來構建鏡像了。所以接下來需要和大家介紹幾種不需要使用 docker.sock 也可以構建鏡像的方法。

 

責任編輯:姜華 來源: k8s技術圈
相關推薦

2024-03-20 10:46:00

云原生容器

2019-07-12 09:30:12

DashboardDockerDNS

2021-09-02 05:37:22

Containerd Kubernetes 容器

2023-08-29 08:20:35

Kubernete跨云容器

2021-10-22 00:09:16

Kubernetes容器接口

2021-09-11 15:38:23

容器運行鏡像開放

2021-03-24 06:26:00

kubeadmK8Scontainerd

2023-01-03 09:10:21

2021-08-30 06:27:21

工具容器Docker

2021-05-10 20:58:11

數據庫擴容用戶

2025-03-03 08:05:14

2020-08-11 08:59:20

容器虛擬化技術

2015-07-20 15:44:46

Swift框架MJExtension反射

2021-08-18 08:32:09

代碼運行時間示波器

2022-02-16 20:04:08

容器KubernetesShim

2023-10-31 08:00:13

K8sKubernetes

2024-03-21 09:15:58

JS運行的JavaScrip

2020-04-06 11:47:44

Linux命令腳本

2024-04-15 05:00:00

kubernete網絡容器

2023-04-03 13:01:14

UbuntuCRI-O
點贊
收藏

51CTO技術棧公眾號

乱一区二区av| 精品无人区麻豆乱码久久久| 亚洲韩国精品一区| 国产一区视频观看| 黑人精品无码一区二区三区AV| 亚洲国产网址| 欧美美女直播网站| 妺妺窝人体色777777| 免费在线稳定资源站| 免费在线一区观看| 欧美激情在线一区| 中文字幕人妻一区二区三区在线视频| 日韩福利影视| 午夜精品aaa| 亚洲区一区二区三区| 亚洲成人中文字幕在线| 日韩一区欧美二区| 欧美成人一二三| 欧美狂猛xxxxx乱大交3| 97国产超碰| 亚洲男人天堂网站| 久久99国产精品一区| 日韩一级免费视频| 久久成人18免费观看| 性色av一区二区三区| 欧美福利在线视频| 伊人久久大香线蕉综合网站| 欧美一区二区播放| 久久婷婷国产91天堂综合精品| 四虎影院观看视频在线观看| 中文字幕免费不卡| 久久婷婷开心| 亚洲av无码国产精品久久不卡| 丝袜诱惑制服诱惑色一区在线观看 | 久久久影院一区二区三区| 国产精品乱码久久久| 天堂va蜜桃一区二区三区| 久久全球大尺度高清视频| 久久一级免费视频| 免费成人av| 亚洲国产精品久久久久| 国产xxxxhd| www.久久久.com| 欧美天堂一区二区三区| 人妻有码中文字幕| 台湾佬中文娱乐网欧美电影| 亚洲成av人在线观看| 99亚洲国产精品| 日韩精品毛片| 国产精品久久久久国产精品日日 | 欧美艳星介绍134位艳星| 日韩hd视频在线观看| av免费观看不卡| 亚洲高清在线一区| 日韩一区二区三区免费观看| 国产精品久久久久久久99| 日韩三区在线| 欧美中文字幕亚洲一区二区va在线| 99蜜桃臀久久久欧美精品网站| 欧美办公室脚交xxxx| 天天综合色天天| www.射射射| 麻豆mv在线看| 欧美午夜片在线免费观看| 日韩人妻精品无码一区二区三区| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | 天天操综合网| 欧美成人激情视频| 精品99久久久久成人网站免费| 牛牛国产精品| 欧美精品久久久久| 国产成人啪精品午夜在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产免费一区二区三区免费视频| 久久丁香综合五月国产三级网站| 成人a在线观看| 国产情侣av在线| 国产福利视频一区二区三区| 国产日韩精品久久| 日本一二三区在线视频| 国产日韩欧美一区二区三区乱码| 特级西西444www大精品视频| 在线免费观看的av网站| 亚洲黄色片在线观看| 日韩日韩日韩日韩日韩| 青青青免费在线视频| 色天使色偷偷av一区二区| 手机在线免费观看毛片| www.久久草.com| 亚洲精品久久久一区二区三区| 国产网站无遮挡| 波多野结衣在线播放一区| 久久亚洲精品视频| 亚洲精品视频在线观看免费视频| 三级欧美在线一区| 亚洲伊人久久综合| 日韩一二三四| 亚洲免费观看高清完整版在线 | 国产精品视频免费一区| 国产日本在线视频| 一区二区三区在线视频免费观看| 女人天堂av手机在线| 欧美成人一二区| 亚洲国产第一页| 欧美a级片免费看| 亚洲精品社区| 成人www视频在线观看| 日批视频免费播放| 国产精品成人一区二区艾草| 伊人成色综合网| 日韩久久一区| 日韩精品在线观看一区二区| 永久免费看mv网站入口| 国产精品美女| 亚洲自拍偷拍网址| 大片免费播放在线视频| 亚洲国产视频直播| 69久久久久久| 日本一区福利在线| 色与欲影视天天看综合网| 日本中文字幕在线观看视频| 成人国产电影网| 日韩欧美一区二区三区久久婷婷| 黄色在线看片| 欧美一区二区三区四区在线观看| 少妇久久久久久久久久| 亚洲人www| 亚洲在线免费视频| 午夜免费播放观看在线视频| 日韩欧美在线视频日韩欧美在线视频 | 午夜dj在线观看高清视频完整版 | 国产劲爆久久| 久久精品国产欧美亚洲人人爽| jizz国产在线观看| 97久久超碰精品国产| 女人床在线观看| 日本中文字幕视频一区| 国产一区二区三区在线看| 国产小视频在线免费观看| 丁香六月综合激情| 成人区一区二区| 日韩一区二区三区高清在线观看| 日韩中文字幕国产| 中文字幕+乱码+中文| 国产亚洲美州欧州综合国| 国产aaa一级片| 欧美大片网址| 91精品国产高清久久久久久久久| 亚洲精品喷潮一区二区三区 | 久久久免费av| 久青草视频在线观看| 国产麻豆精品久久一二三| 亚洲永久一区二区三区在线| 78精品国产综合久久香蕉| 亚洲视频在线观看免费| 国产免费一级视频| 国产无遮挡一区二区三区毛片日本| 农村妇女精品一二区| 一区二区美女| 国产精品96久久久久久| 国产黄色片在线播放| 欧美午夜精品理论片a级按摩| 在线观看国产精品一区| 日韩精品福利网| 色综合久久av| 91精品国产色综合久久不卡粉嫩| 久久综合久久88| www.国产免费| 亚欧色一区w666天堂| 星空大象在线观看免费播放| 午夜在线精品| 五月天丁香综合久久国产| 999精品嫩草久久久久久99| 精品少妇v888av| 全国男人的天堂网| 色综合久久综合网欧美综合网| 久久久久久亚洲中文字幕无码| 日韩成人免费电影| 先锋影音男人资源| 国产精品网站在线看| 69av在线播放| 777电影在线观看| 91精品国产综合久久久蜜臀图片| 国产美女高潮视频| 岛国av在线一区| 亚洲色欲综合一区二区三区| 国产精品久久久久久久免费观看| 99久热re在线精品996热视频| 黄色在线免费观看网站| 永久免费精品影视网站| 99视频免费看| 婷婷综合另类小说色区| 在线观看天堂av| 丰满亚洲少妇av| 国产熟人av一二三区| 真实国产乱子伦精品一区二区三区| 国产精品传媒毛片三区| 欧美亚洲韩国| 欧美成人午夜激情视频| 免费在线黄色影片| 欧美一区2区视频在线观看| 狠狠人妻久久久久久| 18成人在线观看| 国产精品无码在线| 紧缚奴在线一区二区三区| 青娱乐自拍偷拍| 午夜激情久久| 欧美激情一区二区三区在线视频| 国产一区二区视频在线看| 欧美一区二区三区免费观看| а√中文在线8| 国产午夜精品视频| 熟妇人妻av无码一区二区三区| 欧美午夜片在线看| 国产成人在线观看网站| 亚洲精选一二三| 夜夜春很很躁夜夜躁| 成人18精品视频| 91丝袜超薄交口足| 日韩1区2区3区| 免费高清在线观看免费| 欧美二区不卡| 国产又爽又黄ai换脸| 国产精品密蕾丝视频下载| 国产一区二区不卡视频| 精品视频在线播放一区二区三区 | 国产在线精品一区二区不卡了 | 丁香花高清在线观看完整版| www.欧美免费| 超碰免费97在线观看| 日韩精品中文字幕有码专区| 亚洲成人一二三区| 91精品国产麻豆国产自产在线| 性高潮视频在线观看| 黑人巨大精品欧美一区二区三区| 久久久久成人网站| 亚洲在线一区二区三区| www日韩在线| 国产精品乱码妇女bbbb| 日韩精品无码一区二区三区久久久| av一区二区三区在线| 亚洲少妇一区二区三区| 国产成人av在线影院| 亚洲一二区在线观看| 精品一区二区三区蜜桃| 亚洲美女性囗交| 麻豆传媒一区二区三区| 国产又黄又猛又粗| 奇米一区二区三区| 国产aaaaa毛片| 日韩av一二三| 岛国毛片在线播放| 美女久久久精品| 91制片厂毛片| 九色综合国产一区二区三区| 久久精品电影网站| 风流少妇一区二区三区91| 日韩欧美电影一二三| xxxx国产精品| 精品国产一区二区国模嫣然| 狠狠人妻久久久久久综合麻豆| 精品国产乱码久久久久久夜甘婷婷| 亚洲国产综合网| 精品国产精品网麻豆系列| 女人18毛片水真多18精品| 日韩电影中文字幕在线| 欧美日韩免费做爰大片| 一本色道久久88亚洲综合88| 91吃瓜网在线观看| 久久999免费视频| av中文字幕在线观看第一页| 欧美做受高潮1| 91福利精品在线观看| 91久久精品美女高潮| www国产精品| 欧美久久久久久久| 爽成人777777婷婷| 成人在线视频一区二区三区| 亚洲色诱最新| 久久久久久国产精品美女| 91青青草视频| 欧美另类变人与禽xxxxx| www.麻豆av| 亚洲美女精品成人在线视频| 午夜伦全在线观看| 国内外成人免费激情在线视频| 美女福利一区二区| 91视频国产精品| 另类尿喷潮videofree| 婷婷五月色综合| 狠狠爱www人成狠狠爱综合网 | 少女频道在线观看免费播放电视剧| 亚洲**2019国产| 成人精品国产| 国产精品一区二区免费| 精品视频网站| 男人插女人视频在线观看| 日韩电影在线观看电影| 中文字幕99页| 国产精品二三区| 欧美精品亚洲精品日韩精品| 欧美日韩视频在线观看一区二区三区| 日本精品久久久久中文字幕| 99精品国产在热久久婷婷| 91小视频网站| 91小视频免费观看| 成人免费视频国产免费观看| 精品色蜜蜜精品视频在线观看| 91精品在线视频观看| 日韩电影在线观看永久视频免费网站| 欧美jizz18hd性欧美| 777精品视频| 精品国产亚洲一区二区三区| 日本黑人久久| 激情视频一区| 国产又粗又长又爽又黄的视频| 久久蜜桃av一区二区天堂| 国产在线成人精品午夜| 欧美日本在线视频| 美女做暖暖视频免费在线观看全部网址91| 精品中文字幕在线| 日韩五码电影| 色一情一区二区三区四区| 国产午夜精品一区二区三区欧美| 97免费公开视频| 日本一区二区三区久久久久久久久不 | 久久免费在线观看| 久久在线观看| 国产精品美女在线播放| 奇米精品一区二区三区在线观看一 | 成人久久网站| 水蜜桃一区二区| 三级亚洲高清视频| 国产美女免费无遮挡| 精品久久久久久久久久| 天堂中文在线资源| 欧美激情精品久久久| 亚洲精品观看| av片在线免费| 国产成人精品影院| 九九热这里有精品视频| 欧美一区二区成人| 3d玉蒲团在线观看| 91超碰在线免费观看| 91精品国产自产在线观看永久∴ | 亚洲一一在线| 久久99国产精品尤物| 欧美a级片免费看| 69久久夜色精品国产69蝌蚪网| 麻豆网站在线| 中文字幕免费不卡| 久久免费视频播放| 日韩欧美视频一区| 男人添女人下部高潮视频在线观看| 91原创国产| 欧美激情五月| japanese在线观看| 精品动漫一区二区三区| 欧洲免费在线视频| 国产精品91免费在线| 日韩欧美一区二区三区在线视频| 岛国av在线免费| 亚洲九九爱视频| 天天射天天色天天干| 日本欧美一级片| 日本久久综合| 亚洲综合20p| 亚洲一区二区三区四区的| 日本人妻熟妇久久久久久 | 欧美影视资讯| 亚洲自拍的二区三区| 狠狠色丁香婷婷综合| 久久免费视频精品| 亚洲欧美一区二区三区情侣bbw | 亚洲aⅴ日韩av电影在线观看| 午夜国产精品视频| 日本免费福利视频| 欧美三级中文字幕在线观看| 成人在线观看亚洲| 好看的日韩精品| 丝袜美腿亚洲综合| 成人涩涩小片视频日本| 亚洲精品在线一区二区| videos性欧美另类高清| 亚洲一区二区精品在线观看| 国产成人精品亚洲日本在线桃色 | 欧洲一区二区三区免费视频| 免费黄网站在线播放| 国产伦精品一区二区三区视频黑人 | 自拍偷拍亚洲在线| 伊人精品综合| 天堂中文视频在线| 一区二区三区成人| 国产午夜在线观看| 粉嫩精品一区二区三区在线观看| 久久人人精品| 久久网一区二区| 在线精品国产欧美| 加勒比视频一区| 福利视频999|