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

聊聊容器與pod中的僵尸進程

運維 系統運維
在類UNIX系統中,僵尸進程是指完成執行(通過 exit 系統調用,或運行時發生致命錯誤或收到終止信號所致),但在操作系統的進程表中仍然存在其進程控制塊,處于"終止狀態"的進程。

[[423832]]

三種狀態的進程模型

按進程在執行過程中的不同情況至少要定義三種狀態:

  • 運行(running)態:進程占有處理器正在運行的狀態。進程已獲得CPU,其程序正在執行。在單處理機系統中,只有一個進程處于執行狀態;在多處理機系統中,則有多個進程處于執行狀態。
  • 就緒(ready)態:進程具備運行條件,等待系統分配處理器以便運行的狀態。當進程已分配到除CPU以外的所有必要資源后,只要再獲得CPU,便可立即執行,進程這時的狀態稱為就緒狀態。在一個系統中處于就緒狀態的進程可能有多個,通常將它們排成一個隊列,稱為就緒隊列。
  • 等待(wait)態:又稱阻塞態或睡眠態,指進程不具備運行條件,正在等待某個時間完成的狀態。也稱為等待或睡眠狀態,一個進程正在等待某一事件發生(例如請求I/O而等待I/O完成等)而暫時停止運行,這時即使把處理機分配給進程也無法運行,故稱該進程處于阻塞狀態。

引起進程狀態轉換的具體原因如下:

  • 運行態→等待態:等待使用資源;如等待外設傳輸;等待人工干預。
  • 等待態→就緒態:資源得到滿足;如外設傳輸結束;人工干預完成。
  • 運行態→就緒態:運行時間片到;出現有更高優先權進程。
  • 就緒態—→運行態:CPU 空閑時選擇一個就緒進程。

五種狀態的進程模型

五態模型在三態模型的基礎上增加了新建態(new)和終止態(exit)。

新建態:對應于進程被創建時的狀態,尚未進入就緒隊列。創建一個進程需要通過兩個步驟:1.為新進程分配所需要資源和建立必要的管理信息。2.設置該進程為就緒態,并等待被調度執行。

終止態:指進程完成任務到達正常結束點,或出現無法克服的錯誤而異常終止,或被操作系統及有終止權的進程所終止時所處的狀態。處于終止態的進程不再被調度執行,下一步將被系統撤銷,最終從系統中消失。終止一個進程需要兩個步驟:1.先等待操作系統或相關的進程進行善后處理(如抽取信息)。2.然后回收占用的資源并被系統刪除。

引起進程狀態轉換的具體原因如下:

  • NULL→新建態:執行一個程序,創建一個子進程。
  • 新建態→就緒態:當操作系統完成了進程創建的必要操作,并且當前系統的性能和虛擬內存的容量均允許。
  • 運行態→終止態:當一個進程到達了自然結束點,或是出現了無法克服的錯誤,或是被操作系統所終結,或是被其他有終止權的進程所終結。
  • 運行態→就緒態:運行時間片到;出現有更高優先權進程。
  • 運行態→等待態:等待使用資源;如等待外設傳輸;等待人工干預。
  • 就緒態→終止態:未在狀態轉換圖中顯示,但某些操作系統允許父進程終結子進程。
  • 等待態→終止態:未在狀態轉換圖中顯示,但某些操作系統允許父進程終結子進程。
  • 終止態→NULL:完成善后操作。

linux的進程狀態

無論進程還是線程,在 Linux 內核里其實都是用 task_struct{}這個結構來表示的。它其實就是任務(task),也就是 Linux 里基本的調度單位。

Linux進程狀態有:

  • TASK_RUNNING : 就緒態或者運行態,進程就緒可以運行,但是不一定正在占有CPU,對應進程狀態的R。
  • TASK_INTERRUPTIBLE:睡眠態,但是進程處于淺度睡眠,可以響應信號,一般是進程主動sleep進入的狀態,對應進程狀態S。
  • TASK_UNINTERRUPTIBLE:睡眠態,深度睡眠,不響應信號,典型場景是進程獲取信號量阻塞,對應進程狀態D。
  • TASK_ZOMBIE:僵尸態,進程已退出或者結束,但是父進程還不知道,沒有回收時的狀態,結束之前的一個狀態,對應進程狀態Z。
  • EXIT_DEAD:結束態,進程已經結束,也就是進程結束退出那一瞬間的狀態,對應進程狀態X。
  • TASK_STOPED:停止,調試狀態,對應進程狀態T。

