99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Kubernetes Pod 完全指南:從概念到排障實(shí)踐

Kubernetes Pod 完全指南:從概念到排障實(shí)踐 用了這么多年 Kubernetes每次有新同事問(wèn)我的第一個(gè)問(wèn)題基本都集中在“Pod到底是什么”上。我太理解這種困惑了因?yàn)?Docker 時(shí)代大家腦子里已經(jīng)形成了“容器 運(yùn)行單元”的思維定式結(jié)果一到 k8s 里發(fā)現(xiàn)跑起來(lái)的最小單元不是容器而是 Pod而且很多時(shí)候一個(gè) Pod 里還能塞好幾個(gè)容器這跟以前的習(xí)慣完全不一樣。這篇文章我就把自己對(duì) Pod 的理解、底層的運(yùn)行機(jī)制、實(shí)際部署中的操作心得以及這幾年排查 Pod 問(wèn)題總結(jié)的經(jīng)驗(yàn)一次說(shuō)清楚。內(nèi)容從基礎(chǔ)概念一路講到 LNMP 這樣的多容器場(chǎng)景同時(shí)覆蓋到了二進(jìn)制部署、Rancher、離線環(huán)境這些大家常問(wèn)的落地方式適合正在學(xué)習(xí) k8s 的運(yùn)維和開(kāi)發(fā)同學(xué)也適合已經(jīng)被 Pod 各種異常狀態(tài)折磨過(guò)的實(shí)戰(zhàn)派。1. 為什么會(huì)有 Pod 這個(gè)抽象層1.1 從容器到 Podk8s 為什么不做“容器級(jí)調(diào)度”先理清一個(gè)經(jīng)常被人搞混的點(diǎn)Docker 是容器運(yùn)行時(shí)它負(fù)責(zé)的是“在單臺(tái)機(jī)器上把容器跑起來(lái)”而 k8s 是集群編排系統(tǒng)它關(guān)心的是“在多臺(tái)機(jī)器上怎么調(diào)度、怎么保證服務(wù)不掛”。這兩者的抽象粒度天然就不一樣。Docker 時(shí)代我們部署一個(gè) web 服務(wù)直接把代碼打進(jìn)去、端口映射出來(lái)、然后 docker run 一下就算完事。但到了真實(shí)的生產(chǎn)環(huán)境一個(gè)服務(wù)往往不是單獨(dú)一個(gè)進(jìn)程就能搞定的。常見(jiàn)的場(chǎng)景是nginx 要轉(zhuǎn)發(fā)請(qǐng)求給后端 PHP-FPM同時(shí)需要一個(gè)日志采集進(jìn)程在旁邊收日志或者業(yè)務(wù)主進(jìn)程旁邊帶一個(gè)監(jiān)控上報(bào)進(jìn)程定時(shí)把指標(biāo)推給 Prometheus。如果用 Docker Compose這些配套進(jìn)程就得各自啟動(dòng)一個(gè)容器然后再通過(guò) Compose 的網(wǎng)絡(luò)把它們連起來(lái)它們之間的依賴關(guān)系、共享存儲(chǔ)、通信方式都要你手工管理。k8s 的做法是直接在調(diào)度層面引入了 Pod 這個(gè)中間層。Pod 是一組“必須部署在同一臺(tái)宿主機(jī)上、資源聯(lián)合調(diào)度、生命周期完全一致”的容器集合。它不是把 Docker 容器包一層殼那么簡(jiǎn)單而是改變了你組織應(yīng)用的方式以前你在 Compose 里用“服務(wù)”來(lái)組織現(xiàn)在你在 k8s 里用“Pod”來(lái)組織。二者的區(qū)別在于Compose 的服務(wù)之間是“通過(guò)網(wǎng)絡(luò)調(diào)用”的關(guān)系而 Pod 里的多個(gè)容器是“共享同一個(gè)運(yùn)行環(huán)境”的關(guān)系。k8s 之所以不下沉到直接調(diào)度容器核心原因是它需要一種機(jī)制來(lái)表達(dá)“這些進(jìn)程必須緊緊地耦合在一起”的訴求。如果沒(méi)有 Pod 這一層兩個(gè)容器想要共享 localhost 通信、共享一個(gè)數(shù)據(jù)卷、保持同生共死就只能靠外部編排服務(wù)去強(qiáng)行管理復(fù)雜度會(huì)高得離譜。有了 Pod這些問(wèn)題全部從“應(yīng)用層的約定”變成了“基礎(chǔ)設(shè)施層的內(nèi)置能力”。1.2 Pod 真正解決的兩個(gè)實(shí)際問(wèn)題第一個(gè)問(wèn)題是網(wǎng)絡(luò)。Pod 內(nèi)的所有容器共享同一個(gè)網(wǎng)絡(luò)命名空間這意味著它們共享同一個(gè) IP、同一個(gè)端口空間。舉例來(lái)說(shuō)nginx 容器里只要配置 fastcgi_pass 127.0.0.1:9000就能直接訪問(wèn)到同一個(gè) Pod 里 PHP-FPM 容器監(jiān)聽(tīng)的 9000 端口。這在實(shí)際部署 LNMP 的時(shí)候非常好用你不需要去拿 Service 或負(fù)載均衡去連同一個(gè) Pod 內(nèi)部的進(jìn)程。第二個(gè)問(wèn)題是存儲(chǔ)。Pod 內(nèi)的容器可以共享同一個(gè) Volume。最常見(jiàn)的是 emptyDir——一個(gè)隨 Pod 創(chuàng)建而創(chuàng)建、隨 Pod 銷毀而消失的臨時(shí)目錄。nginx 和 PHP-FPM 容器都掛載同一個(gè)代碼目錄代碼發(fā)布的時(shí)候只要更新一次掛載的卷兩個(gè)容器立刻就能同時(shí)看到新代碼。這在容器化的 PHP/Java 應(yīng)用里非常典型。我見(jiàn)過(guò)不少?gòu)?Compose 遷到 k8s 的人一開(kāi)始習(xí)慣把 nginx、PHP-FPM、MySQL 分別做成三個(gè)獨(dú)立 Deployment然后靠 Service 互相訪問(wèn)。這種思路不是不行但你會(huì)發(fā)現(xiàn) nginx 和 PHP-FPM 之間的通信要經(jīng)過(guò) Service 的轉(zhuǎn)發(fā)、要經(jīng)過(guò) kube-proxy延遲和復(fù)雜度都上去了。事實(shí)上 nginx 和 PHP-FPM 是典型的“同生命周期應(yīng)用”它們版本一起升級(jí)、部署一起變化更應(yīng)該放進(jìn)同一個(gè) Pod。而 MySQL 這種有狀態(tài)的數(shù)據(jù)存儲(chǔ)則完全不同它需要獨(dú)立的數(shù)據(jù)持久化、獨(dú)立的擴(kuò)縮容策略絕對(duì)不應(yīng)該和 Web 容器擠在一個(gè) Pod 里。理解了這一點(diǎn)你對(duì) Pod 的編排邊界就有了基本的判斷力。2. Pod 的底層運(yùn)行機(jī)制2.1 一次創(chuàng)建 Pod 時(shí)kubelet 在節(jié)點(diǎn)上做了什么很多教程上來(lái)就寫(xiě) yaml 文件但從來(lái)不解釋“你執(zhí)行 kubectl apply 之后發(fā)生了什么”。我建議每個(gè)想深入研究 k8s 的人都先把這個(gè)鏈路走一遍否則后面排障會(huì)非常痛苦。當(dāng)你在控制平面執(zhí)行 kubectl apply 提交了一個(gè) Pod 定義后請(qǐng)求會(huì)打到 API Server。API Server 把 Pod 對(duì)象寫(xiě)入 etcd然后調(diào)度器kube-scheduler會(huì) watch 到這個(gè)新 Pod根據(jù)它的資源請(qǐng)求、節(jié)點(diǎn)親和性、污點(diǎn)容忍等約束選一個(gè)最合適的節(jié)點(diǎn)并把調(diào)度結(jié)果寫(xiě)回 API Server。接著目標(biāo)節(jié)點(diǎn)上的 kubelet 會(huì) watch 到這個(gè) Pod開(kāi)始在本地執(zhí)行容器創(chuàng)建流程。kubelet 創(chuàng)建 Pod 并不是直接拉起業(yè)務(wù)容器而是先啟動(dòng)一個(gè)基礎(chǔ)設(shè)施容器在 containerd 里叫 sandbox在 Docker 時(shí)代叫 pause 容器。這個(gè)容器極其輕量它不跑任何業(yè)務(wù)邏輯唯一的職責(zé)是持有一組 Linux namespace——比如網(wǎng)絡(luò)命名空間、IPC 命名空間、UTS 命名空間。后續(xù)創(chuàng)建的業(yè)務(wù)容器全部通過(guò) --networkcontainer:sandbox 這種方式加入同一個(gè)命名空間這樣就實(shí)現(xiàn)了 Pod 內(nèi)容器共享網(wǎng)絡(luò)和通信域的效果。這也就解釋了為什么你在節(jié)點(diǎn)上執(zhí)行 docker ps或用 crictl 查看容器時(shí)會(huì)看到一堆“pause”開(kāi)頭的容器。很多人第一次看到會(huì)覺(jué)得是殘留垃圾進(jìn)程其實(shí)那是 Pod 存在的基礎(chǔ)。那個(gè) pause 容器是整個(gè) Pod 生命周期里最先啟動(dòng)、最后刪除的容器它一掛整個(gè) Pod 里的所有容器都會(huì)跟著重建。業(yè)務(wù)容器的創(chuàng)建流程也不止是 pull image 和 run container 兩步。kubelet 會(huì)依次處理初始化容器initContainer如果有、掛載 Volume、設(shè)置環(huán)境變量、設(shè)置資源 cgroup 限制、配置探針探針啟動(dòng)后會(huì)周期性調(diào)用然后依次啟動(dòng)普通容器。任何一個(gè)步驟失敗Pod 都會(huì)停在對(duì)應(yīng)的狀態(tài)上這也是我們排障時(shí)觀察 Pod 事件Events的直接依據(jù)。2.2 探針、就緒、重啟策略與 Pod 狀態(tài)流轉(zhuǎn)搞明白了創(chuàng)建鏈路接著看 Pod 運(yùn)行時(shí)的幾個(gè)關(guān)鍵機(jī)制。首先要分清 Pod 狀態(tài)和容器狀態(tài)——Pod 的狀態(tài)是對(duì)內(nèi)容器狀態(tài)的聚合判斷常見(jiàn)的有 Pending、Running、Succeeded、Failed、Unknown但在實(shí)際開(kāi)發(fā)環(huán)境中我們天天打交道的其實(shí)是 ContainerCreating、CrashLoopBackOff、ImagePullBackOff、Terminating 這些 kubectl 列表里展示的狀態(tài)。探針Probe是保證 Pod 可靠性的重要組件。livenessProbe 決定“容器活著嗎”如果一直失敗kubelet 會(huì)按 restartPolicy 殺掉容器并重啟readinessProbe 決定“容器可以對(duì)外提供服務(wù)了嗎”如果失敗kubelet 會(huì)把該 Pod 從 Service 的 Endpoints 里摘掉流量就不會(huì)打到它。startupProbe 是后來(lái)加的專門(mén)解決“啟動(dòng)很慢的老 Java 應(yīng)用”場(chǎng)景——它先于 liveness 執(zhí)行在 startup 成功之前l(fā)iveness 不會(huì)介入這樣可以避免應(yīng)用啟動(dòng)耗時(shí)太長(zhǎng)被誤殺。這里要特別強(qiáng)調(diào) restartPolicy 的一個(gè)坑Deployment 管理的 PodrestartPolicy 必須是 Always因?yàn)?Deployment 本身就是靠滾動(dòng)重啟來(lái)實(shí)現(xiàn)發(fā)布和自愈的。如果你把 restartPolicy 改成 OnFailure 或 Never很多人會(huì)在這時(shí)發(fā)現(xiàn) Pod 時(shí)不時(shí)變成 Succeeded 或 Failed 狀態(tài)而不是被拉起然后一臉懵。這個(gè)限制從 API 校驗(yàn)層面就會(huì)直接攔下你所以寫(xiě) yaml 的時(shí)候提前注意就好。還有一個(gè)容易被忽略的機(jī)制是容器的日志處理。Pod 里的容器如果崩潰頻繁kubelet 會(huì)按照一定周期做退避重啟拉起的間隔從 10s 開(kāi)始20s、40s、80s……最長(zhǎng) 5 分鐘之后恢復(fù)正常探測(cè)頻率。這個(gè)退避機(jī)制就是 CrashLoopBackOff 狀態(tài)的來(lái)源。很多新手一看到 CrashLoopBackOff 就以為是死循環(huán)了其實(shí)這只是“崩潰后退避等待中”的正常表現(xiàn)重點(diǎn)要看容器為什么崩潰也就是去查日志。3. 實(shí)際部署從最簡(jiǎn)單到 LNMP3.1 單容器 Pod 的 yaml 長(zhǎng)什么樣理論講完必須動(dòng)手。先寫(xiě)一個(gè)最簡(jiǎn)單但完整的單容器 Pod 示例我有一個(gè)習(xí)慣是永遠(yuǎn)不裸寫(xiě)裸 Pod這里是為了教學(xué)先展示 Pod 最小定義生產(chǎn)環(huán)境后面我會(huì)強(qiáng)烈建議你換成 Deployment。apiVersion: v1 kind: Pod metadata: name: nginx-single namespace: default labels: app: nginx-single spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80 protocol: TCP resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 512Mi readinessProbe: httpGet: path: /nginx_status port: 80 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /nginx_status port: 80 initialDelaySeconds: 15 periodSeconds: 10執(zhí)行 kubectl apply -f 之后用 kubectl get pods -o wide 就能看到 Pod 被調(diào)度到哪臺(tái)節(jié)點(diǎn)拿到它的 Cluster IP。然后可以用 kubectl exec -it nginx-single -- curl 127.0.0.1 驗(yàn)證一下。注意 resources 那一節(jié)里 cpu 的單位是 m毫核100m 代表 0.1 個(gè) CPU 核心。內(nèi)存單位是 Mi這是二進(jìn)制兆。新手最常見(jiàn)的錯(cuò)誤就是把 cpu 寫(xiě)成 1表示 1 個(gè)完整核心內(nèi)存寫(xiě)成 1024表示 1024 字節(jié)然后發(fā)現(xiàn)調(diào)度和 limit 行為完全不符合預(yù)期。關(guān)于 readinessProbe 和 livenessProbe 的 pathnginx:1.25 官方鏡像里默認(rèn)不帶 /nginx_status 這個(gè)模塊路徑如果你照抄這個(gè)配置會(huì)發(fā)現(xiàn)就緒探針一直失敗。平時(shí)用的話直接探 / 或者 /index.html 更保險(xiǎn)。這種細(xì)節(jié)問(wèn)題在測(cè)試環(huán)境驗(yàn)證一下就能發(fā)現(xiàn)我列出來(lái)是提醒你不要被教程里的示例坑到。3.2 多容器協(xié)作用 Pod 內(nèi)兩個(gè)容器搭建 LNMP 示例平時(shí)被問(wèn)得特別多的問(wèn)題就是“k8s 里怎么部署 LNMP”。網(wǎng)上能搜到一些“k8s lnmp 架構(gòu)實(shí)驗(yàn)”之類的教程但很多講得很含糊。這里我給出一套最經(jīng)典的 Pod 內(nèi)雙容器方案nginx 容器和 PHP-FPM 容器放同一個(gè) Pod共享代碼目錄nginx 把 PHP 請(qǐng)求轉(zhuǎn)發(fā)到本機(jī) 9000 端口PHP-FPM 處理完后把結(jié)果返回給 nginx。先看 Pod 的定義再把關(guān)鍵點(diǎn)拆開(kāi)講。apiVersion: v1 kind: Pod metadata: name: lnmp-pod labels: app: lnmp spec: containers: - name: nginx image: nginx:1.25 volumeMounts: - name: web-code mountPath: /usr/share/nginx/html ports: - containerPort: 80 readinessProbe: httpGet: path: /index.php port: 80 initialDelaySeconds: 5 periodSeconds: 5 - name: php-fpm image: php:8.2-fpm volumeMounts: - name: web-code mountPath: /var/www/html ports: - containerPort: 9000 volumes: - name: web-code emptyDir: {}這段配置只用了幾個(gè)核心字段但表達(dá)了一個(gè)非常重要的概念nginx 和 php-fpm 兩個(gè)容器通過(guò) emptyDir 共享了同一份代碼目錄這正是前面我講的 Pod 內(nèi)容器共享 Volume 的實(shí)際應(yīng)用。emptyDir 的生命周期等于 Pod 的生命周期Pod 刪了它就沒(méi)了所以這個(gè)方案適合驗(yàn)證、實(shí)驗(yàn)和臨時(shí)負(fù)載生產(chǎn)環(huán)境一般會(huì)用 PVC 把代碼卷?yè)Q成持久化的。nginx 配置里要讓 PHP 請(qǐng)求轉(zhuǎn)到 php-fpm你可以用 ConfigMap 掛一個(gè)自定義的 nginx 配置核心是這一句location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include fastcgi_params; }關(guān)鍵點(diǎn)來(lái)了fastcgi_pass 寫(xiě)的是 127.0.0.1:9000因?yàn)閮蓚€(gè)容器共享網(wǎng)絡(luò)命名空間所以 nginx 容器里訪問(wèn) localhost:9000 可以直接到達(dá) php-fpm 容器。這一點(diǎn)如果你拆成兩個(gè) Deployment 就很難做到——你只能通過(guò) Service 或 ClusterIP 連接配置和維護(hù)成本都會(huì)高不少。而 MySQL 在 LNMP 架構(gòu)里我傾向于不放進(jìn)同一個(gè) Pod。它是典型的有狀態(tài)組件數(shù)據(jù)要持久化、要主從同步、要單獨(dú)的存儲(chǔ)和備份策略。一般做法是用 StatefulSet 獨(dú)立部署或者直接使用托管的數(shù)據(jù)庫(kù)服務(wù)。把 MySQL 硬塞進(jìn)和 nginx、php 同一個(gè) Pod短期實(shí)驗(yàn)沒(méi)問(wèn)題上了生產(chǎn)一定會(huì)因?yàn)閿?shù)據(jù)卷生命周期和調(diào)度策略的問(wèn)題吃大虧。3.3 Deployment 還是裸 Pod什么時(shí)候不該直接建 Pod上面兩個(gè)例子我為了講解概念都用的裸 Podkind: Pod。但生產(chǎn)環(huán)境我強(qiáng)烈建議你不要直接創(chuàng)建裸 Pod而是通過(guò) Deployment、StatefulSet、DaemonSet 這些控制器來(lái)管理。為什么裸 Pod 如果所在的節(jié)點(diǎn)宕機(jī)了k8s 不會(huì)自動(dòng)幫你在別的節(jié)點(diǎn)重建。但 Deployment 創(chuàng)建的 Pod 是有 ReplicaSet 這樣的控制器盯著Pod 突然掛掉它會(huì)開(kāi)一個(gè)新的補(bǔ)齊節(jié)點(diǎn)掛了調(diào)度器也會(huì)在健康節(jié)點(diǎn)上重新創(chuàng)建。Deployment 還自帶滾動(dòng)更新、回滾、擴(kuò)縮容能力這些是裸 Pod 完全沒(méi)有的。簡(jiǎn)單說(shuō)Deployment 與 Pod 的關(guān)系就像系統(tǒng)進(jìn)程和守護(hù)進(jìn)程的關(guān)系你自己的代碼是那個(gè) Pod而 supervisor 是那個(gè) Deployment。沒(méi)有 supervisor 的話進(jìn)程死了沒(méi)人管有 supervisor 的話它保證你需要的副本數(shù)永遠(yuǎn)在線。所以實(shí)際生產(chǎn)中應(yīng)用部署的規(guī)格應(yīng)該長(zhǎng)這樣apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80可以看到 Pod 的定義被挪到了 template 里這就是“Pod 模板”??刂破髫?fù)責(zé)管理這份模板產(chǎn)出的所有 Pod 實(shí)例。剛開(kāi)始用 k8s 時(shí)我喜歡用 kubectl run nginx --imagenginx --replicas3 試試手但后來(lái)發(fā)現(xiàn)這樣的自動(dòng)化可維護(hù)性不強(qiáng)所以現(xiàn)在一律推薦用 yaml 文件管理方便進(jìn) Git方便審閱方便回滾。4. Pod 的資源模型、調(diào)度與網(wǎng)絡(luò)4.1 資源請(qǐng)求與限制背后的調(diào)度和驅(qū)逐邏輯Pod 里每個(gè)容器都可以聲明 resources.requests 和 resources.limits。requests 是調(diào)度依據(jù)limit 是運(yùn)行限制。調(diào)度器只看 requests它要保證一臺(tái)節(jié)點(diǎn)上所有 Pod 的 requests 總和不超過(guò)節(jié)點(diǎn)可分配資源。也就是說(shuō)哪怕節(jié)點(diǎn)內(nèi)存其實(shí)有 64G但上面已存在的 Pod 請(qǐng)求了 50G再來(lái)一個(gè)新的 Pod 請(qǐng)求 20G那它就會(huì) Pending直到有節(jié)點(diǎn)騰出空間或你擴(kuò)容節(jié)點(diǎn)。limits 則由 kubelet 在啟動(dòng)容器時(shí)配置成 cgroup 的上限。這里有個(gè)常見(jiàn)的認(rèn)知誤區(qū)CPU 的限制是限流throttling容器超過(guò)了會(huì)被降速但內(nèi)存的限制是硬限制容器只要嘗試分配超過(guò) limit 的內(nèi)存內(nèi)核 OOM Killer 就會(huì)把進(jìn)程殺掉kubelet 檢測(cè)到容器異常退出后再按策略重啟從而表現(xiàn)為 OOMKilled 狀態(tài)。根據(jù) request 和 limit 的設(shè)置方式Pod 會(huì)被劃分成三種 QoS 級(jí)別Guaranteed、Burstable、BestEffort。三者都設(shè)了 request 且等于 limit是 Guaranteed只有部分容器設(shè)或 request 小于 limit是 Burstable完全不設(shè) resources是 BestEffort。當(dāng)節(jié)點(diǎn)內(nèi)存壓力過(guò)大時(shí)kubelet 會(huì)進(jìn)入驅(qū)逐流程驅(qū)逐順序是 BestEffort 先被干掉然后是 Burstable最后才是 Guaranteed。這也是生產(chǎn)環(huán)境我給核心業(yè)務(wù)全設(shè) requestlimit 的原因——我不想讓它成為資源緊張時(shí)第一個(gè)被犧牲的對(duì)象。這個(gè)資源模型也解釋了為什么二進(jìn)制方式搭建 k8s 集群或離線部署時(shí)經(jīng)常有人遇到 Pod 調(diào)度失敗的問(wèn)題節(jié)點(diǎn)容量明明看起來(lái)夠但可用資源被系統(tǒng)預(yù)留system-reserved、kube-reserved 這些參數(shù)扣了一部分然后 requests 就會(huì)被拒絕所以計(jì)算節(jié)點(diǎn)容量時(shí)要把預(yù)留資源考慮進(jìn)去。4.2 調(diào)度約束從節(jié)點(diǎn)選擇到親和性默認(rèn)情況下調(diào)度器根據(jù)資源 requests 選擇節(jié)點(diǎn)但很多時(shí)候我們需要主動(dòng)控制 Pod 的去向。nodeSelector 是最簡(jiǎn)單的方案比如給帶有 gputrue 標(biāo)簽的節(jié)點(diǎn)專門(mén)調(diào)度 GPU 任務(wù)spec: nodeSelector: disktype: ssd更復(fù)雜一點(diǎn)的是節(jié)點(diǎn)親和性和 Pod 親和性。節(jié)點(diǎn)親和性支持硬性要求requiredDuringScheduling和軟性偏好preferredDuringScheduling軟性偏好會(huì)給節(jié)點(diǎn)打分得分高的優(yōu)先被選中但如果沒(méi)有滿足的節(jié)點(diǎn)也不會(huì)調(diào)度失敗。Pod 親和性解決的場(chǎng)景是“我想讓這些 Pod 盡量待在同一臺(tái)機(jī)器上”或者“絕對(duì)不要把有沖突的服務(wù)放一起”比如把 Web 和緩存放在同節(jié)點(diǎn)減少延遲而把兩個(gè)副本分散到不同可用區(qū)保證高可用。污點(diǎn)Taint和容忍Toleration是一個(gè)很容易被忽略但生產(chǎn)環(huán)境一定要明白的機(jī)制。節(jié)點(diǎn)有了污點(diǎn)默認(rèn)所有 Pod 都不能調(diào)度上去除非 Pod 顯式容忍了這個(gè)污點(diǎn)。典型用途是給專用節(jié)點(diǎn)打污點(diǎn)只允許特定 Pod 進(jìn)去或者用 NoExecute 污點(diǎn)把故障節(jié)點(diǎn)上的 Pod 全部驅(qū)逐出去。有時(shí)候 Pod 一直 Pending你用 kubectl describe 能看到類似 0/3 nodes are available: 3 node(s) had untolerated taint 的事件排查方法也就很清晰了。4.3 Pod 網(wǎng)絡(luò)IP 從哪來(lái)端口怎么通每個(gè) Pod 在集群內(nèi)部都有一個(gè)獨(dú)立的 IP這個(gè) IP 由 CNI 插件分配。大部分默認(rèn)安裝的集群用的是 Calico、Cilium 或 Flannel 這類方案Pod 會(huì)被分配一個(gè)與宿主機(jī)不同網(wǎng)段的地址。比如節(jié)點(diǎn)是 192.168.1.xPod 可能是 10.244.x.x各節(jié)點(diǎn)上的 Pod 可以通過(guò) Overlay 網(wǎng)絡(luò)跨主機(jī)通信。Pod 內(nèi)的容器共享同一個(gè) IP 和網(wǎng)絡(luò)命名空間這就是前面講的 127.0.0.1:9000 能直達(dá)兄弟容器的原因。在 Pod 外部訪問(wèn) Pod 時(shí)通常有兩種方式一是同集群內(nèi)通過(guò) Service 的 ClusterIP二是調(diào)試時(shí)用 kubectl port-forward 把本地端口映射到 Pod 端口。還有一種是 hostNetwork: true讓 Pod 直接用節(jié)點(diǎn)網(wǎng)絡(luò)不走 CNI這類用法常見(jiàn)于對(duì)網(wǎng)絡(luò)性能極其敏感的組件或需要固定端口的系統(tǒng)組件。順帶提一個(gè)比較進(jìn)階的方向如果需要給 Pod 配置多個(gè)網(wǎng)絡(luò)接口比如同時(shí)接入業(yè)務(wù)網(wǎng)和管理網(wǎng)就會(huì)用到 Multus 這種“多網(wǎng)絡(luò)插件”方案。Multus 本身不實(shí)現(xiàn)網(wǎng)絡(luò)它把多個(gè) CNI 插件比如搭配 macvlan 或 ipvlan組合起來(lái)給 Pod 創(chuàng)建多個(gè)網(wǎng)卡并附加不同網(wǎng)絡(luò)的 IP。在一些需要 VLAN 隔離的部署場(chǎng)景比如 k8s multus 網(wǎng)絡(luò) vlan 配置就是通過(guò)這種方案把 Pod 接入到不同的二層網(wǎng)絡(luò)中。這是個(gè)加分技能日常單網(wǎng)絡(luò)的集群用不上但遇到多網(wǎng)卡、VLAN 需求時(shí)你會(huì)非常感激這個(gè)設(shè)計(jì)。5. 排查實(shí)錄Pod 起不來(lái)的 10 種典型情況5.1 先學(xué)會(huì)看狀態(tài)、事件和日志排查 Pod 問(wèn)題最忌諱的就是上來(lái)就刪除重建那樣你既看不到根因也可能把現(xiàn)場(chǎng)環(huán)境破壞了。正確順序應(yīng)該是先 kubectl get pods 看整體狀態(tài)再 kubectl describe pod 看事件Events和容器狀態(tài)最后針對(duì)有問(wèn)題的容器 kubectl logs 看日志。如果容器已經(jīng)崩潰重啟了加 --previous 參數(shù)看上一次啟動(dòng)的日志很多問(wèn)題就藏在那里。kubectl describe 輸出里面最重要的部分是 Events 字段它按時(shí)間順序記錄了 kubelet 對(duì) Pod 做的所有動(dòng)作和失敗原因。比如 FailedScheduling、Failed to pull image、Back-off restarting failed container 等每個(gè)關(guān)鍵事件后面一般都有原因和涉及的對(duì)象這足夠我們定位 80% 的問(wèn)題。5.2 常見(jiàn)錯(cuò)誤和排查建議速查表下面的表格是我根據(jù)這幾年實(shí)操整理出來(lái)的高頻 Pod 異常問(wèn)題幾乎每個(gè)集群都用得上現(xiàn)象根本原因最常見(jiàn)排查方向Pending資源不足、節(jié)點(diǎn)有污點(diǎn)、調(diào)度約束不滿足describe 看 FailedScheduling 事件檢查 requests 是否超出節(jié)點(diǎn)可分配ImagePullBackOff鏡像拉取失敗檢查鏡像名、tag 是否正確私有倉(cāng)庫(kù)認(rèn)證是否正確離線環(huán)境是否有鏡像倉(cāng)庫(kù)ErrImagePull鏡像不存在或倉(cāng)庫(kù)無(wú)權(quán)限查看 describe 事件中的具體報(bào)錯(cuò)not found / denied / timeoutCrashLoopBackOff應(yīng)用啟動(dòng)即崩潰或 liveness 探針失敗logs --previous 看上一次日志檢查啟動(dòng)命令和探針配置Running 但沒(méi) ReadyreadinessProbe 一直失敗檢查探針訪問(wèn)的路徑、端口是否真的可訪問(wèn)Running 但無(wú)法訪問(wèn)Service 沒(méi)匹配到標(biāo)簽、端口不一致檢查 Service selector 和 Pod labels 是否匹配檢查 targetPortContainerCreating 卡住存儲(chǔ)掛載不成功、CNI 網(wǎng)絡(luò)插件異常describe 看事件常見(jiàn)是 volume 掛載超時(shí)或 sandbox 創(chuàng)建失敗Terminating 卡住Pod 內(nèi)有進(jìn)程不響應(yīng) SIGTERM、finalizer 未完成檢查容器主進(jìn)程是否處理了優(yōu)雅退出必要時(shí) kubectl delete --forceOOMKilled容器內(nèi)存超過(guò) limit 被 OOM Killer 殺調(diào)大內(nèi)存 limit 或優(yōu)化應(yīng)用內(nèi)存檢查 QoS 級(jí)別Unknown節(jié)點(diǎn)失聯(lián)kubelet 心跳中斷登錄節(jié)點(diǎn)查 kubelet 服務(wù)狀態(tài)檢查節(jié)點(diǎn)網(wǎng)絡(luò)和磁盤(pán)這些異常里我最想單獨(dú)說(shuō)一下 OOMKilled它是“重啟后容器可以起來(lái)跑一會(huì)兒又掛”的常見(jiàn)元兇如果沒(méi)看日志大概率會(huì)被誤解成“應(yīng)用代碼問(wèn)題”。用 kubectl describe pod 看容器狀態(tài)里的 Last State如果顯示 Reason: OOMKilled那就是內(nèi)存不夠不是業(yè)務(wù)代碼崩了。5.3 我實(shí)際踩過(guò)的坑和幾個(gè)現(xiàn)場(chǎng)經(jīng)驗(yàn)第一個(gè)坑是離線部署時(shí)鏡像拉不動(dòng)。內(nèi)網(wǎng)環(huán)境里 IfNotPresent 這個(gè)鏡像拉取策略本來(lái)沒(méi)問(wèn)題但如果你先手動(dòng) ctr -n k8s.io images import 導(dǎo)入了鏡像卻沒(méi)有把 tag 改成和 yaml 里完全一致kubelet 還是會(huì)去遠(yuǎn)端拉。這個(gè)問(wèn)題的排查時(shí)間往往特別長(zhǎng)因?yàn)橐磺锌雌饋?lái)都正常但 imagePullPolicy 不會(huì)自動(dòng)糾錯(cuò)。我的建議是離線環(huán)境一律顯式寫(xiě) imagePullPolicy: IfNotPresent并且部署前用 crictl images 核對(duì)節(jié)點(diǎn)上的鏡像 tag。第二個(gè)坑是探針的 initialDelaySeconds 設(shè)得太小。應(yīng)用啟動(dòng)需要 30 秒但 readinessProbe 的第 3 秒就開(kāi)始探測(cè)結(jié)果連續(xù)失敗 3 次Pod 被標(biāo)記未就緒流量就進(jìn)不來(lái)??雌饋?lái)像服務(wù)雪崩其實(shí)只是探針配置問(wèn)題。如果你部署的是個(gè)啟動(dòng)慢的 Java 應(yīng)用我建議配合 startupProbe 一起用把 startupProbe 的 failureThreshold 調(diào)大等它啟動(dòng)完畢后再接管后續(xù)探測(cè)。第三個(gè)坑是日志一直在刷但沒(méi)有關(guān)鍵信息。遇到 CrashLoopBackOff第一條命令我一般是 kubectl logs --previous --tail200如果還是沒(méi)有啟動(dòng)報(bào)錯(cuò)我會(huì)進(jìn)容器手動(dòng)執(zhí)行啟動(dòng)命令看進(jìn)程能否前臺(tái)運(yùn)行。很多基礎(chǔ)鏡像默認(rèn)通過(guò) shell 腳本啟動(dòng)shell 腳本里 cd 不存在的目錄或引用未注入的環(huán)境變量都會(huì)導(dǎo)致啟動(dòng)分鐘級(jí)崩潰而這種問(wèn)題看容器日志往往只是一個(gè)泛泛的退出碼非??简?yàn)?zāi)托摹_€有一個(gè)我覺(jué)得特別值得說(shuō)的經(jīng)驗(yàn)用 kubectl port-forward 臨時(shí)驗(yàn)證 Pod 內(nèi)部服務(wù)。比如我只想確認(rèn) nginx Pod 內(nèi)部能否正常訪問(wèn) PHP寫(xiě) Service 之前可以先 port-forward 到本地直接 curl 一下。這比構(gòu)建完整 Service 后再測(cè)試快很多也方便區(qū)分問(wèn)題出在 Pod 自身還是出在 Service 層。6. 從 Pod 到集群常用命令與學(xué)習(xí)路徑建議6.1 Pod 相關(guān)命令必須滾瓜爛熟學(xué) k8s 最忌諱是只會(huì)看 kubectl get pods完整排查一套流程下來(lái)以下命令基本缺一不可# 查看 Pod 列表和簡(jiǎn)要狀態(tài) kubectl get pods -o wide # 查看 Pod 詳細(xì)信息重點(diǎn)是 Events 和容器狀態(tài) kubectl describe pod pod-name # 實(shí)時(shí)查看 Pod 日志 kubectl logs -f pod-name # 查看崩潰容器的上一次日志 kubectl logs pod-name --previous # 進(jìn)入 Pod 內(nèi)部容器 kubectl exec -it pod-name -- /bin/sh # 本地端口轉(zhuǎn)發(fā)到 Pod kubectl port-forward pod/pod-name 8080:80 # 查看節(jié)點(diǎn)資源占用排查調(diào)度失敗 kubectl top nodes # 查看所有命名空間下的 Pod kubectl get pods -A用 kubectl get pods 時(shí)我習(xí)慣加 -o wide因?yàn)樗鼤?huì)顯示出 Pod IP 和所在的節(jié)點(diǎn)一眼就能看出調(diào)度分布是否合理。describe 和 top 是排查資源問(wèn)題的兩大法寶不要省。6.2 學(xué)習(xí)閉環(huán)Pod 是入口但不要停在入口很多人問(wèn)怎么快速上手 k8s我的建議是一致的先造一個(gè)小集群然后用 Pod 把你的第一個(gè)服務(wù)跑起來(lái)再把 Deployment、Service、Ingress 串起來(lái)打通“從 Pod 到對(duì)外訪問(wèn)”這條鏈路然后逐步加探針、加資源限制、加自動(dòng)擴(kuò)縮容。Pod 是這個(gè)閉環(huán)的核心起點(diǎn)但學(xué)習(xí)不應(yīng)止步于此。很多網(wǎng)上流傳的“k8s 經(jīng)典版”教程其實(shí)講的就是把單機(jī) Docker Compose 的應(yīng)用比如 LNMP搬進(jìn)集群的過(guò)程這確實(shí)是最適合實(shí)戰(zhàn)的教學(xué)路徑。你從 docker compose 升級(jí)到 k8s 時(shí)第一件要適應(yīng)的就是思維方式的變化Compose 里的 service 在 k8s 里可能是一個(gè) Deployment Service或者一個(gè) Pod 里的多容器Compose 里的 depends_on 在 k8s 里變成了探針配合優(yōu)雅退出Compose 里配置的端口映射在 k8s 里要讓位給 Service 和 Ingress。這些變化本質(zhì)上都發(fā)生在 Pod 這一抽象層上。如果是用 Rancher 這類圖形界面管理集群也是一樣的道理——界面上減少了你敲命令的頻率但 Pod 的狀態(tài)、事件、日志這些核心信息不會(huì)變理解底層機(jī)制才能正確操作那些按鈕。二進(jìn)制部署 k8s 則更鍛煉你對(duì)組件和網(wǎng)絡(luò)的理解至少你親手搭過(guò)一遍集群之后再遇到“Pod 無(wú)法跨節(jié)點(diǎn)通信”“kubelet 沒(méi)起來(lái)導(dǎo)致 Pod 一直 Pending”這類問(wèn)題定位速度會(huì)快得多。7. 最后的幾個(gè)小建議回到標(biāo)題“k8s 中的 Pod”寫(xiě)了這么多最后說(shuō)幾個(gè)實(shí)操層面的個(gè)人感悟。一個(gè)是我每次教學(xué)和排查時(shí)都會(huì)強(qiáng)調(diào)遇到問(wèn)題先 kubectl describe pod這比任何調(diào)試工具都值得依賴。因?yàn)?describe 里的 Events 記錄了 kubelet 對(duì) Pod 做過(guò)的每一個(gè)關(guān)鍵動(dòng)作和失敗原因很多時(shí)候問(wèn)題根因已經(jīng)寫(xiě)在里面只是你沒(méi)看。另一個(gè)是寫(xiě) yaml 時(shí)盡量把標(biāo)簽labels寫(xiě)規(guī)范。Pod 的標(biāo)簽是 Service、Deployment、監(jiān)控告警相互關(guān)聯(lián)的橋梁標(biāo)簽設(shè)計(jì)混亂會(huì)直接導(dǎo)致 Service 選不上 Pod、監(jiān)控抓不到目標(biāo)、滾動(dòng)更新誤傷其他工作負(fù)載。哪怕你用的是 Rancher 這種圖形化工具標(biāo)簽和 selector 的匹配邏輯也不會(huì)變。最后一點(diǎn)是千萬(wàn)別怕實(shí)驗(yàn)時(shí)把 Pod 搞掛。k8s 的聲明式設(shè)計(jì)讓你可以隨便刪除、重建、滾動(dòng)更新試錯(cuò)的成本很低。真正值得投入時(shí)間的不是記住每個(gè)命令參數(shù)而是理解 Pod 在整個(gè)調(diào)度、網(wǎng)絡(luò)、存儲(chǔ)模型里的位置——把這個(gè)抽象層吃透了后面學(xué) StatefulSet、DaemonSet、Operator、自定義控制器你會(huì)發(fā)現(xiàn)全都是同一個(gè)底層邏輯在延伸。我從 Docker 單機(jī)時(shí)代走到現(xiàn)在最深刻的體會(huì)就是Pod 不是容器之上多套了一個(gè)概念它是理解 k8s 一切編排能力的地基。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久99热| 婷婷网五月天| 9有码中文| 久色视频| 熟女激情网| 久久6这里只有精品| 996热re视频在线观看视频| 丁香五月天激情| www开心激情网| 另类精品视频在线观看| 婷婷色六月| 色五月综合网| 玖玖综合色| 五月婷婷久久网| 婷婷五月天亚洲综合| 乱精品一区字幕二区| 丁香六月婷婷激情| 五月婷婷人妻| 六月五月婷婷| 另类视频丁香五月| 丁香五月综合在线播放| 丁香五月天天日| 99ri精品在线| 毛片新网地| 九久久婷婷| 久久婷婷五月天| 99热这里只有精品16| 精品无码色| 久久婷狠狠色| 色五月激情综合网| av九九| 1024婷婷综合久久五月天| 国产成人精品一区二三区熟女在线 | 丁香五月先锋| 91人人爽狠狠狠| 99热在线只有精品| 丁香五月天激情综合| 五月综合在线婷婷图片| 我要色综合五月婷婷| 婷婷射丁香| 超碰在线观看caop| 91精品综合久久婷婷九色| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 久久久激情| av久热| 涩五月婷婷| dingxiangtingtingliuyue| 久久亚洲色导航| 色色精品色| 中文AV在线播放| 婷婷欧美综合| 亚洲色色图片| 色综合综合网| 天堂综合久久 | 九九热免费| 中文网av| 欧美色97| 99精品无码| 97人人射| 啪啪五月婷婷| 大香蕉婷婷丁香视频在线| 欧美色色干| 伊人玖玖网| 婷婷色啪| 天天噜天天爱| 狠狠干综合| www.婷婷,com| 午夜少妇在线观看视频| 久热精彩视频98| 久久人视频| 九九色区| AV 3P| 五月天成人伊人| 思思热再线视频| 激情小说 五月天| 天天色激情| 五月综合婷婷五月| 九九RE视频在线精品| 亚洲字幕AV一区二区三区四区| 8050一级网| 九九精品re免费视频| 秋霞AV美国| 日本啪啪天堂| 六月丁香社区| 人人摸人人干| 人人综合久| 久99久视频| 五月婷婷黄色| 欧美日韩国产成人在线| 色综合网上班开心婷婷久久| 婷婷五月色播放| 婷婷丁香成人| 婷婷丁香五月天大香蕉| 色婷婷五月基地在线| 亚洲99在线视频| 丁婷婷五月天在线播放| 少妇高潮A片无套内谢麻豆传| 五月天婷婷激情六月久久| 99热色婷婷| 激情美女五月天| 色婷婷九月综合| 五月 激情视频| 情欲禁地| 综合激情五月四射婷婷| 五月婷婷激情性爱| 久九九热| 99免费视频网| 日韩精品视频中文字幕| 丁香五月情色| 操操人人| 碰碰女| 襙比视频| 精品国产AV色一区二区深夜久久| 97婷婷色| 91精品婷婷国产综合久久| .青娱乐天天操B| 五月色综合| 亚洲视频在线观看| 五月婷婷丁香啪啪| 91一起操| 五月婷婷丁香综合| 日韩精品999| 好吊兆人妻| 性爱综合网| 色婷婷狠狠| 夜夜操狠狠操| 激情丁香久久| 婷婷五月综合在线| 婷婷五月激情六月丁香| 九九色色| Av性爱网站| 99热资源在线| 五月丁香啪啪综合| 91色色色| 丁香成人五月天| 五月激情站| 岛国AAAV| 婷婷五月色播放| 人妻丰满精品一区二区A片| www.91在线观看| 婷婷中文字暮| 九热视频精品| 9久久久久久久久久久| 97碰91| 热久久66| 伊人天堂婷婷| 蜜臀99精品| 玖玖婷婷五月天毛片| 五月婷婷六月丁香综合视频在线| 国产AV一区二区三区最新精品| 色五月激情综合网| 任你艹| 综合久久婷婷五月丁香| 伊人综合网站| 九九性视频| 亚洲无码影片| 激情深爱五月天| 色五月,婷婷大香蕉| 99.色| 婷婷综合性爱网| 五月婷婷深爱六月| 在线综合91| 五月婷婷亚洲| 超碰91人人操| 蜜臀AV在线观看| 激情婷婷五六月天| 久久激情婷婷| 国产成人网站在线观看| 婷婷综合五月激情| 久久一伦| 天天插综合| 五月丁香婷婷综合在线| 久热99狠| 五月丁香啪啪啪啪| 五月丁香久久综合精品| 九九美女视频| 欧美性爱五月天| 丁香五月婷婷姐| 婷婷在线五月综合| 超碰超碰在线| 色 五月婷婷基地| 字母不卡码人逼| 色婷婷亚洲五月天| 丁香五月自拍| 伊人综合婷婷| 激情久久久| 九九久久综合网站| 97九色| 色噜噜狠狠色综合日日| 99色精品| 五月婷婷成人w| 久久九九一區| 欧美性爱五月天| 婷婷五月噜噜| 亚洲精品欧洲精品| 久久99激情| 综合婷婷| 欧洲综合视频| 精品亚洲VA网站| 91久久久久久久久久久| 久久丁香综合精品综合| 色综合伊人网| 欧美大香蕉视频| 热的国产,热的综合,热的有码| 五月丁香在线观看国产| 六月婷婷五月丁香| 99久久综合网| 丁香午夜天| 久久久人妻不卡| 在线免费视频caop| 五月丁香激情综合| 99热国产免费| 九九热在线99| 丁香九月久久| 66色在线日韩| 五月 婷婷 成人| 激情文学 综合 色| 色综合久久44| 99视频九九热| 91视频久久久| 欧美日韩日韩成人| 亚洲精品另类| 95精品区一区二| 色色五月婷婷| 亚州色婷婷| 色色色色av色色色色| 综合狠狠伊人| 思思99热热热99| 丁香婷婷午夜| a毛片二逼wwwwwwwwww| 久久9视频| 国产成人亚洲综合A∨婷婷| 小视频aaa久久久| 在线另类视频| av色婷婷| 色综合区| 五月丁香综合啪啪| 91碰碰碰| 五月天天天综合| 午夜亚洲国产精品av一区二区| 俺去婷婷 丁香| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | site:feetmall.com| 婷婷五月综合色中文字幕| 五月婷婷丁香大陆免费| 97人人操在线| 九九碰九九爱97超碰| 国产精品国产| 亚洲最大在线| 开心五月婷婷五月| 99在线观看免费精品视频| 最新色色五月天| 日本在线视频播放91| 美女xx不卡| 五月天丁香啪啪啪啪| 色图亚洲91| 日欧一片内射VA在线影院| 五月婷婷激情综合| 成人无码精品1区2区3区免费看| 丁香五月婷婷色| 九九99精品视频在线观看| 久久与婷婷| 久久久久婷婷| 欧美槡BBBB槡BBB少妇| www.色婷婷.com| 色99视频| 97干资源在线观看| 五月婷婷亚洲| 丁香五月天婷婷久久| 91操色| 五月婷婷成人网首页| 综合狠狠干| 五月天婷婷深深爱| 天天综合网91| 少妇被下春药玩弄A片| 久久久国产精品黄毛片| 国产中文字幕在线视频免费观看| 日本美女上人| 97深爱伊人综合| 婷婷五月天视频在线观看| 99热精国产这里只有精品| 日本熟女一区二区| 91狠狠综合网| 国产精产国品一二三在观看| 久操97| 丁香五月久久| 激情九九这里只有精品| 狠狠色噜噜狠狠狠狠综合| 色五月综合网| 天天综合网~91| 综合色吧| 白天AV月月| 五月丁香亚洲婷婷| 五月丁香啪啪网| 九九婷婷激情综合网| 少妇婷婷五月天| www.色99| 久久久性爱视频| 久久综合五月天| 成人无码精品1区2区3区免费看| 黄色av网站在线免费播放| 金品在线视频99| 激情五月深爱五月| 激情综合色婷婷啪啪六月天| AA片在线观看视频在线播放| 99热主页日本| 激情五月,婷婷五月,丁香五月| 久久伊人婷婷| 99热亚洲综合| 色婷婷综合五月| 激情综合五月丁香六月婷婷| 久久婷婷五月丁香网| 综合99在线| 色色AV色色色东莞| 亚洲乱码日产精品BD| 色综合香蕉| 草美女在线观看视频在线播放| 丁香五月亚综合图片| 三级黄网站| 婷婷酒色网| 五月丁香日本片| 天天干天干| 久久性视频| 激情综合网站| 开心五月深爱五月丁香五月激情五月 | 五月婷婷婷婷婷婷艺术| 五月婷婷六月色| 另类丁香综合| 国产玖玖资源| 大香蕉 婷婷| www.99色| 另类小说五月天| 久久香视频| 日韩抽插操逼| 婷婷久久综合| 99视频精品全部免费看| 狠狠久久婷五月| 婷婷六月偷拍| 五月婷婷影| 亚洲视频综合网| 九九色热| 丁香五月婷婷影院| 国产日比| 色99网站| 一起草无码视频| 99色热| 狠狠色丁香婷婷久久综合| 天天狠狠色| 嫩草AV久久伊人妇女超级A| 99精品视频偷拍| 九九在线精品| 婷婷终合色图| 99热日韩| 丁香五月天在线观看视频| 久操福利| 色噜噜狠狠色综合无码久久欧美| 久久这里只有精品99| 九九九色综合| 国产成人+综合亚洲+天堂| 大香蕉久操| 色婷婷婷婷| 另类专区在线| 色婷婷亚洲精品天天综| 狠狠香婷婷五月| 婷婷五月在线视频| 丁香花五月天| avh片在线观看| 日韩操| 美女婷婷激情亚洲| 青青草成人网| 色五月色五天色情网| 91婷色| 综合色99| 国产精产国品一二三在观看| 五月天五月天成人网亭亭成人色网站| 欧美日韩中国| 国产激情综合五月久久| 天天操天天爽天天爱| 日韩成人无码| 色色亚洲五月天| 玖玖婷婷色| 99碰超| 夜夜爽天天| 国产乱妇乱子在线播视频播放网站 | 好好干av| 久久五月天免费网站| 久久激情五月婷婷| 色热久资源| 国产毛多水多女人A片| 玖操97| 五月丁香趴趴| 九九碰九九爱97| 色婷婷五月天综合网| 4399在线观看免费高清毛片| 激情综合区| www.婷婷五月天啪啪| 五月天丁香啪啪网| 九九99在线免费在线观看视频| 日本女va| 9999热在线观看| 色婷网| 中文字幕簧片| 五月婷婷狠狠干| 狠狠干狠狠干| 五月婷婷九九热| sesesesezonghe| 伊人丁香五月天丁香在线婷| 色五月成人| 婷婷夜夜夜夜| 九九色热| 99热这里有精品首页10| 久久婷婷九月国产精品| 亚洲高清在线| www.操.com| 国产精品久久99| 婷婷九九色| 六月色色| 欧美精品18| 五月丁香六月婷婷综合免| 丁香色影院| 欧美99热| 久草天堂| 五月激情在线| 色五XX| 亚洲欧洲99| 97自拍99| 久久久久视剧HD| 丁香六月天| 婷婷丁香五月网| 色婷婷丁香五月高清在线| 五月丁香激情综合啪啪| 九九九AAA热视频| 五月天激情综合| 少妇性按摩无码中文A片| 丁香五月婷婷丫| 91碰| 99综合自拍| 久久丁香婷婷色情综合| 天天碰夜夜操| 久热这里| 九九色精品| 五月婷婷中文字幕| 久久这里只精品| 婷婷五月天综合色| 精品皮股午夜AV| 激情q青青草在线婷婷| AV在线中文| 九九九午夜视频| 东京热五月婷婷| 蜜桃人妻无码AV天堂三区| 六月婷婷激情图片| 色婷操逼| 久久色情| 色五月婷婷五月| 婷婷五月综合社区| 色综合五月| 天天干com| 99久久免费精品| 成人欧美Va| 色亚洲婷婷| av婷婷丁香 六月| 欧美群妇大交乱婬网| 国产激情视频在线观看| 18av天堂| 综合网激情五月天| 日日操日日射| 六月婷婷久久大全| 人妻精品一区二区三区| 影音先锋天天日| 色五月成人| 激情综合网激情五月天| 亚洲av成人在线| 99久在线精品99re8热| 五月丁香影院| 欧美在线视频99| 五月天综合| 亚洲妇女熟BBW| 精品一二三区久久AAA片| 熟妇内谢69XXXXXA片| 思思久久99热只有频精品66| 一片AV片免费播放| 色婷婷97| 色国产五月| 色五月激情基地| 天天日天天干天天插天天射| 狠狠干,狠狠操| 激情综合在线观看| 99成人| 丁香五月欧美婷婷综合| 伦99热| 婷婷五月综合在线| 6080av| 久机视频这只有精品| 亚洲视频操| 思思久久99| 天堂伊人干| 色丁香五月婷婷综合久久| 伊人网啪啪| 色色五月天婷婷| 激情综合色婷婷六月天| 婷婷精品| 91人人爽久久涩噜噜噜| 久久婷色| 懂色av粉嫩AV蜜臀AV| 超碰国产在线观看| 国产 A片 自拍| 婷婷瑟瑟五月天| 玖玖爱综合网| 另类五月激情| 九九热AV| 99热免费精品| 丁香五月婷婷啪啪| 日本专区久久| 婷婷涩涩网| 精品人妻一区| 九九99九九精品免费| 亚洲超级碰| 日本精品。999| 99视频久久| 五月天色婷婷综合| A级毛片高清免费不卡播放谢谢谢谢| 91久久99久久91熟女精品| 久久久久99精品成人片| 激情五月天婷婷五月天| 欧美一线视频| 九九久久综合网站| 亚洲综合五月| 婷婷激情人妻| 99性爱视频网站| 色婷婷电影网| 男人的天堂五月丁香| 日韩av大全| 色久九| 婷婷五月天综合久久日| 五月丁香六月婷婷中文版| 天天做天天爱天天高潮| 99ri精品在线观看| 五月丁香六月婷婷玖玖| 九九99精品| 91精品综合久久婷婷九色| 久久午夜理论| 91色久| 99热主页日本| 久久综合中文字幕| 久久99精品久久久| 五月丁香婷婷激情视频| 色欲AVV| 色六月丁香婷婷狠狠干| 五月天婷婷成人网| 天天射影| 婷婷五月天精品| 丁香五月婷婷天堂大香蕉| 五月婷婷丁香综合| 99久久超级| 婷婷舔| 91操人视频| 妇激情基地| 六月婷婷av| 吊色AV男人的天堂| h在线看免费版在线看| 婷五月天| 久久丁香综合| 色色色地址| 婷婷狠狠操| 色婷婷色综合久久精品V| 丁香六月高清视频| 影音先锋91网站在线观看| 亚洲精99| www.97视频| 5月婷婷性视频| 国产真实乱了老女人视频| 久久综合网免费视频| 99热在线观看免费精品| site:901-07.com| 99亚洲精品| WWW.激情| 欧美日本韩国亚洲| 欧美婷婷色五月| 色婷婷播放| 久久免片| 51成人| 婷婷色五月天在线观看| 中文字幕丰满乱孑伦无码专区 | 99re资源在线视频导航| 婷婷五月丁香基地| 国产精品电影网| 九色自拍| 天天日综合网射| 午夜不卡久久精品无码免费| 热99只有里视频| yazhochengrenavwang| 91色在线 | 日韩| 天天久久狠狠色综合| 丁香婷婷社区| 热99热9| 五月丁香趴趴| 五月激情偷拍| 国产高清精品色| 色综合久久综合| 综合色色婷婷| 天天干天天干天天干天天干天天干天天干天天 | 久久久五月五丁香| 成人国产欧美大片一区| 99A片| 激情五月天色色网| 综合欧美五月婷婷| 日韩99视频| 99激情视频热| 五月丁香视频色色| 国产亚洲精品AAAAAAA片 | 海外网站专业操老外| 久热九九| 色色综合网络| 亭亭丁香aV| 大香蕉AV电影在线| 五月丁香人妻| 九九99视频| 操操操操操操婷婷五月天| 亚洲免费综合一区| 亚洲操b| 五月激情五月婷婷五月天在线| 五月婷婷激情| 婷婷黄色网| 99视频内射三四| 午夜电影网VA内射| 草综合网| 99热费观看| 亚洲欧美在线观看| 日韩成人av在线| 久久激情五月天| 99er这里只有精品视频| 婷婷综合在线视频| 国产毛片精品一区二区色欲黄A片| www.99热在线| 色永久| 久久这里面只有精品视频| 金品在线视频99| 国产乱妇乱子在线播视频播放网站| 99热这里| 人草人人| 色婷婷a三区麻| 人妻久久久久| 久青操| 男人的天堂av俄罗斯热| 色五月激情五月| 婷婷在线免费| 97精品自拍视频| 婷婷五月深深爱| 六月综和久久| 丁香五月综合久久八| 伊人www22综合色| 色五月婷婷丁香凹凸| 噜噜噜狠狠色综合| 天天精品视频免费观看| 久久婷婷五月丁香网| 婷婷金品综合视频| 五月天社区狠狠| 激情五月综合ì香亚洲| 天天激情视频| www..com色爱| 色五月婷婷在线视频| 99成人网一区| 色婷婷成人| 91综合国免费久入| 丁香花五月天激情| 91玖玖| 久久婷婷五月丁香网| 超碰97免费在线| www色综合亚洲92| AV大片在线观看| 99操不停| 婷婷综合一二三| 99热99| 免费人人操| 婷婷五月丁香色综合| 97操| 色色色婷婷五月天| 99激情网| 99久久综合网| 五月天激情啪啪| 六月丁香VA| 狠狠色噜噜狠狠狠888| 成年人丁香五月| 日本狠狠干| 成人av在线网址| 另类图片色五月| 天天插综合| 99精品视频在线观看| 男女啪啪做爰高潮无遮挡| 一二线视频 另类| 日韩在线视频9色| 9999热免费视频视频| 亚洲天堂有码| 六月丁香综合| 久久婷婷五月国产色综合激情| 丁香 婷婷五月| 天天拍久久| 五月婷婷啪| 开心五月综合激情网| 99这里只有精| 婷婷综合丁香| 亚洲婷婷基地| 久久久久婷婷五月热综合| 婷婷综合网伊人| 五月激情天天干| 99九九综合久久九九| 激情影院丁香五月| 欧美A片在线视频免费观看| 9 大屁股在线视频精品| 99自拍视频在线观看| 亚洲综合网激情五月天| 久久人妻乱| 99热这里只有精品首页| 1024在线一区| 色5月婷婷色| 开心五月激情站| 99热这里只有精品中文字幕| 精品人妻一区二区| 97日日碰碰| 五月激情丁香五月| 深爱激情丁香五月| 色五月婷婷五月天| 1囯产午夜仑鲁鲁| 久久视这里只有精品| 五月丁香婷婷三级| 婷婷另类小说| 国产小网站| 天天狠狠插| 14色综合婷婷| 国产99久| 久久中文人妻系列| 激情综合激情综合| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 草草色情综合网| 久久大香蕉同僚| 五月丁香六月婷婷手机无线| 色5月婷婷| 激情五月九九九| 婷婷五月综合欧美在线播放| 99九九综合久久九九| 日韩在线看AV| 欧美噜噜免费观看| 97碰人人操| 久草x色在线观看99 | 日韩一级一片内射视频4K| 五月天综合久久| 久久婷婷综合五月天| 成人综合网站| 淫荡家庭AV| 丁香五月AV| 日本在线观看99| 思思视频精品| 美女五月天| 色女人久久| 婷婷五月另类网站| 日韩在线视频9色| 九九综合久久丁香婷婷,开心激情综合网| 五月婷婷六月天| 香蕉99网| 婷婷五月天六月| 色婷婷成人做爰A片免费看网站| 日韩啪啪视频| 另类专区在线| 天天日夜夜欢| 激情小说五月天| 亚洲AV电影美洲AV电影| 色性五月天| 大地资源色婷婷视频在线| 婷婷五月深情丁香深爱日韩| 一区二区成人电影| 久久99综合网| 久久五月婷婷丁香| 日韩黄色网络| 色色五月天丁香婷婷| 色婷婷在线影院| 色五婷婷开心缴| www99精品亚| 五月激情久久综合网| 999热在线观看视频| 99热只有精品在线观看| www,婷婷,com| 五月丁香五月天现场视频| 成人午夜视频精品一区| AⅤ色区| 99视频在线观看地址| 狠狠狠激情网| 色婷婷综合久久| 伊人五月成人| 亚洲热久| 99久久婷| 亚洲五月天第一综合干| 99热在线观看| 欧美婷婷五月天综合| 久久91久久精品久久| 俺也去在线视频 | 超碰99资源站| 亚洲六月色| 六月丁香视频网站| 超碰成人黄色网| 日本激情综合| 国产午夜精品一区二区| 亚洲免费看片| 婷婷五月天成人动漫| 成人无码免费一区二区中文| 亚洲狠狠干| 91无码视频| 极品少妇高潮啪啪AV无码| 色色亚卅| 色九月欧美| 色婷婷香蕉| 婷婷五月天天aV| 色五月激情综合| 看片视频在线免费日产在线看| 色五月丁香激情| 加勒比久热| 丁香六月啪啪| 天天色天天爱天天爽| 色蜜婷婷| 五月婷婷丁香| 饮料下药迷倒漂亮女同事强干| 亚洲区视频| 人人爽网| 日日干天天射| 婷婷激情5月| 色久女| 男人大jjc女人免费视频| 69色婷婷| hd五月婷婷在线| 九九十99视频| 国产人妻777人伦精品HD| 婷婷色六月| 欧美日韩AAAAA| www.久久婷婷| 亚洲精品又粗又大又爽A片 | 天天综合五月| 五月天婷婷青青草| 色玖玖| 极品少妇婷婷五月| 777精品久无码人妻蜜桃| 狠狠色综合网| 丁香五月激情视频在线| 五月婷婷AV| 婷综合六月| 久久五月婷| enecarbon-materials.com污K127封锁请涟系@wip1688 | 国产精品久久久久9999小说| 97碰| 直接看的AV| 2020久久婷婷五月| 九九九九国产| 色很久综合| 免费无码毛片一区二区A片| 99热在线精品播放| 久久人妻伦理| 日韩六十路91性交电影| 丁香啪啪| 三级毛片7979| 狠狠色丁香久久综合婷婷亚洲成人福利| 五月天久久久| 五月婷婷啪啪| 欧美久久网| 久久九九免费视频| 色播婷婷五月天| 色综合xx| 色激情综合狠狠婷婷| 91视频一起草| 九九九九九九毛片| 9久热视频| 综合色在线| 99热久久这里只有精品| 五月丁香六月婷| 97人人干| 成人在线日韩| 99操碰| 伊人激情啪啪| 五月丁香无码| 影音先锋天天日| 99视频这里有精品| 五月丁香婷婷基地| 国产成人99久久亚洲综合精品| 九九热99精品在线| www.国产亚洲69ty.久久久久久久久久久久 | 日日干天天| 天天碰夜夜爽| 五月丁香婷婷俺| 99热只有这里才是精品| 五月丁香婷婷国产精品综合| 开心激情色婷婷五月天| 国产67194| 婷婷99狠狠| 99热大全在线观看| 99热伊人| 丁香五月婷婷性爱| AV伊人青草丁香六月| 激情视频婷婷五月花| 成人在线日韩| 另类小说五月天| 99re99热| 亚洲日本激情| 色五月婷婷大| 99九九精品视频| 思思热在线视频99| 天天做天天摸| 五月丁花六月丁香综合| 亚洲色频| 大香蕉五月天| 99re在线观看| 丁香六月婷婷| 久久er99热精品一区二区| 国产av一区二区三区| 婷婷五月天 丁香五月天 裸体| 亚洲亚洲人成综合网络| 国内久久婷婷| 亚洲爱婷婷| 九色视频91疯狂| 狠狠色丁香久久久婷| 丁香五月1页| 青青草蜜臀| 日逼免费视频| 五月婷婷婷丁香播| 五月丁香中文| 婷婷在线视频| 亚洲亚洲人成综合网络 | 亚洲五月天另类小说图片| 久久久人妻| 人人播| 激情五月婷婷综合网| 欧美日本不卡黄色片| 日本免费91| 九九黄色网| 亚洲综合婷婷五月天| 五月天激情视频| 久99久视频| 成人中文网| 9久操| 久操人妻| 日本熟女内射| 超级碰碰碰97免费| 青柠影视免费高清电视剧| 99久热在线精品99re6热| 国产成人在线不卡AV| 天堂婷婷五月在线| 丁香五月中文字幕久色| 伦乱天堂| 婷婷六月成人| 97精品欧美91久久久久久久| 五月丁香婷中文| 久久人人妻| 成人做爰A片免费看视频| 久久九九经典| 6月丁香婷婷| 99精品小视频| 婷婷激情社区| 激情五月瑟瑟| 五月天亚洲最大成人| 五月天亚洲色| 强辱丰满人妻HD中文字幕| 国产又爽又猛又粗的视频A片| 欧美色偷拍| 天天色色婷婷| 变态另类9| 亚洲啪啪自拍| 五月丁香六月婷婷免费| 美国十月色婷婷在线观看| 韩日另类| 99啪啪视频| 5月婷婷激情在线| 熟女人妻一区二区三区免费看| 日本欧美999久久久三级片| 伊人大香五月天| 亚洲在线综合| 久久九九激情五月天| 丁香五月影院| 亚洲综合五月天婷婷| 综合色色五月| 26uuu色噜噜精品一区| 久久综合五月天| 伊人大香蕉爱聚| 成人在线网址| 五月天天视频| 97碰91| 亚洲精99| 亚洲激情网| 色色五月丁香婷婷| 婷婷播5月| 综合久久十三| 五月婷婷插一插| 婷婷五月天色| 99ri久久| 丁香五月成人网| 精品操逼一区二区| 中文字幕婷婷五月天在线观看| 天天操天天操天天操天天操天天操| 五月婷婷七月丁香| 国产成人亚洲综合A∨婷婷| 一本大道伊人AV久久综合| 色情五月丁香婷婷网| 成人在线日韩| 99re在线视频| 欧美日比视频| 亚洲无码激情| 五月婷婷69| 国产色视频网站2| 色色欧美色色| 色五月婷婷丁香凹凸| 婷婷十月丁香| 亚洲综合色婷| 性生活久久人妻| 色99最新网址| 欧美另类五月激情| 色色欧美色色色| 开心四月婷婷在线色播播| 丁香五月成人| 婷婷丁香高潮了| 五月香婷婷| 桃色激情婷婷伊人网| 国外亚洲成AV人片在线观看| 五月丁香色婷婷婷基地| 五月综合久久| 婷婷四色五月| 亚洲中字AV电影在线网站| av在线色五月丁香婷区久| 97碰精品| 婷婷五月18永久免费视频| 日韩AV在线电影| 欧美熟女乱又伦| av不卡网站| 日本丁香五月| 亚洲综合999| 久99久在线| 五月香蕉综合| 噼里啪啦完整版中文在线观看| 99热大片| www久久久久久| 久热这里| 五月丁香久久| 少妇人妻偷人精品无码视频新浪| 婷婷六月丁香久| 五月综合激情网| 九九无码| 97久久精品| 狠狠狠狠狠干| 夜夜爽天操| 一区二区三区XXXXXX| 欧美99热| 人妻综合网| 国外亚洲成AV人片在线观看| 久久久精品色| 五月天操逼激情| 亚洲婷婷欧美婷婷| 成人噜噜网| 亚洲亚洲人成综合网络| 色色色图| 六月丁香婷婷色狠狠久久| 日韩精品AV一区二区三区| 婷婷综合色播网| 另类A片| 九九在线视频| 第四色五月天| 婷婷,五月天,丁香,第一| 7EzOBIhNq85TO| 五月丁香婷婷综合视频| 欧美色骚婷婷五月天| 色天使久久综合| 五月天久久久| 五月天婷婷视频30| 久久久jd| 亚洲中文字幕AV在线| 97超碰在线免费观看| 欧亚色色| www.激情五月天.con| 欧美在线干| 九九免费视频| 激情丁香久久| 丁香五月天狠狠操| 久99热| 超碰99热精品| 日日射天天射| 久综合4| 精品久久艹| 婷婷五月天播播| 成人小说 五月天 婷婷| 婷婷五月无码| 丁香婷婷九月在线| 丁香五月天啪啪| 色色丁香激情五月| 五月婷婷内射网| 97超碰在线免费观看| 国产美女无遮挡裸体毛片A片| 99热官网| 色色COm| 热九九在线| 亚洲成人高清在线| 九月婷婷激情久久| 亚洲综合五月天| 殴美日比视频| 99色在线| 99在线国| 天天日天天摸天天| 五月婷在线观看| 一二区成人电影| 无码成人播放器| 99激情视频| 99爱这里只有精品免费视频| 久久这里只| 天天日,夜夜爽| 婷婷伊人无码| 粉嫩av懂色av蜜臀av熟妇| sewuyuetingtingiii| 五月婷婷伊| 天天干天天拍| 久久精品人妻| 思思re99视频在线观看| 男人天堂99| 深爱激情丁香| 天天爽天天做| 色久激情在线| 南京搡BBBB搡BBBB| 婷婷五月天直播| 六月五月丁香五月欧美| 狠狠爱激情网| 久久狠狠干| 99碰网站| 激情婷婷久久| 五月天大香蕉AV| 97国产精品女人碰碰| 97色一二三| 蜜桃婷婷丁香综合久久开心亚洲| 国产精品18久久久| 欧美私人家庭影院| 五月婷婷综合网| 婷婷大香蕉| 中文字幕日产A片在线看| 狠狠狠狠狠干| 婷婷色综合| 五月婷婷激情网| 伊人无码高清| 伊人五月天| 婷婷五月花| 91人人爱| 久久精品日| 久久33视频| 美国不卡视频| 人妻激情在线| 一本久道综合99| 超碰91av| 99热免费网站| 色婷婷色五月丁香| 五月丁香久久激情网| 婷婷色丁香六月| 激情开心五月天| 婷婷色片| 丁香六月在线| 天堂成人A片永久免费网站| 风流少妇A片一区二区蜜桃| 99这里有精品视频| 日韩av干| 日韩AC在线免费观看| www.色欲丁香婷婷| 色婷婷六月天| 激情四射婷婷| 婷婷丁香成人| 777米奇影视第四色| a性生活久久无| 婷婷丁香社区| 永久的网站AAAA| 婷婷五月天激情偷拍| 丁香5月婷婷| 五月婷婷九| 大香蕉九九| 一级AV片| 人妻激情视频| 久久这里只有精彩| 五月天天天开心激情网| 欧美一级操逼视频| 91一起操| 久久a热| 嫩草极品| 91干在线| 激情校园 亚洲| 99综合一区| 9久视频| 五月婷婷香蕉| 狠狠久久婷五月| 日日操夜夜操狠狠操| 婷婷五月花丁香| 人妻内射视频| 久色大香蕉| 久久久久9| 久久久久久丁香五月| 丁香六月啪啪啪| 新激情五月天| 丁香六月婷婷久久高清| 激情五月综合色婷婷| 激情五月天开心| www.婷婷,com| 久久A极片| 婷婷的99视频网站| 亚洲国产色色| 日本精品99| 婷婷亚洲在线| 婷婷六月丁香在线| 色婷婷综合网| 丁香激情网| 人人人操| 婷婷色激情五月天| 99精品在线播放| 久久一操| 美女要搞搞天天搞搞搞网站| 五月丁香激| 狠狠狠狠狠狠狠狠| 日韩乱轮AV| 开心婷婷五月天综合| 婷婷在线激情| 丰满人妻妇伦又伦精品国产| 五月天之色情综合网| 天堂五月婷婷| 丁香婷婷色五月| 日韩av网站在线观看| 千人斩操逼| 99热久| 美欧成人视频| 丁香五月欧美激情| 色色色综合| 情色五月天网站| 久久五月天综合| 99热最新国内| 天天狠天天狠| 婷婷精品免费久久| 色五月大| 色五月丁香网| 亚洲国产精品二二三三区| 啪啪啪大香蕉| 99热爱爱干干日| 超碰人人操| 九九热视频思思| 天天日天天久久青青| 99精品这里只有免费视频| 久热大香蕉| 夜夜AVV| 国色天香伊人狠狠色| 久久精品A片777777| 色色永久| 激情五月综合网| 亚洲欧美成人在线| 超碰99久久| 黄色片精品| 色色色婷婷| 综合激情四射一theav| 欧美激情五月| 九久久九精品视频| 久久开心五月婷婷| 成人国产欧美大片一区| 综合激情网五月激情| 日日干日日| 日韩草草草草草草草草草草草草| 熟女激情五月天| 久久性刺激| 日本啪啪网| 色V狠狠的干| 97色婷婷| 日韩ac不卡无码| 亚洲色网络| 久久人妻乱子伦| 精品亚洲国产成AV人片传媒| 人人操A|