孤兒進程

一個父進程退出,而它的一個或多個子進程還在運行,那么那些子進程將成為孤兒進程。孤兒進程將被init進程(進程號為1,也有可能是容器中的init)所收養,并由init進程對它們完成狀態收集工作。孤兒進程是沒有父進程的進程,孤兒進程這個重任就落到了init進程身上,init進程就好像是一個民政局,專門負責處理孤兒進程的善后工作。每當出現一個孤兒進程的時候,內核就把孤 兒進程的父進程設置為init,而init進程會循環地wait()它的已經退出的子進程。這樣,當一個孤兒進程凄涼地結束了其生命周期的時候,init進程就會代表黨和政府出面處理它的一切善后工作。因此孤兒進程并不會有什么危害。

僵尸進程

在類UNIX系統中,僵尸進程是指完成執行(通過 exit 系統調用,或運行時發生致命錯誤或收到終止信號所致),但在操作系統的進程表中仍然存在其進程控制塊,處于"終止狀態"的進程。我們從上面的概念中得知,僵尸進程仍然存在在進程表中。進程會占用系統系統資源,僵尸進程過多會導致資源泄露,最主要的資源就是PID。我們來看一下linux系統中的PID。這個最大值可以我們在 /proc/sys/kernel/pid_max 這個參數中看到。

  1. [root@k8s-dev]# cat /proc/sys/kernel/pid_max 
  2. 32768 

Linux 內核在進行初始化時,會根據CPU 的數目對 pid_max 進行設置。

  • 如果CPU 的數目小于等于32,那么 pid_max 會被設置為32768;
  • 如果CPU 的數目大于32,那么 pid_max = 1024 * (CPU 數目)。

所以如果超過這個最大值,那么系統就無法創建出新的進程了,比如你想 SSH 登錄到這臺機器上就不行了。清理僵尸進程:了解了僵尸進程的危害,我們來看看怎么清理僵尸進程:收割僵尸進程的方法是通過kill命令手工向其父進程發送SIGCHLD信號。如果其父進程仍然拒絕收割僵尸進程,則終止父進程,使得init進程收養僵尸進程。init進程周期執行wait系統調用收割其收養的所有僵尸進程。為避免產生僵尸進程,實際應用中一般采取的方式是:

將父進程中對SIGCHLD信號的處理函數設為SIG_IGN(忽略信號);

  • fork兩次并殺死一級子進程,令二級子進程成為孤兒進程而被init所“收養”、清理。
  • docker容器中的進程

容器中的PID

在Docker中,進程管理的基礎就是Linux內核中的PID名空間技術。在不同PID名空間中,進程ID是獨立的;即在兩個不同名空間下的進程可以有相同的PID。

Linux內核為所有的PID名空間維護了一個樹狀結構:最頂層的是系統初始化時創建的root namespace(根名空間),再創建的新PID namespace就稱之為child namespace(子名空間),而原先的PID名空間就是新創建的PID名空間的parent namespace(父名空間)。通過這種方式,系統中的PID名空間會形成一個層級體系。父節點可以看到子節點中的進程,并可以通過信號等方式對子節點中的進程產生影響。反過來,子節點不能看到父節點名空間中的任何內容,也不可能通過kill或ptrace影響父節點或其他名空間中的進程。

在Docker中,每個Container都是Docker Daemon的子進程,每個Container進程缺省都具有不同的PID名空間。通過名空間技術,Docker實現容器間的進程隔離。另外Docker Daemon也會利用PID名空間的樹狀結構,實現了對容器中的進程交互、監控和回收。注:Docker還利用了其他名空間(UTS,IPC,USER)等實現了各種系統資源的隔離,由于這些內容和進程管理關聯不多,本文不會涉及。

容器退出

當創建一個Docker容器的時候,就會新建一個PID名空間。容器啟動進程在該名空間內PID為1。當PID1進程結束之后,Docker會銷毀對應的PID名空間,并向容器內所有其它的子進程發送SIGKILL。

當執行docker stop命令時,docker會首先向容器的PID1進程發送一個SIGTERM信號,用于容器內程序的退出。如果容器在收到SIGTERM后沒有結束, 那么Docker Daemon會在等待一段時間(默認是10s)后,再向容器發送SIGKILL信號,將容器殺死變為退出狀態。這種方式給Docker應用提供了一個優雅的退出(graceful stop)機制,允許應用在收到stop命令時清理和釋放使用中的資源。

docker kill可以向容器內PID1進程發送任何信號,缺省是發送SIGKILL信號來強制退出應用。

容器中的僵尸進程

產生原因

容器化后,由于單容器單進程,已經沒有傳統意義上的 init 進程了。應用進程直接占用了 pid 1 的進程號。從而導致以下兩個問題。

常見的使用是 docker run my-container script 。給 docker run進程發送SIGTERM 信號會殺掉 docker run 進程,但是容器還在后臺運行。

2.當進程退出時,它會變成僵尸進程,直到它的父進程調用 wait()( 或其變種 ) 的系統調用。process table 里面會把它的標記為 defunct 狀態。一般情況下,父進程應該立即調用 wait(), 以防僵尸進程時間過長。

如果父進程在子進程之前退出,子進程會變成孤兒進程, 它的父進程會變成 PID 1。因此,init進程就要對這些進程負責,并在適當的時候調用 wait() 方法。通常情況下,大部分應用進程不會處理偶然依附在自己進程上的隨機子進程,所以在容器中,會出現許多僵尸進程。

解決方案

解決這個的辦法就是pid為1的跑一個支持信號轉發且支持回收孤兒僵尸進程的進程就行了,為此有人開發出了tini項目,感興趣可以github上搜下下,現在tini已經內置在docker里了。使用tini可以在docker run的時候添加選項–init即可,底層我猜測是復制docker-init到容器的/dev/init路徑里然后啟動entrypoint cmd,大家可以在run的時候測試下上面的步驟會發現根本不會有僵尸進程遺留。這里不多說,如果是想默認使用tini可以把tini構建到鏡像里(例如k8s目前不支持docker run 的--init,所以需要把tini做到鏡像里),參照jenkins官方鏡像dockerfile和tini的github地址文檔 https://github.com/krallin/tini

k8s pod中的僵尸進程

k8s 可以將多個容器編排到一個 pod 里面,共享同一個 Linux Namespace。這項技術的本質是使用 k8s 提供一個 pause 鏡像,也就是說先啟動一個 pause 容器,相當于實例化出 Namespace,然后其他容器加入這個 Namespace 從而實現 Namespace 的共享。我們來介紹一下 pause。

pause 是 k8s 在 1.16 版本引入的技術,要使用 pause,我們只需要在 pod 創建的 yaml 中指定 shareProcessNamespace 參數為 true,如下:

  1. apiVersion: v1 
  2. kind: Pod 
  3. metadata: 
  4.   name: nginx 
  5. spec: 
  6.   shareProcessNamespace: true 
  7.   containers: 
  8.   - name: nginx 
  9.     image: nginx 
  10.   - name: shell 
  11.     image: busybox 
  12.     securityContext: 
  13.       capabilities: 
  14.         add
  15.         - SYS_PTRACE 
  16.     stdin: true 
  17.     tty: true 

attach到pod中,ps查看進程列表:

  1. / # kubectl attach POD -c CONTAINER  
  2. / # ps ax 
  3. PID   USER     TIME  COMMAND 
  4.     1 root      0:00 /pause 
  5.     8 root      0:00 nginx: master process nginx -g daemon off
  6.    14 101       0:00 nginx: worker process 
  7.    15 root      0:00 sh 
  8.    21 root      0:00 ps ax 

我們可以看到 pod 中的 1 號進程變成了 /pause,其他容器的 entrypoint 進程都變成了 1 號進程的子進程。這個時候開始逐漸逼近事情的本質了:/pause 進程是如何處理 將孤兒進程的父進程置為 1 號進程進而避免僵尸進程的呢?

pause 鏡像的源碼如下:pause.c

  1. #include <signal.h> 
  2. #include <stdio.h> 
  3. #include <stdlib.h> 
  4. #include <string.h> 
  5. #include <sys/types.h> 
  6. #include <sys/wait.h> 
  7. #include <unistd.h> 
  8.  
  9. static void sigdown(int signo) { 
  10.   psignal(signo, "Shutting down, got signal"); 
  11.   exit(0); 
  12. // 關注1 
  13. static void sigreap(int signo) { 
  14.   while (waitpid(-1, NULL, WNOHANG) > 0) 
  15.     ; 
  16.  
  17. int main(int argc, char **argv) { 
  18.   int i; 
  19.   for (i = 1; i < argc; ++i) { 
  20.     if (!strcasecmp(argv[i], "-v")) { 
  21.       printf("pause.c %s\n", VERSION_STRING(VERSION)); 
  22.       return 0; 
  23.     } 
  24.   } 
  25.  
  26.   if (getpid() != 1) 
  27.     /* Not an error because pause sees use outside of infra containers. */ 
  28.     fprintf(stderr, "Warning: pause should be the first process\n"); 
  29.  
  30.   if (sigaction(SIGINT, &(struct sigaction){.sa_handler = sigdown}, NULL) < 0) 
  31.     return 1; 
  32.   if (sigaction(SIGTERM, &(struct sigaction){.sa_handler = sigdown}, NULL) < 0) 
  33.     return 2; 
  34.   // 關注2 
  35.   if (sigaction(SIGCHLD, &(struct sigaction){.sa_handler = sigreap, 
  36.                                              .sa_flags = SA_NOCLDSTOP}, 
  37.                 NULL) < 0) 
  38.     return 3; 
  39.  
  40.   for (;;) 
  41.     pause(); // 編者注:該系統調用的作用是wait for signal 
  42.   fprintf(stderr, "Error: infinite loop terminated\n"); 
  43.   return 42; 

重點關注一下void sigreap(int signo){...}和if (sigaction(SIGCHLD,...) ,這個不就是我們上面說的 除了這種方式外,還可以通過異步的方式來進行回收,這種方式的基礎是子進程結束之后會向父進程發送 SIGCHLD 信號,基于此父進程注冊一個 SIGCHLD 信號的處理函數來進行子進程的資源回收就可以了。

SIGCHLD 信號的處理函數核心就是這一行 while (waitpid(-1, NULL, WNOHANG) > 0) ,其中各參數示意如下:

  • -1:meaning wait for any child process.
  • NULL:?
  • WNOHANG :return immediately if no child has exited.

結論

得出pause 容器的兩個最重要的特性:

  • 在 pod 中作為容器共享namespace的基礎
  • 作為 pod 內的所有容器的父容器,扮演 init 進程(即systemd)的作用。

最后

通過這篇文章的學習,大家能解決容器中出現僵尸進程的問題。

本文轉載自微信公眾號「運維開發故事」

 

責任編輯:姜華 來源: 運維開發故事
相關推薦

2024-08-26 08:39:26

PHP孤兒進程僵尸進程

2022-01-19 08:01:13

Linuxdocker容器

2024-02-05 18:23:23

父進程應用程序程序

2019-11-20 09:15:53

KubernetesPod

2017-12-15 09:40:47

Linux僵尸進程

2022-02-07 11:55:00

linux進程線程

2021-10-25 12:23:06

Linux僵尸進程

2020-10-10 11:02:09

Linux 系統 數據

2021-11-22 08:00:00

Kubernetes容器集群

2021-11-08 10:30:30

Linux僵尸命令

2021-11-06 10:17:38

Linux僵尸進程

2023-11-03 08:22:09

Android系統算法

2020-10-22 13:49:37

Docker容器僵死進程

2020-07-14 07:27:48

容器IoCSpring

2024-05-09 09:55:08

2022-10-12 09:01:52

Linux內核線程

2025-05-29 08:10:00

Linux進程系統

2022-03-04 08:45:11

Docker開源Linux

2021-03-28 08:32:58

Java

2025-03-20 09:54:47

點贊
收藏

51CTO技術棧公眾號

日本免费新一区视频| 网红女主播少妇精品视频| 国产精品久久久久久久久动漫| 国产精品香蕉av| 538任你躁在线精品视频网站| 伊人www22综合色| 福利视频第一区| 亚洲一区二区在线观| 亚洲va久久久噜噜噜无码久久| 99伊人成综合| 在线观看亚洲区| 国产999免费视频| 国产啊啊啊视频在线观看| 91视频com| 91免费在线视频| 亚洲日本视频在线观看| 久久麻豆精品| 日韩激情av在线免费观看| 日本三级黄色网址| 在线免费三级电影网站| 亚洲欧洲综合另类在线| 欧美福利精品| 黑人精品一区二区三区| 免费成人你懂的| 欧美孕妇孕交黑巨大网站| www.毛片com| 国产一区二区电影在线观看| 精品国产亚洲在线| 亚洲18在线看污www麻豆| 345成人影院| 亚洲国产aⅴ成人精品无吗| 先锋在线资源一区二区三区| 日韩有码第一页| 激情深爱一区二区| 国产精品国语对白| 日韩免费视频一区二区视频在线观看| 亚洲精品91| 最近的2019中文字幕免费一页| 男男做爰猛烈叫床爽爽小说| 国产麻豆一区二区三区| 欧美色图12p| 久久久久久久少妇| 538在线精品| 亚洲成人自拍一区| 亚洲理论电影在线观看| 国产在线观看a视频| 国产日产欧美一区| 免费在线观看91| 亚洲 精品 综合 精品 自拍| 成人午夜激情影院| 丁香婷婷久久久综合精品国产| 99久久精品免费看国产交换| 国产又黄又大久久| 成人国产亚洲精品a区天堂华泰| 波多野结衣视频免费观看| 另类亚洲自拍| 日本在线观看天堂男亚洲| 美日韩一二三区| 久久天堂精品| 国产精品69久久久久| 中文字幕精品无| 日本三级亚洲精品| 国产精品视频免费观看www| 自拍偷拍色综合| 美腿丝袜亚洲综合| 成人精品视频在线| www.超碰在线.com| 国产999精品久久| 国产伦精品一区二区三区高清| 六月婷婷中文字幕| 91在线视频播放地址| 欧美久久综合性欧美| 国产中文在线| 国产精品家庭影院| 在线观看17c| 九色porny丨首页入口在线| 精品日本美女福利在线观看| 九九九九免费视频| 超薄肉色丝袜脚交一区二区| 555夜色666亚洲国产免| 欧美性生交xxxxx| 欧美日韩一区二区三区四区不卡 | 国产女人在线观看| 国产精品日韩精品欧美在线| 国产又黄又爽免费视频| 七七成人影院| 日韩欧美国产中文字幕| 久久婷五月综合| 麻豆精品国产| 亚洲精品一区二区三区不| 粉嫩精品久久99综合一区| 中文字幕日韩欧美精品高清在线| 久久久久免费视频| 日韩美一区二区| 精品一区中文字幕| 精品国产综合| 国产在线高清| 亚洲精品亚洲人成人网在线播放| 欧美精品自拍视频| 成人免费视频观看| 精品国产一区二区三区久久影院| 久久精品成人av| 欧美99在线视频观看| 欧美一级淫片aaaaaaa视频| 亚洲一级黄色大片| 99久久夜色精品国产网站| 一个色的综合| 欧美一级鲁丝片| 7777精品伊人久久久大香线蕉经典版下载| 一级黄色免费视频| 91综合久久| 日本一欧美一欧美一亚洲视频| 一级淫片免费看| 久久综合色综合88| 色哟哟免费网站| 亚洲第一会所001| 欧美精品一区视频| 亚洲一级理论片| 国产一区二区你懂的| 91在线高清视频| 成人影视在线播放| 第一福利永久视频精品| 人妻巨大乳一二三区| 成人一区二区| 国产91色在线播放| 日本韩国在线观看| 亚洲精品成a人| 中文av一区二区三区| 日韩成人午夜| 欧美精品福利在线| 国产美女精品视频国产| 国产免费观看久久| 黄色a级片免费| 欧美电影在线观看免费| 九九九久久国产免费| 一级片一区二区三区| 国产精品美女www爽爽爽| 成人午夜视频免费在线观看| 久久国产精品免费精品3p| 毛片精品免费在线观看| 亚洲午夜精品久久久| 亚洲国产精品黑人久久久| 欧美激情国产精品日韩| 久久久精品国产**网站| 久久久久久网站| 亚洲国产成人一区二区| 亚洲精品写真福利| 交换做爰国语对白| 亚洲不卡av不卡一区二区| 国产日韩欧美中文在线播放| 亚乱亚乱亚洲乱妇| 欧美群妇大交群中文字幕| 精品丰满少妇一区二区三区| 日本vs亚洲vs韩国一区三区二区 | 精品久久一区| 国产精品久久久久久搜索| 大乳在线免费观看| 欧美亚洲动漫制服丝袜| 农村老熟妇乱子伦视频| 美女网站一区二区| 免费观看黄色大片| 香蕉免费一区二区三区在线观看| 国产精品九色蝌蚪自拍| 欧洲精品毛片网站| 同心难改在线观看| 粉嫩老牛aⅴ一区二区三区| 国产精品无码专区| 99精品久久| 久久综合九色99| 日韩av福利| 在线视频免费一区二区| 亚洲一卡二卡在线观看| 亚洲少妇最新在线视频| 国产精品偷伦视频免费观看了| 狠狠噜噜久久| 久久视频在线观看中文字幕| 美女福利一区二区三区| 自拍偷拍亚洲精品| 99久久精品无免国产免费| 一区二区在线观看免费视频播放| 苍井空张开腿实干12次| 国产农村妇女毛片精品久久莱园子 | 国产日韩欧美综合精品| 国产精品伦理| xxxx欧美18另类的高清| 丰满人妻一区二区| 色婷婷激情综合| www.av免费| 99久久久国产精品| 久热精品在线播放| 亚洲午夜极品| 天堂√在线观看一区二区| 国产精品美女久久久久| 7m第一福利500精品视频| 国内在线免费高清视频| 日韩一区二区三| 国产精品午夜影院| 中文字幕字幕中文在线中不卡视频| 无码国产精品久久一区免费| 久久综合中文| 国产爆乳无码一区二区麻豆| 国产剧情一区| 国产精品对白刺激久久久| 国产精品毛片久久久久久久久久99999999| 久久综合伊人77777尤物| 日韩精品123| 欧美日韩一级二级| 日韩精品国产一区二区| 国产欧美精品在线观看| 性色av蜜臀av浪潮av老女人| 久久99精品国产| 草草久久久无码国产专区| 久久久久久久久国产一区| 六月婷婷久久| 日韩一区二区三区高清在线观看| 国产ts一区二区| www.综合网.com| 久久久精品在线观看| 蜜桃视频在线免费| 亚洲成人精品久久久| 91尤物国产福利在线观看| 欧美性jizz18性欧美| 久久亚洲AV无码| 一区二区中文视频| 欧美人妻一区二区三区| av不卡一区二区三区| 亚洲国产日韩在线一区| 久久99久久久欧美国产| 中文字幕在线观看第三页| 亚洲免费精品| 国产女主播自拍| 欧美精品综合| 97超碰免费观看| 97精品国产| 亚洲无玛一区| 精品久久精品| 日本高清一区| 蜜桃精品wwwmitaows| 国产精品我不卡| jizz性欧美23| 国产成人免费电影| 88久久精品| 成人欧美一区二区| 亚洲综合色婷婷在线观看| 99久久无色码| 99re8这里有精品热视频8在线| 亚洲一区二区三区香蕉| 疯狂欧洲av久久成人av电影| 成人精品视频在线| 欧美欧美在线| 99在线视频免费观看| 2023国产精华国产精品| 国产91aaa| 露出调教综合另类| 久久精品日韩| 国产欧美日韩| 亚洲欧美日韩精品在线| 99精品在线观看| 日本成人性视频| 午夜久久黄色| 日日摸日日碰夜夜爽无码| 亚洲看片免费| 欧美牲交a欧美牲交aⅴ免费真| 狂野欧美一区| 日本三级黄色网址| 国产高清一区日本| 久久久久久久人妻无码中文字幕爆| 成人高清视频在线| 国产精品无码午夜福利| 中文字幕不卡在线播放| 国产男女猛烈无遮挡在线喷水| 亚洲欧美精品午睡沙发| 久久精品国产亚洲AV无码男同| 婷婷久久综合九色国产成人 | 亚洲永久在线| 一级特黄性色生活片| 精品亚洲porn| 年下总裁被打光屁股sp | 在线最新版中文在线| 国产精品igao视频| 国产一区一区| 狠狠干一区二区| 成人羞羞网站入口免费| 91看片淫黄大片91| 新67194成人永久网站| 99热手机在线| 懂色av中文一区二区三区| 黄色正能量网站| 中文字幕一区二区三区在线不卡| 免费在线观看国产精品| 欧美性高跟鞋xxxxhd| 国产又粗又猛视频| 亚洲国产成人精品电影| 欧美性videos| 欧美中文在线视频| 蜜桃精品视频| 欧美在线一区二区三区四区| 亚洲天天影视网| 国产a视频免费观看| 国内成人自拍视频| 国产精品815.cc红桃| 亚洲美女屁股眼交3| 国产婷婷色一区二区在线观看| 欧美高清激情brazzers| 三级视频网站在线| 九九热视频这里只有精品| 久久久成人av毛片免费观看| 国产精品久久久久久免费观看| 日韩精品永久网址| 日韩在线综合网| 国产a区久久久| 青青青视频在线免费观看| 欧美日韩性视频在线| www日本视频| 日韩在线观看免费网站| 亚洲精品日产| 国产精品yjizz| 中文在线日韩| 在线观看国产一级片| 久久久国产精品不卡| 国产一级在线视频| 欧美一区二区视频在线观看2020| 成在在线免费视频| 热久久99这里有精品| 北条麻妃一区二区三区在线| 国产a级片免费看| 日日摸夜夜添夜夜添亚洲女人| 欧美深性狂猛ⅹxxx深喉| 亚洲一区二区三区四区五区黄| 国产日本精品视频| 色噜噜狠狠色综合网图区| 欧美不卡高清一区二区三区| 久热国产精品视频一区二区三区| 日韩香蕉视频| 亚洲视频在线播放免费| 亚洲午夜电影在线| 黑人乱码一区二区三区av| 久久久久久久久久国产精品| 精品一区视频| 亚洲国产精品女人| 国产一区二区美女| 成年人免费视频播放| 欧美日韩高清一区二区| 日本精品在线| 成人在线免费观看视视频| 99久久婷婷国产综合精品电影√| 亚洲欧美久久久久| 国产精品乱码一区二区三区软件 | 日本中文字幕免费在线观看| 欧美日本一区二区在线观看| 亚洲麻豆精品| 亚洲精品日韩av| 欧美一区在线看| 精人妻一区二区三区| 亚洲高清免费观看高清完整版在线观看| 亚洲春色一区二区三区| 欧美精品激情在线观看| 精品欧美午夜寂寞影院| 久久免费视频3| 久久久久国产精品免费免费搜索| 亚洲 日本 欧美 中文幕| 国产一区二区三区在线| 91在线亚洲| 大桥未久一区二区三区| 粉嫩av一区二区三区粉嫩 | 欧美日韩中文字幕一区| 欧美成人精品一区二区男人看| 91久久国产综合久久91精品网站| 欧美fxxxxxx另类| av在线播放网址| 色婷婷狠狠综合| 日韩免费网站| 成人午夜电影免费在线观看| 国产精品亚洲综合色区韩国| 国产一区二区三区四区五区六区| 欧美日韩视频专区在线播放| av在线影院| 久久综合九色99| 精品一区二区三区在线观看国产| 久热这里只有精品在线| 国产网站欧美日韩免费精品在线观看| 亚洲精品在线影院| 国产一区一区三区| 99久久国产免费看| 在线免费观看日韩视频| 欧美极品少妇全裸体| 精品国产一区二区三区香蕉沈先生| 超碰成人在线播放| 五月综合激情婷婷六月色窝| 亚洲欧美视频一区二区| 国产一区二区视频在线免费观看| 青青草国产精品亚洲专区无| 欧美日韩中文字幕在线观看| 日韩精品电影网| 国产精品视频一区二区三区综合| 波多野结衣综合网| 国产精品久久久一本精品 | 神马久久桃色视频| av日韩精品| 国产三级生活片|