日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pod 的生命周期及探针

發布時間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pod 的生命周期及探针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?

?

Pod 的生命周期

Pod 生命期

Pod 階段

容器狀態

Waiting?(等待)

Running(運行中)

Terminated(已終止)

容器重啟策略

Pod 狀況

Pod 就緒態

Pod 就緒態的狀態

容器探針

何時該使用存活態探針?

何時該使用就緒態探針?

何時該使用啟動探針?

Pod 的終止

強制終止 Pod

失效 Pod 的垃圾收集

配置存活、就緒和啟動探測器

準備開始

定義存活命令

定義一個存活態 HTTP 請求接口

定義 TCP 的存活探測

使用命名端口

使用啟動探測器保護慢啟動容器

定義就緒探測器

配置探測器

HTTP 探測

TCP 探測

探測器級別?terminationGracePeriodSeconds

總結


?

Pod 的生命周期

?Pod 遵循一個預定義的生命周期,起始于?Pending?階段,如果至少 其中有一個主要容器正常啟動,則進入?Running,之后取決于 Pod 中是否有容器以 失敗狀態結束而進入?Succeeded?或者?Failed?階段。

在 Pod 運行期間,kubelet?能夠重啟容器以處理一些失效場景。 在 Pod 內部,Kubernetes 跟蹤不同容器的狀態?并確定使 Pod 重新變得健康所需要采取的動作。

在 Kubernetes API 中,Pod 包含規約部分和實際狀態部分。 Pod 對象的狀態包含了一組?Pod 狀況(Conditions)。 如果應用需要的話,你也可以向其中注入自定義的就緒性信息。

Pod 在其生命周期中只會被調度一次。 一旦 Pod 被調度(分派)到某個節點,Pod 會一直在該節點運行,直到 Pod 停止或者 被終止。

Pod 生命期

和一個個獨立的應用容器一樣,Pod 也被認為是相對臨時性(而不是長期存在)的實體。 Pod 會被創建、賦予一個唯一的 ID(UID), 并被調度到節點,并在終止(根據重啟策略)或刪除之前一直運行在該節點。

如果一個節點死掉了,調度到該節點 的 Pod 也被計劃在給定超時期限結束后刪除。

Pod 自身不具有自愈能力。如果 Pod 被調度到某節點?而該節點之后失效,Pod 會被刪除;類似地,Pod 無法在因節點資源 耗盡或者節點維護而被驅逐期間繼續存活。Kubernetes 使用一種高級抽象 來管理這些相對而言可隨時丟棄的 Pod 實例,稱作?控制器。

任何給定的 Pod (由 UID 定義)從不會被“重新調度(rescheduled)”到不同的節點; 相反,這一 Pod 可以被一個新的、幾乎完全相同的 Pod 替換掉。 如果需要,新 Pod 的名字可以不變,但是其 UID 會不同。

如果某物聲稱其生命期與某 Pod 相同,例如存儲卷, 這就意味著該對象在此 Pod (UID 亦相同)存在期間也一直存在。 如果 Pod 因為任何原因被刪除,甚至某完全相同的替代 Pod 被創建時, 這個相關的對象(例如這里的卷)也會被刪除并重建。

Pod 階段

Pod 的?status?字段是一個?PodStatus?對象,其中包含一個?phase?字段。

下面是?phase?可能的值:

取值描述
Pending(懸決)Pod 已被 Kubernetes 系統接受,但有一個或者多個容器尚未創建亦未運行。此階段包括等待 Pod 被調度的時間和通過網絡下載鏡像的時間,
Running(運行中)Pod 已經綁定到了某個節點,Pod 中所有的容器都已被創建。至少有一個容器仍在運行,或者正處于啟動或重啟狀態。
Succeeded(成功)Pod 中的所有容器都已成功終止,并且不會再重啟。
Failed(失敗)Pod 中的所有容器都已終止,并且至少有一個容器是因為失敗終止。也就是說,容器以非 0 狀態退出或者被系統終止。
Unknown(未知)因為某些原因無法取得 Pod 的狀態。這種情況通常是因為與 Pod 所在主機通信失敗。

如果某節點死掉或者與集群中其他節點失聯,Kubernetes 會實施一種策略,將失去的節點上運行的所有 Pod 的?phase?設置為?Failed。

容器狀態

Kubernetes 會跟蹤 Pod 中每個容器的狀態,就像它跟蹤 Pod 總體上的階段一樣。 你可以使用容器生命周期回調?來在容器生命周期中的特定時間點觸發事件。

一旦調度器將 Pod 分派給某個節點,kubelet?就通過?容器運行時?開始為 Pod 創建容器。 容器的狀態有三種:Waiting(等待)、Running(運行中)和?Terminated(已終止)。

要檢查 Pod 中容器的狀態,你可以使用?kubectl describe pod <pod 名稱>。 其輸出中包含 Pod 中每個容器的狀態。

每種狀態都有特定的含義:

Waiting?(等待)

如果容器并不處在?Running?或?Terminated?狀態之一,它就處在?Waiting?狀態。 處于?Waiting?狀態的容器仍在運行它完成啟動所需要的操作:例如,從某個容器鏡像 倉庫拉取容器鏡像,或者向容器應用?Secret?數據等等。 當你使用?kubectl?來查詢包含?Waiting?狀態的容器的 Pod 時,你也會看到一個 Reason 字段,其中給出了容器處于等待狀態的原因。

Running(運行中)

Running?狀態表明容器正在執行狀態并且沒有問題發生。 如果配置了?postStart?回調,那么該回調已經執行且已完成。 如果你使用?kubectl?來查詢包含?Running?狀態的容器的 Pod 時,你也會看到 關于容器進入?Running?狀態的信息。

Terminated(已終止)

處于?Terminated?狀態的容器已經開始執行并且或者正常結束或者因為某些原因失敗。 如果你使用?kubectl?來查詢包含?Terminated?狀態的容器的 Pod 時,你會看到 容器進入此狀態的原因、退出代碼以及容器執行期間的起止時間。

如果容器配置了?preStop?回調,則該回調會在容器進入?Terminated?狀態之前執行。

容器重啟策略

Pod 的?spec?中包含一個?restartPolicy?字段,其可能取值包括 Always、OnFailure 和 Never。默認值是 Always。

restartPolicy?適用于 Pod 中的所有容器。restartPolicy?僅針對同一節點上?kubelet?的容器重啟動作。當 Pod 中的容器退出時,kubelet?會按指數回退 方式計算重啟的延遲(10s、20s、40s、...),其最長延遲為 5 分鐘。 一旦某容器執行了 10 分鐘并且沒有出現問題,kubelet?對該容器的重啟回退計時器執行 重置操作。

Pod 狀況

Pod 有一個 PodStatus 對象,其中包含一個?PodConditions?數組。Pod 可能通過也可能未通過其中的一些狀況測試。

  • PodScheduled:Pod 已經被調度到某節點;
  • ContainersReady:Pod 中所有容器都已就緒;
  • Initialized:所有的?Init 容器?都已成功啟動;
  • Ready:Pod 可以為請求提供服務,并且應該被添加到對應服務的負載均衡池中。
字段名稱描述
typePod 狀況的名稱
status表明該狀況是否適用,可能的取值有 "True", "False" 或 "Unknown"
lastProbeTime上次探測 Pod 狀況時的時間戳
lastTransitionTimePod 上次從一種狀態轉換到另一種狀態時的時間戳
reason機器可讀的、駝峰編碼(UpperCamelCase)的文字,表述上次狀況變化的原因
message人類可讀的消息,給出上次狀態轉換的詳細信息

Pod 就緒態

FEATURE STATE:?Kubernetes v1.14 [stable]

你的應用可以向 PodStatus 中注入額外的反饋或者信號:Pod Readiness(Pod 就緒態)。 要使用這一特性,可以設置 Pod 規約中的?readinessGates?列表,為 kubelet 提供一組額外的狀況供其評估 Pod 就緒態時使用。

就緒態門控基于 Pod 的?status.conditions?字段的當前值來做決定。 如果 Kubernetes 無法在?status.conditions?字段中找到某狀況,則該狀況的 狀態值默認為 "False"。

這里是一個例子:

kind: Pod ... spec:readinessGates:- conditionType: "www.example.com/feature-1" status:conditions:- type: Ready # 內置的 Pod 狀況status: "False"lastProbeTime: nulllastTransitionTime: 2018-01-01T00:00:00Z- type: "www.example.com/feature-1" # 額外的 Pod 狀況status: "False"lastProbeTime: nulllastTransitionTime: 2018-01-01T00:00:00ZcontainerStatuses:- containerID: docker://abcd...ready: true ...

你所添加的 Pod 狀況名稱必須滿足 Kubernetes?標簽鍵名格式。

Pod 就緒態的狀態

命令?kubectl patch?不支持修改對象的狀態。 如果需要設置 Pod 的?status.conditions,應用或者?Operators?需要使用?PATCH?操作。 你可以使用?Kubernetes 客戶端庫?之一來編寫代碼,針對 Pod 就緒態設置定制的 Pod 狀況。

對于使用定制狀況的 Pod 而言,只有當下面的陳述都適用時,該 Pod 才會被評估為就緒:

  • Pod 中所有容器都已就緒;
  • readinessGates?中的所有狀況都為?True?值。

當 Pod 的容器都已就緒,但至少一個定制狀況沒有取值或者取值為?False,?kubelet?將 Pod 的狀況設置為?ContainersReady。

容器探針

Probe?是由?kubelet?對容器執行的定期診斷。 要執行診斷,kubelet 調用由容器實現的?Handler?(處理程序)。有三種類型的處理程序:

  • ExecAction: 在容器內執行指定命令。如果命令退出時返回碼為 0 則認為診斷成功。

  • TCPSocketAction: 對容器的 IP 地址上的指定端口執行 TCP 檢查。如果端口打開,則診斷被認為是成功的。

  • HTTPGetAction: 對容器的 IP 地址上指定端口和路徑執行 HTTP Get 請求。如果響應的狀態碼大于等于 200 且小于 400,則診斷被認為是成功的。

每次探測都將獲得以下三種結果之一:

  • Success(成功):容器通過了診斷。
  • Failure(失敗):容器未通過診斷。
  • Unknown(未知):診斷失敗,因此不會采取任何行動。

針對運行中的容器,kubelet?可以選擇是否執行以下三種探針,以及如何針對探測結果作出反應:

  • livenessProbe:指示容器是否正在運行。如果存活態探測失敗,則 kubelet 會殺死容器, 并且容器將根據其重啟策略決定未來。如果容器不提供存活探針, 則默認狀態為?Success。

  • readinessProbe:指示容器是否準備好為請求提供服務。如果就緒態探測失敗, 端點控制器將從與 Pod 匹配的所有服務的端點列表中刪除該 Pod 的 IP 地址。 初始延遲之前的就緒態的狀態值默認為?Failure。 如果容器不提供就緒態探針,則默認狀態為?Success。

  • startupProbe: 指示容器中的應用是否已經啟動。如果提供了啟動探針,則所有其他探針都會被 禁用,直到此探針成功為止。如果啟動探測失敗,kubelet?將殺死容器,而容器依其?重啟策略進行重啟。 如果容器沒有提供啟動探測,則默認狀態為?Success。

如欲了解如何設置存活態、就緒態和啟動探針的進一步細節,可以參閱?配置存活態、就緒態和啟動探針。

何時該使用存活態探針?

FEATURE STATE:?Kubernetes v1.0 [stable]

如果容器中的進程能夠在遇到問題或不健康的情況下自行崩潰,則不一定需要存活態探針;?kubelet?將根據 Pod 的restartPolicy?自動執行修復操作。

如果你希望容器在探測失敗時被殺死并重新啟動,那么請指定一個存活態探針, 并指定restartPolicy?為 "Always" 或 "OnFailure"。

何時該使用就緒態探針?

FEATURE STATE:?Kubernetes v1.0 [stable]

如果要僅在探測成功時才開始向 Pod 發送請求流量,請指定就緒態探針。 在這種情況下,就緒態探針可能與存活態探針相同,但是規約中的就緒態探針的存在意味著 Pod 將在啟動階段不接收任何數據,并且只有在探針探測成功后才開始接收數據。

如果你的容器需要加載大規模的數據、配置文件或者在啟動期間執行遷移操作,可以添加一個 就緒態探針。

如果你希望容器能夠自行進入維護狀態,也可以指定一個就緒態探針,檢查某個特定于 就緒態的因此不同于存活態探測的端點。

說明:

請注意,如果你只是想在 Pod 被刪除時能夠排空請求,則不一定需要使用就緒態探針; 在刪除 Pod 時,Pod 會自動將自身置于未就緒狀態,無論就緒態探針是否存在。 等待 Pod 中的容器停止期間,Pod 會一直處于未就緒狀態。

何時該使用啟動探針?

FEATURE STATE:?Kubernetes v1.18 [beta]

對于所包含的容器需要較長時間才能啟動就緒的 Pod 而言,啟動探針是有用的。 你不再需要配置一個較長的存活態探測時間間隔,只需要設置另一個獨立的配置選定, 對啟動期間的容器執行探測,從而允許使用遠遠超出存活態時間間隔所允許的時長。

如果你的容器啟動時間通常超出?initialDelaySeconds + failureThreshold × periodSeconds?總值,你應該設置一個啟動探測,對存活態探針所使用的同一端點執行檢查。?periodSeconds?的默認值是 10 秒。你應該將其?failureThreshold?設置得足夠高, 以便容器有充足的時間完成啟動,并且避免更改存活態探針所使用的默認值。 這一設置有助于減少死鎖狀況的發生。

Pod 的終止

由于 Pod 所代表的是在集群中節點上運行的進程,當不再需要這些進程時允許其體面地 終止是很重要的。一般不應武斷地使用?KILL?信號終止它們,導致這些進程沒有機會 完成清理操作。

設計的目標是令你能夠請求刪除進程,并且知道進程何時被終止,同時也能夠確保刪除 操作終將完成。當你請求刪除某個 Pod 時,集群會記錄并跟蹤 Pod 的體面終止周期, 而不是直接強制地殺死 Pod。在存在強制關閉設施的前提下,?kubelet?會嘗試體面地終止 Pod。

通常情況下,容器運行時會發送一個 TERM 信號到每個容器中的主進程。 很多容器運行時都能夠注意到容器鏡像中?STOPSIGNAL?的值,并發送該信號而不是 TERM。 一旦超出了體面終止限期,容器運行時會向所有剩余進程發送 KILL 信號,之后 Pod 就會被從?API 服務器?上移除。如果?kubelet?或者容器運行時的管理服務在等待進程終止期間被重啟, 集群會從頭開始重試,賦予 Pod 完整的體面終止限期。

下面是一個例子:

  • 你使用?kubectl?工具手動刪除某個特定的 Pod,而該 Pod 的體面終止限期是默認值(30 秒)。

  • API 服務器中的 Pod 對象被更新,記錄涵蓋體面終止限期在內 Pod 的最終死期,超出所計算時間點則認為 Pod 已死(dead)。 如果你使用?kubectl describe?來查驗你正在刪除的 Pod,該 Pod 會顯示為 "Terminating" (正在終止)。 在 Pod 運行所在的節點上:kubelet?一旦看到 Pod 被標記為正在終止(已經設置了體面終止限期),kubelet?即開始本地的 Pod 關閉過程。

  • 如果 Pod 中的容器之一定義了?preStop?回調,?kubelet?開始在容器內運行該回調邏輯。如果超出體面終止限期時,preStop?回調邏輯 仍在運行,kubelet?會請求給予該 Pod 的寬限期一次性增加 2 秒鐘。

    說明:?如果?preStop?回調所需要的時間長于默認的體面終止限期,你必須修改?terminationGracePeriodSeconds?屬性值來使其正常工作。

  • kubelet?接下來觸發容器運行時發送 TERM 信號給每個容器中的進程 1。

    說明:?Pod 中的容器會在不同時刻收到 TERM 信號,接收順序也是不確定的。 如果關閉的順序很重要,可以考慮使用?preStop?回調邏輯來協調。

  • 與此同時,kubelet?啟動體面關閉邏輯,控制面會將 Pod 從對應的端點列表(以及端點切片列表, 如果啟用了的話)中移除,過濾條件是 Pod 被對應的?服務以某?選擇算符選定。?ReplicaSets和其他工作負載資源 不再將關閉進程中的 Pod 視為合法的、能夠提供服務的副本。關閉動作很慢的 Pod 也無法繼續處理請求數據,因為負載均衡器(例如服務代理)已經在終止寬限期開始的時候 將其從端點列表中移除。
  • 超出終止寬限期限時,kubelet?會觸發強制關閉過程。容器運行時會向 Pod 中所有容器內 仍在運行的進程發送?SIGKILL?信號。?kubelet?也會清理隱藏的?pause?容器,如果容器運行時使用了這種容器的話。

  • kubelet?觸發強制從 API 服務器上刪除 Pod 對象的邏輯,并將體面終止限期設置為 0 (這意味著馬上刪除)。

  • API 服務器刪除 Pod 的 API 對象,從任何客戶端都無法再看到該對象。

  • 強制終止 Pod

    注意:?對于某些工作負載及其 Pod 而言,強制刪除很可能會帶來某種破壞。

    默認情況下,所有的刪除操作都會附有 30 秒鐘的寬限期限。?kubectl delete?命令支持?--grace-period=<seconds>?選項,允許你重載默認值, 設定自己希望的期限值。

    將寬限期限強制設置為?0?意味著立即從 API 服務器刪除 Pod。 如果 Pod 仍然運行于某節點上,強制刪除操作會觸發?kubelet?立即執行清理操作。

    說明:?你必須在設置?--grace-period=0?的同時額外設置?--force?參數才能發起強制刪除請求。

    執行強制刪除操作時,API 服務器不再等待來自?kubelet?的、關于 Pod 已經在原來運行的節點上終止執行的確認消息。 API 服務器直接刪除 Pod 對象,這樣新的與之同名的 Pod 即可以被創建。 在節點側,被設置為立即終止的 Pod 仍然會在被強行殺死之前獲得一點點的寬限時間。

    如果你需要強制刪除 StatefulSet 的 Pod,請參閱?從 StatefulSet 中刪除 Pod?的任務文檔。

    失效 Pod 的垃圾收集

    對于已失敗的 Pod 而言,對應的 API 對象仍然會保留在集群的 API 服務器上,直到 用戶或者控制器進程顯式地 將其刪除。

    控制面組件會在 Pod 個數超出所配置的閾值 (根據?kube-controller-manager?的?terminated-pod-gc-threshold?設置)時 刪除已終止的 Pod(階段值為?Succeeded?或?Failed)。 這一行為會避免隨著時間演進不斷創建和終止 Pod 而引起的資源泄露問題

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    配置存活、就緒和啟動探測器

    kubelet?使用存活探測器來知道什么時候要重啟容器。 例如,存活探測器可以捕捉到死鎖(應用程序在運行,但是無法繼續執行后面的步驟)。 這樣的情況下重啟容器有助于讓應用程序在有問題的情況下更可用。

    kubelet 使用就緒探測器可以知道容器什么時候準備好了并可以開始接受請求流量, 當一個 Pod 內的所有容器都準備好了,才能把這個 Pod 看作就緒了。 這種信號的一個用途就是控制哪個 Pod 作為 Service 的后端。 在 Pod 還沒有準備好的時候,會從 Service 的負載均衡器中被剔除的。

    kubelet 使用啟動探測器可以知道應用程序容器什么時候啟動了。 如果配置了這類探測器,就可以控制容器在啟動成功后再進行存活性和就緒檢查, 確保這些存活、就緒探測器不會影響應用程序的啟動。 這可以用于對慢啟動容器進行存活性檢測,避免它們在啟動運行之前就被殺掉。

    準備開始

    你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 如果你還沒有集群,你可以通過?Minikube?構建一 個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構建:

    • Katacoda
    • 玩轉 Kubernetes

    定義存活命令

    許多長時間運行的應用程序最終會過渡到斷開的狀態,除非重新啟動,否則無法恢復。 Kubernetes 提供了存活探測器來發現并補救這種情況。

    ?

    apiVersion: v1 kind: Pod metadata:labels:test: livenessname: liveness-exec spec:containers:- name: livenessimage: k8s.gcr.io/busyboxargs:- /bin/sh- -c- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600livenessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 5

    在這個配置文件中,可以看到 Pod 中只有一個容器。?periodSeconds?字段指定了 kubelet 應該每 5 秒執行一次存活探測。?initialDelaySeconds?字段告訴 kubelet 在執行第一次探測前應該等待 5 秒。 kubelet 在容器內執行命令?cat /tmp/healthy?來進行探測。 如果命令執行成功并且返回值為 0,kubelet 就會認為這個容器是健康存活的。 如果這個命令返回非 0 值,kubelet 會殺死這個容器并重新啟動它。

    當容器啟動時,執行如下的命令:

    /bin/sh -c "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600"

    這個容器生命的前 30 秒,?/tmp/healthy?文件是存在的。 所以在這最開始的 30 秒內,執行命令?cat /tmp/healthy?會返回成功代碼。 30 秒之后,執行命令?cat /tmp/healthy?就會返回失敗代碼。

    創建 Pod:

    kubectl apply -f https://k8s.io/examples/pods/probe/exec-liveness.yaml

    在 30 秒內,查看 Pod 的事件:

    kubectl describe pod liveness-exec

    輸出結果表明還沒有存活探測器失敗:

    FirstSeen LastSeen Count From SubobjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 24s 24s 1 {default-scheduler } Normal Scheduled Successfully assigned liveness-exec to worker0 23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Pulling pulling image "k8s.gcr.io/busybox" 23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Pulled Successfully pulled image "k8s.gcr.io/busybox" 23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Created Created container with docker id 86849c15382e; Security:[seccomp=unconfined] 23s 23s 1 {kubelet worker0} spec.containers{liveness} Normal Started Started container with docker id 86849c15382e

    35 秒之后,再來看 Pod 的事件:

    kubectl describe pod liveness-exec

    在輸出結果的最下面,有信息顯示存活探測器失敗了,這個容器被殺死并且被重建了。

    FirstSeen LastSeen Count From SubobjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 37s 37s 1 {default-scheduler } Normal Scheduled Successfully assigned liveness-exec to worker0 36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Pulling pulling image "k8s.gcr.io/busybox" 36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Pulled Successfully pulled image "k8s.gcr.io/busybox" 36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Created Created container with docker id 86849c15382e; Security:[seccomp=unconfined] 36s 36s 1 {kubelet worker0} spec.containers{liveness} Normal Started Started container with docker id 86849c15382e 2s 2s 1 {kubelet worker0} spec.containers{liveness} Warning Unhealthy Liveness probe failed: cat: can't open '/tmp/healthy': No such file or directory

    再等另外 30 秒,檢查看這個容器被重啟了:

    kubectl get pod liveness-exec

    輸出結果顯示?RESTARTS?的值增加了 1。

    NAME READY STATUS RESTARTS AGE liveness-exec 1/1 Running 1 1m

    定義一個存活態 HTTP 請求接口

    另外一種類型的存活探測方式是使用 HTTP GET 請求。 下面是一個 Pod 的配置文件,其中運行一個基于?k8s.gcr.io/liveness?鏡像的容器。

    pods/probe/http-liveness.yaml?

    apiVersion: v1 kind: Pod metadata:labels:test: livenessname: liveness-http spec:containers:- name: livenessimage: k8s.gcr.io/livenessargs:- /serverlivenessProbe:httpGet:path: /healthzport: 8080httpHeaders:- name: Custom-Headervalue: AwesomeinitialDelaySeconds: 3periodSeconds: 3

    在這個配置文件中,可以看到 Pod 也只有一個容器。?periodSeconds?字段指定了 kubelet 每隔 3 秒執行一次存活探測。?initialDelaySeconds?字段告訴 kubelet 在執行第一次探測前應該等待 3 秒。 kubelet 會向容器內運行的服務(服務會監聽 8080 端口)發送一個 HTTP GET 請求來執行探測。 如果服務器上?/healthz?路徑下的處理程序返回成功代碼,則 kubelet 認為容器是健康存活的。 如果處理程序返回失敗代碼,則 kubelet 會殺死這個容器并且重新啟動它。

    任何大于或等于 200 并且小于 400 的返回代碼標示成功,其它返回代碼都標示失敗。

    可以在這里看服務的源碼?server.go。

    容器存活的最開始 10 秒中,/healthz?處理程序返回一個 200 的狀態碼。之后處理程序返回 500 的狀態碼。

    http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {duration := time.Now().Sub(started)if duration.Seconds() > 10 {w.WriteHeader(500)w.Write([]byte(fmt.Sprintf("error: %v", duration.Seconds())))} else {w.WriteHeader(200)w.Write([]byte("ok"))} })

    kubelet 在容器啟動之后 3 秒開始執行健康檢測。所以前幾次健康檢查都是成功的。 但是 10 秒之后,健康檢查會失敗,并且 kubelet 會殺死容器再重新啟動容器。

    創建一個 Pod 來測試 HTTP 的存活檢測:

    kubectl apply -f https://k8s.io/examples/pods/probe/http-liveness.yaml

    10 秒之后,通過看 Pod 事件來檢測存活探測器已經失敗了并且容器被重新啟動了。

    kubectl describe pod liveness-http

    在 1.13(包括 1.13版本)之前的版本中,如果在 Pod 運行的節點上設置了環境變量?http_proxy(或者?HTTP_PROXY),HTTP 的存活探測會使用這個代理。 在 1.13 之后的版本中,設置本地的 HTTP 代理環境變量不會影響 HTTP 的存活探測。

    定義 TCP 的存活探測

    第三種類型的存活探測是使用 TCP 套接字。 通過配置,kubelet 會嘗試在指定端口和容器建立套接字鏈接。 如果能建立連接,這個容器就被看作是健康的,如果不能則這個容器就被看作是有問題的。

    apiVersion: v1 kind: Pod metadata:name: goproxylabels:app: goproxy spec:containers:- name: goproxyimage: k8s.gcr.io/goproxy:0.1ports:- containerPort: 8080readinessProbe:tcpSocket:port: 8080initialDelaySeconds: 5periodSeconds: 10livenessProbe:tcpSocket:port: 8080initialDelaySeconds: 15periodSeconds: 20

    如你所見,TCP 檢測的配置和 HTTP 檢測非常相似。 下面這個例子同時使用就緒和存活探測器。kubelet 會在容器啟動 5 秒后發送第一個就緒探測。 這會嘗試連接?goproxy?容器的 8080 端口。 如果探測成功,這個 Pod 會被標記為就緒狀態,kubelet 將繼續每隔 10 秒運行一次檢測。

    除了就緒探測,這個配置包括了一個存活探測。 kubelet 會在容器啟動 15 秒后進行第一次存活探測。 與就緒探測類似,會嘗試連接?goproxy?容器的 8080 端口。 如果存活探測失敗,這個容器會被重新啟動。

    kubectl apply -f https://k8s.io/examples/pods/probe/tcp-liveness-readiness.yaml

    15 秒之后,通過看 Pod 事件來檢測存活探測器:

    kubectl describe pod goproxy

    使用命名端口

    對于 HTTP 或者 TCP 存活檢測可以使用命名的?ContainerPort。

    ports: - name: liveness-portcontainerPort: 8080hostPort: 8080livenessProbe:httpGet:path: /healthzport: liveness-port

    使用啟動探測器保護慢啟動容器

    有時候,會有一些現有的應用程序在啟動時需要較多的初始化時間。 要不影響對引起探測死鎖的快速響應,這種情況下,設置存活探測參數是要技巧的。 技巧就是使用一個命令來設置啟動探測,針對HTTP 或者 TCP 檢測,可以通過設置?failureThreshold * periodSeconds?參數來保證有足夠長的時間應對糟糕情況下的啟動時間。

    所以,前面的例子就變成了:

    ports: - name: liveness-portcontainerPort: 8080hostPort: 8080livenessProbe:httpGet:path: /healthzport: liveness-portfailureThreshold: 1periodSeconds: 10startupProbe:httpGet:path: /healthzport: liveness-portfailureThreshold: 30periodSeconds: 10

    幸虧有啟動探測,應用程序將會有最多 5 分鐘(30 * 10 = 300s) 的時間來完成它的啟動。 一旦啟動探測成功一次,存活探測任務就會接管對容器的探測,對容器死鎖可以快速響應。 如果啟動探測一直沒有成功,容器會在 300 秒后被殺死,并且根據?restartPolicy?來設置 Pod 狀態。

    定義就緒探測器

    有時候,應用程序會暫時性的不能提供通信服務。 例如,應用程序在啟動時可能需要加載很大的數據或配置文件,或是啟動后要依賴等待外部服務。 在這種情況下,既不想殺死應用程序,也不想給它發送請求。 Kubernetes 提供了就緒探測器來發現并緩解這些情況。 容器所在 Pod 上報還未就緒的信息,并且不接受通過 Kubernetes Service 的流量。

    說明:?就緒探測器在容器的整個生命周期中保持運行狀態。

    注意:?活躍性探測器?不等待?就緒性探測器成功。 如果要在執行活躍性探測器之前等待,應該使用 initialDelaySeconds 或 startupProbe。

    就緒探測器的配置和存活探測器的配置相似。 唯一區別就是要使用?readinessProbe?字段,而不是?livenessProbe?字段。

    readinessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5periodSeconds: 5

    HTTP 和 TCP 的就緒探測器配置也和存活探測器的配置一樣的。

    就緒和存活探測可以在同一個容器上并行使用。 兩者都用可以確保流量不會發給還沒有準備好的容器,并且容器會在它們失敗的時候被重新啟動。

    配置探測器

    Probe?有很多配置字段,可以使用這些字段精確的控制存活和就緒檢測的行為:

    • initialDelaySeconds:容器啟動后要等待多少秒后存活和就緒探測器才被初始化,默認是 0 秒,最小值是 0。
    • periodSeconds:執行探測的時間間隔(單位是秒)。默認是 10 秒。最小值是 1。
    • timeoutSeconds:探測的超時后等待多少秒。默認值是 1 秒。最小值是 1。
    • successThreshold:探測器在失敗后,被視為成功的最小連續成功數。默認值是 1。 存活和啟動探測的這個值必須是 1。最小值是 1。
    • failureThreshold:當探測失敗時,Kubernetes 的重試次數。 存活探測情況下的放棄就意味著重新啟動容器。 就緒探測情況下的放棄 Pod 會被打上未就緒的標簽。默認值是 3。最小值是 1。

    ?

    說明:

    在 Kubernetes 1.20 版本之前,exec 探針會忽略?timeoutSeconds:探針會無限期地 持續運行,甚至可能超過所配置的限期,直到返回結果為止。

    這一缺陷在 Kubernetes v1.20 版本中得到修復。你可能一直依賴于之前錯誤的探測行為, 甚至你都沒有覺察到這一問題的存在,因為默認的超時值是 1 秒鐘。 作為集群管理員,你可以在所有的 kubelet 上禁用?ExecProbeTimeout?特性門控?(將其設置為?false),從而恢復之前版本中的運行行為,之后當集群中所有的 exec 探針都設置了?timeoutSeconds?參數后,移除此標志重載。 如果你有 Pods 受到此默認 1 秒鐘超時值的影響,你應該更新 Pod 對應的探針的 超時值,這樣才能為最終去除該特性門控做好準備。

    當此缺陷被修復之后,在使用?dockershim?容器運行時的 Kubernetes?1.20+?版本中,對于 exec 探針而言,容器中的進程可能會因為超時值的設置保持持續運行, 即使探針返回了失敗狀態。

    注意:

    如果就緒態探針的實現不正確,可能會導致容器中進程的數量不斷上升。 如果不對其采取措施,很可能導致資源枯竭的狀況。

    HTTP 探測

    HTTP Probes?可以在?httpGet?上配置額外的字段:

    • host:連接使用的主機名,默認是 Pod 的 IP。也可以在 HTTP 頭中設置 “Host” 來代替。
    • scheme?:用于設置連接主機的方式(HTTP 還是 HTTPS)。默認是 HTTP。
    • path:訪問 HTTP 服務的路徑。默認值為 "/"。
    • httpHeaders:請求中自定義的 HTTP 頭。HTTP 頭字段允許重復。
    • port:訪問容器的端口號或者端口名。如果數字必須在 1 ~ 65535 之間。

    對于 HTTP 探測,kubelet 發送一個 HTTP 請求到指定的路徑和端口來執行檢測。 除非?httpGet?中的?host?字段設置了,否則 kubelet 默認是給 Pod 的 IP 地址發送探測。 如果?scheme?字段設置為了?HTTPS,kubelet 會跳過證書驗證發送 HTTPS 請求。 大多數情況下,不需要設置host?字段。 這里有個需要設置?host?字段的場景,假設容器監聽 127.0.0.1,并且 Pod 的?hostNetwork?字段設置為了?true。那么?httpGet?中的?host?字段應該設置為 127.0.0.1。 可能更常見的情況是如果 Pod 依賴虛擬主機,你不應該設置?host?字段,而是應該在?httpHeaders?中設置?Host。

    針對 HTTP 探針,kubelet 除了必需的?Host?頭部之外還發送兩個請求頭部字段:?User-Agent?和?Accept。這些頭部的默認值分別是?kube-probe/{{ skew latestVersion >}}?(其中?1.21?是 kubelet 的版本號)和?*/*。

    你可以通過為探測設置?.httpHeaders?來重載默認的頭部字段值;例如:

    livenessProbe:httpGet:httpHeaders:- name: Acceptvalue: application/jsonstartupProbe:httpGet:httpHeaders:- name: User-Agentvalue: MyUserAgent

    你也可以通過將這些頭部字段定義為空值,從請求中去掉這些頭部字段。

    livenessProbe:httpGet:httpHeaders:- name: Acceptvalue: ""startupProbe:httpGet:httpHeaders:- name: User-Agentvalue: ""

    TCP 探測

    對于一次 TCP 探測,kubelet 在節點上(不是在 Pod 里面)建立探測連接, 這意味著你不能在?host?參數上配置服務名稱,因為 kubelet 不能解析服務名稱。

    探測器級別?terminationGracePeriodSeconds

    FEATURE STATE:?Kubernetes v1.21 [alpha]

    在 1.21 版之前,pod 級別的?terminationGracePeriodSeconds?被用來終止 未能成功處理活躍性探測或啟動探測的容器。 這種耦合是意料之外的,可能會導致在設置了 pod 級別的?terminationGracePeriodSeconds?后, 需要很長的時間來重新啟動失敗的容器。

    在1.21中,啟用特性標志?ProbeTerminationGracePeriod?后, 用戶可以指定一個探測器級別的?terminationGracePeriodSeconds?作為探測器規格的一部分。 當該特性標志被啟用時,若同時設置了 Pod 級別和探測器級別的?terminationGracePeriodSeconds, kubelet 將使用探測器級的值。

    例如,

    spec:terminationGracePeriodSeconds: 3600 # pod-levelcontainers:- name: testimage: ...ports:- name: liveness-portcontainerPort: 8080hostPort: 8080livenessProbe:httpGet:path: /healthzport: liveness-portfailureThreshold: 1periodSeconds: 60# Override pod-level terminationGracePeriodSeconds #terminationGracePeriodSeconds: 60

    探測器級別的?terminationGracePeriodSeconds?不能用于設置就緒態探針。 它將被 API 服務器拒絕。

    ?

    ?

    ?

    ?

    ?

    總結

    StartupProbe:k8s 1.16版本后新加的探測方式,用于判斷容器內應用程序是否已經啟動。如果配置了startupProbe,就會先禁止其他的探測,直到它成功為止,成功后將不再進行探測。比較適用于容器啟動時間長的場景。
    LivenessProbe:用于探測容器是否運行,如果探測失敗,kubelet會根據配置的重啟策略進行相應的處理。若沒有配置該探針,默認就是success。
    ReadinessProbe:一般用于探測容器內的程序是否健康,它的返回值如果為success,那么久代表這個容器已經完成啟動,并且程序已經是可以接受流量的狀態。

    ?

    #???startupProbe: # 可選,檢測容器內進程是否完成啟動 #??????httpGet:??????# httpGet檢測方式,生產環境建議使用httpGet實現接口級健康檢查,健康檢查由應用程序提供。 #????????????path: /api/successStart # 檢查路徑 #????????????port: 80readinessProbe: # 可選,健康檢查httpGet:??????# httpGet檢測方式,生產環境建議使用httpGet實現接口級健康檢查,健康檢查由應用程序提供。path: / # 檢查路徑port: 80????????# 監控端口livenessProbe:??# 可選,健康檢查#exec:????????# 執行容器命令檢測方式#command:?#- cat#- /health#httpGet:???????# httpGet檢測方式#???path: /_health # 檢查路徑#???port: 8080#???httpHeaders: # 檢查的請求頭#???- name: end-user#?????value: Jason?


    二、Pod探針的檢測方式
    注意:三種檢查方式同時只能使用一種。

    ExecAction:在容器內執行一個命令,如果返回值為0,則認為容器健康。
    TCPSocketAction:通過TCP連接檢查容器內的端口是否通的,如果是通的就認為容器健康。
    HTTPGetAction:通過應用程序暴露的API地址檢查程序是否正常,如果狀態碼為200~400之間,則認為容器健康。(常用)

    三、探針檢查參數配置

    # ?????initialDelaySeconds: 60 ??????# 初始化時間 # ?????timeoutSeconds: 2 ????# 超時時間 # ?????periodSeconds: 5 ?????# 檢測間隔 # ?????successThreshold: 1 # 檢查成功為1次表示就緒 # ?????failureThreshold: 2 # 檢測失敗2次表示未就緒

    ?

    ?

    ?

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的Pod 的生命周期及探针的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    99精品黄色 | 青青色影院 | 国产精品白丝jk白祙 | 日韩在线视频免费看 | 黄色三级在线观看 | 国产视频一二三 | 99久久99视频 | 在线看国产一区 | 视频99爱 | 亚洲欧洲精品一区二区 | 国产高清av免费在线观看 | 九热在线| 精品国产伦一区二区三区观看方式 | 国产精品免费视频久久久 | 国产精品一级在线 | 在线观看免费视频你懂的 | 在线免费观看黄色小说 | 亚洲女同videos | 久久精品99久久 | 99精品国自产在线 | 奇米影视777四色米奇影院 | 天天操天天综合网 | 啪啪凸凸| 天天干,天天操,天天射 | 久久精品成人欧美大片古装 | 精品国产欧美一区二区 | 国产视频手机在线 | 日韩在线视频看看 | 国产精品18p | 国产精品24小时在线观看 | 日韩精品在线一区 | 国产麻豆精品一区 | 欧美黄色免费 | 久久不卡国产精品一区二区 | 伊人丁香 | 在线精品观看国产 | 看黄色.com| 久久精品资源 | 狠狠色丁香九九婷婷综合五月 | 日韩一级片大全 | 国产视频久久 | www.香蕉视频 | 欧美大荫蒂xxx | 久久影视中文字幕 | www五月婷婷| 国产精品高清在线 | 日韩久久精品一区二区 | 五月婷香| 亚洲精品国产综合99久久夜夜嗨 | 射久久久 | 精品免费国产一区二区三区四区 | 51精品国自产在线 | 黄色软件视频网站 | 91在线在线观看 | 免费中文字幕视频 | 久久黄色影视 | 视频国产精品 | 98精品国产自产在线观看 | 香蕉视频亚洲 | 91亚洲精品久久久蜜桃 | 久久国产一区 | 九九热精品国产 | 在线直播av| 免费美女av | 国产精选视频 | 免费观看性生活大片 | 蜜桃av久久久亚洲精品 | 蜜臀aⅴ国产精品久久久国产 | 成人亚洲精品国产www | 福利视频导航网址 | 免费在线观看的av网站 | 伊人中文网 | 99精品国自产在线 | 国产精品高清一区二区三区 | 有没有在线观看av | 国产在线999 | 国产精品99在线播放 | 日韩欧美电影 | 91日韩在线专区 | 日韩视频欧美视频 | 丁香婷婷在线 | 九九热精品视频在线播放 | 五月天丁香综合 | 九色在线视频 | 精品久久久久免费极品大片 | 在线观看成人 | 久久精品九色 | 天天操天天色综合 | 成人黄色片在线播放 | 一二区电影 | 99视频网址| 精品久久久久国产免费第一页 | 精品国产大片 | 1024在线看片| 日本午夜在线观看 | 国产精品嫩草69影院 | 国产美腿白丝袜足在线av | 色综合天天综合 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产午夜亚洲精品 | 伊人五月在线 | 久久久麻豆 | 97人人澡人人添人人爽超碰 | 黄色av一区二区 | 中文字幕中文字幕在线一区 | 日韩视频精品在线 | 精品综合久久久 | 久久97超碰 | 久久国产99 | 亚洲专区在线视频 | 亚洲黄色三级 | 美女很黄免费网站 | 999国内精品永久免费视频 | 六月激情久久 | 蜜臀av免费一区二区三区 | 国产手机在线观看 | 中文字幕 91| 色在线网站 | 国产精品成人av电影 | 久久99久久99精品免费看小说 | 有码视频在线观看 | 色吊丝在线永久观看最新版本 | 久久久.com | 亚洲欧洲视频 | 欧美国产日韩一区二区三区 | 2019中文最近的2019中文在线 | 日韩久久视频 | 国产黄免费 | 久久久久国产精品午夜一区 | 久久精品亚洲 | 欧美日韩在线视频观看 | 色综合久久88色综合天天免费 | 国产免费久久精品 | 色婷婷福利视频 | 国产精品99精品久久免费 | 九草视频在线观看 | 天天插天天操天天干 | 亚洲午夜久久久久久久久电影网 | 亚洲国产精品一区二区尤物区 | 久久躁日日躁aaaaxxxx | 亚洲国产中文字幕在线观看 | 亚洲高清不卡av | 亚洲 欧美变态 另类 综合 | 五月天中文字幕mv在线 | 免费在线观看日韩 | 国产资源av | 日本中文字幕在线观看 | 午夜精品久久一牛影视 | 久久艹精品 | 91丨九色丨国产在线 | 成人av一二三区 | 国产一区二区不卡在线 | 激情婷婷在线观看 | 国产涩图 | 精品av网站 | 欧美日韩成人一区 | 亚洲九九九在线观看 | 91精品国产成 | 人人搞人人干 | 免费在线激情电影 | 国产日韩精品久久 | 国产综合激情 | 国产亚洲综合在线 | 欧美一级片 | 伊人色综合久久天天 | 亚洲精品日韩av | 精品视频在线视频 | 久久这里| 人人超在线公开视频 | 久久综合九色欧美综合狠狠 | 婷婷av在线| 91日韩国产| 亚洲精品99| 日韩精品在线免费观看 | 成 人 a v天堂 | 偷拍区另类综合在线 | 亚洲闷骚少妇在线观看网站 | 国产精品久久久久久久久久久久冷 | 天天干 天天摸 天天操 | 黄色午夜 | 日日夜夜综合网 | 狠狠色丁香婷婷综合久小说久 | 少妇高潮流白浆在线观看 | 最近日本中文字幕a | 亚洲黑丝少妇 | 国产中文字幕在线看 | 狠狠久久综合 | 国产日韩欧美在线观看视频 | 久久视频在线观看免费 | av亚洲产国偷v产偷v自拍小说 | 国产成人精品在线观看 | 久久久精品亚洲 | 久一久久 | 四虎精品成人免费网站 | 国产精品色视频 | 精品久久一区二区 | 一区二区三区精品久久久 | 亚洲欧美婷婷六月色综合 | 五月天综合网站 | 涩涩色亚洲一区 | 丁香网婷婷| 国产黄影院色大全免费 | 亚洲精品日韩一区二区电影 | 少妇视频一区 | 激情久久久久久久久久久久久久久久 | 久久午夜影院 | 日韩有码在线观看视频 | 中文字幕专区高清在线观看 | 久久久久一区二区三区 | 久久国产精品小视频 | 中文字幕二区在线观看 | 久久精美视频 | 国产一区观看 | www久久久| 国产一级黄 | 91视频久久| 中文字幕第一页av | avcom在线| 叶爱av在线| 91久久久久久久一区二区 | 亚洲区另类春色综合小说校园片 | 色综合久久久久综合99 | 国产伦精品一区二区三区照片91 | 亚洲综合色av | 欧美性色黄 | 国内精品久久久久影院优 | 婷久久 | 中文字幕在线观看一区二区 | 91精品国产成人 | 日日夜夜天天久久 | 青青河边草观看完整版高清 | 一区三区视频在线观看 | 狠狠综合网 | 一区二区中文字幕在线观看 | 亚洲另类在线视频 | 亚洲激情av | 国产区在线 | 久久国产日韩 | 日日躁夜夜躁aaaaxxxx | 日韩高清一区在线 | 日韩理论在线播放 | 欧美日韩视频在线一区 | 97狠狠操 | 涩五月婷婷 | 波多野结衣一区二区三区中文字幕 | www.亚洲黄 | 黄毛片在线观看 | 超碰在线免费福利 | 亚洲最快最全在线视频 | 九热在线 | 久久综合色婷婷 | 中国美女一级看片 | 国产电影黄色av | 久久久久久激情 | 亚洲成人999 | 久久精品爱视频 | 亚洲男模gay裸体gay | 久久国产精品99久久久久久丝袜 | 麻豆国产在线视频 | 午夜精品久久久久久99热明星 | 91精品免费 | 久久试看 | 午夜婷婷在线播放 | 五月综合网站 | 国产在线日韩 | 日韩欧美高清在线 | 日韩极品视频在线观看 | 久久久综合电影 | 亚洲三级国产 | 亚洲成人av电影 | 亚洲视频专区在线 | 亚洲国产精彩中文乱码av | av高清网站在线观看 | 日本aaa在线观看 | 久久精品一 | 亚洲国产欧美在线看片xxoo | 国产精品第10页 | 久久久久在线观看 | 中文字幕第 | 91成人区 | 黄色精品久久久 | 久久在现 | 国产精品国产亚洲精品看不卡15 | 国产精品99免费看 | 人人插人人 | 天天色天天色 | 国产精品久久久久免费 | 日本精品视频一区 | 国产一级二级三级视频 | 久久免费看av | 天天操天天操天天操天天操天天操 | 亚洲国产精品一区二区久久,亚洲午夜 | 久久久久国产一区二区三区 | 日韩av一区二区三区 | 国内精品久久久久影院日本资源 | 日韩视频一区二区三区在线播放免费观看 | 91网在线 | 国产精久久久久久妇女av | 色婷婷av国产精品 | 欧美一区免费观看 | 中文字幕在线看 | 国产精品 国产精品 | 精品亚洲一区二区三区 | 激情五月看片 | 久久精品国产第一区二区三区 | 手机色站 | 免费福利片 | 免费性网站 | 欧美激情视频在线免费观看 | 色狠狠婷婷 | 中文在线a在线 | 在线观看国产福利片 | 在线国产不卡 | 91激情在线视频 | 国产做爰视频 | 国产在线一线 | 久久视频国产精品免费视频在线 | 亚洲精品午夜久久久 | 中文在线免费一区三区 | 深爱开心激情 | 中文字幕一区二区在线播放 | a黄色片在线观看 | 超碰在线观看97 | 日韩一二区在线 | 九九99靖品 | 狠色在线 | 91麻豆视频网站 | 国产99久久久国产精品免费看 | 精品一区二区亚洲 | 中文字幕专区高清在线观看 | 四虎海外影库www4hu | 美女天天操 | 四虎小视频 | 九九热精品视频在线播放 | 国产一区二区视频在线 | 国产精品毛片一区二区 | 超碰国产在线 | 国产99精品| 国产美女精品视频 | 亚洲免费av电影 | 九九九在线观看 | 精品亚洲成a人在线观看 | 亚洲理论电影网 | 国产午夜精品av一区二区 | 亚洲免费一级电影 | 人人讲下载 | 日韩精品一区二区三区第95 | 美女视频是黄的免费观看 | 国产91精品一区二区麻豆亚洲 | 日本精品一区二区三区在线播放视频 | 久热av| 国产视频精选 | 亚洲精品中文在线 | 一区在线观看 | 国产不卡视频在线播放 | 国产高清中文字幕 | 国产精品亚洲精品 | 天天碰天天操 | 九九九九九国产 | 深夜精品福利 | 91日韩精品 | 波多野结衣网址 | 国产男女爽爽爽免费视频 | 天天摸天天干天天操天天射 | 日韩欧美国产免费播放 | 久久久久女教师免费一区 | 夜色资源站wwwcom | www色片 | 色综合久久综合网 | 日韩高清成人在线 | 午夜三级影院 | 午夜av在线 | 欧美日韩一区久久 | 成人毛片在线观看 | 国产精品视频地址 | 亚洲精品中文字幕视频 | 狠狠色丁香婷婷 | 超碰在线观看97 | 国产尤物一区二区三区 | 韩国精品在线观看 | 免费大片黄在线 | 色五丁香 | 欧美日韩在线精品一区二区 | 日韩v在线91成人自拍 | 在线日韩精品视频 | 精品国产一区在线观看 | 久草资源免费 | av在线电影免费观看 | 中文字幕在线观看91 | 激情综合网五月 | 久久国产精品色婷婷 | www.天天操| 国产精品18videosex性欧美 | 99久e精品热线免费 99国产精品久久久久久久久久 | 精品一区二区三区久久久 | 久热av在线 | 国产精品日韩在线 | 国产精品区二区三区日本 | 成人免费在线电影 | 亚洲精品久久久久999中文字幕 | 国产精品一区在线播放 | 国产福利91精品一区二区三区 | 国产伦精品一区二区三区四区视频 | 在线观看视频在线观看 | 欧美超碰在线 | av电影在线播放 | 99久久精品免费看国产一区二区三区 | 亚州精品在线视频 | 久久综合九色欧美综合狠狠 | 九九免费在线观看视频 | 久久精品一级片 | 综合铜03 | 免费的黄色的网站 | 国产不卡视频在线 | 波多野结衣在线观看一区二区三区 | 亚洲成人高清在线 | 五月婷婷六月丁香在线观看 | 亚洲女同videos| 欧美日韩在线观看一区二区 | 五月婷婷欧美 | 精品女同一区二区三区在线观看 | 久久久精品在线观看 | 久久99久久99精品免视看婷婷 | 日韩色中色 | 九九视频精品在线 | 色综合久久精品 | 在线观看电影av | 麻豆免费在线视频 | 友田真希x88av| 蜜臀久久99精品久久久无需会员 | 亚洲精品在线播放视频 | 精品久久网站 | 亚洲干 | 国产精品video爽爽爽爽 | 成人一级片在线观看 | 欧美色综合天天久久综合精品 | 欧美另类一二三四区 | 久热av| 色 免费观看 | 国产福利在线 | 亚洲精品国产第一综合99久久 | 黄污视频网站大全 | 亚洲第一伊人 | 国产区精品视频 | 国产一线二线三线在线观看 | 国产资源精品 | 女人18片毛片90分钟 | 中文字幕二区 | 波多野结衣视频一区二区 | 免费精品人在线二线三线 | 中文字幕视频网站 | 中文字幕之中文字幕 | 99久久国产免费,99久久国产免费大片 | 最新日韩在线 | av电影中文字幕 | 欧美国产亚洲精品久久久8v | 国产福利中文字幕 | 特级片免费看 | 91人人爱 | 亚洲最新av网址 | 久久夜色网 | 超碰97人人在线 | 看av在线| 超碰公开在线 | 在线免费黄色av | h动漫中文字幕 | 99久久这里只有精品 | 国产精品一区二区在线观看免费 | 夜夜骑天天操 | 黄色av网站在线观看免费 | 91精品久久久久久久91蜜桃 | 色综合综合 | 天天操天天操天天操天天 | 超碰公开在线观看 | www.com.黄| 久久成人国产精品入口 | 亚洲最新av网址 | 婷婷视频在线播放 | 一级大片在线观看 | 午夜丁香网| 中文字幕 国产专区 | 免费观看黄色12片一级视频 | 国产一级a毛片视频爆浆 | 九九九九免费视频 | av中文字幕网| 五月婷婷综合激情网 | av在线播放网址 | 国产成人精品999 | 999精品| 亚洲毛片在线观看. | 九九免费精品视频 | 日日干,天天干 | 91久久丝袜国产露脸动漫 | 国产精品一区二区av | 欧美激情视频免费看 | 成年人在线电影 | 国产精品一区二区免费看 | 青青河边草观看完整版高清 | 91免费视频网站在线观看 | 国产精品私人影院 | 九月婷婷人人澡人人添人人爽 | 91精品啪在线观看国产81旧版 | 国产精品999久久久 久产久精国产品 | 13日本xxxxxⅹxxx20 | 91在线看片 | 97精品一区二区三区 | 四虎影视成人精品 | 欧美日韩国产伦理 | 亚洲 成人 欧美 | 99热精品视| 天天干天天射天天插 | 高清中文字幕 | 久久免费观看少妇a级毛片 久久久久成人免费 | 日韩精品一区二区三区中文字幕 | 欧美激情第一区 | 免费高清影视 | 18网站在线观看 | 韩国av三级 | 精品一区二区在线免费观看 | 欧美色久 | 在线看免费 | 婷婷激情久久 | 伊人五月综合 | 亚洲电影免费 | 中文字幕国内精品 | 精品一二三区视频 | 亚洲另类xxxx | 日韩xxxxxxxxx | 夜夜爱av | 久久亚洲成人网 | 国产精品自在线 | 91麻豆精品国产91久久久无限制版 | 97视频在线播放 | 日韩在线观看的 | 91免费高清视频 | 久久久久久久久久久久电影 | 色婷婷激情四射 | 日韩免费在线观看网站 | 韩日精品在线观看 | 欧美日韩中文在线观看 | 国产在线不卡精品 | 91探花在线 | 免费日韩一级片 | 黄色一区二区在线观看 | 午夜国产一区二区 | 五月香视频在线观看 | 狠狠狠狠干 | av黄色一级片 | 911国产精品 | 免费人人干 | 狠狠操.com | 久久久久9999亚洲精品 | 欧美在线视频第一页 | 欧美日韩免费一区 | 99热这里只有精品免费 | av大片免费| 色永久免费视频 | 在线电影日韩 | 国产又粗又猛又黄又爽 | 婷婷丁香综合 | 久久视频精品 | 国产最新视频在线观看 | 日本一区二区三区免费观看 | 国产精品一二三 | 最新色站 | 99爱爱| 国产一区视频免费在线观看 | 97超碰人人模人人人爽人人爱 | 在线播放 日韩专区 | 日韩一区二区在线免费观看 | 国产精品一区在线观看 | 黄在线免费看 | 日本中文在线观看 | 久久国产精品久久精品国产演员表 | 亚洲视频分类 | av黄色在线 | 国产成人精品a | 国产一区二区在线观看免费 | 在线观看视频免费大全 | 久久99久久99精品中文字幕 | 久久久久国产a免费观看rela | 91精品久久久久久久91蜜桃 | 亚洲精品av中文字幕在线在线 | 成人黄色毛片 | 97国产超碰在线 | a久久久久久| 天天骚夜夜操 | 福利网在线 | 男女啪啪视屏 | 亚洲一区二区麻豆 | 日韩av电影免费在线观看 | 午夜久久久久 | 亚洲三级在线免费观看 | 国产手机视频在线播放 | 91精品国产乱码 | 黄色亚洲大片免费在线观看 | 久久久久99精品成人片三人毛片 | 欧美一区二区在线看 | 欧美一级性生活 | 成人免费看视频 | 在线色视频小说 | 亚洲九九 | 成人av在线看 | 狠狠干夜夜爽 | 亚洲狠狠操 | 欧美91在线 | 五月婷婷丁香激情 | 国产 日韩 欧美 中文 在线播放 | 中文字幕一区二区三区精华液 | 精品国产乱码久久久久久天美 | 国产乱老熟视频网88av | 国内三级在线观看 | 一区免费视频 | 99精品在线视频播放 | 亚洲欧美日本一区二区三区 | 国产在线观看中文字幕 | 午夜精品久久久久久 | 中文字幕在线中文 | 91亚洲国产成人 | 香蕉91视频| 国产精品精品国产婷婷这里av | 91高清免费 | 玖玖在线免费视频 | 亚洲91视频| 一区二区男女 | www.色在线| 在线免费观看亚洲视频 | 日韩视频一区二区三区在线播放免费观看 | 精品国产一区二区三区蜜臀 | 91精品在线麻豆 | 香蕉视频在线免费 | 四虎影视久久久 | 成人动漫视频在线 | 一区二区精品国产 | 亚洲精品美女视频 | 午夜精品视频一区二区三区在线看 | 精品久久久久久久久久久久久 | 看毛片网站 | 日韩乱色精品一区二区 | 国产精品第72页 | 999久久久久久久久久久 | 又黄又爽又湿又无遮挡的在线视频 | 久久99精品国产麻豆宅宅 | 日韩r级电影在线观看 | 久艹在线播放 | 免费观看完整版无人区 | 婷婷久操| 不卡日韩av | 黄网站a| 亚洲精品视频第一页 | 一级做a爱片性色毛片www | 欧美成人影音 | 亚洲欧洲日韩 | 亚洲精品在线一区二区 | 91九色免费视频 | 伊人国产女 | 蜜臀av夜夜澡人人爽人人 | 草久久久 | 国产高清中文字幕 | 国产欧美精品xxxx另类 | 国产精品免费久久久久影院仙踪林 | 天天射夜夜爽 | 亚洲国产69 | 日本精品中文字幕在线观看 | 成人午夜av电影 | 97色视频在线 | 午夜美女网站 | 美女搞黄国产视频网站 | 久久精品婷婷 | 九九九九九九精品 | 日本在线观看黄色 | 高潮久久久久久久久 | 日韩欧三级 | 黄色三级免费网址 | 99精品免费视频 | 成年性视频 | 高清精品在线 | 久久成人国产精品 | 国产 一区二区三区 在线 | 九九热国产| 99久久精品国产亚洲 | 二区三区毛片 | 免费在线中文字幕 | 久久国内精品99久久6app | 国产视频日韩视频欧美视频 | 91精品国产成人 | 日本韩国欧美在线观看 | 五月天激情综合网 | 日韩欧美69 | 狠狠色丁香久久婷婷综合五月 | 国产美女视频网站 | 97色涩 | 国产精品久久久久久久午夜片 | 九九热视频在线播放 | 天堂黄色片 | 欧美日韩精品国产 | 国产资源网 | 人人狠 | 精品国产伦一区二区三区观看说明 | 丁香激情综合国产 | 在线观看理论 | 在线观看aa | 日韩黄色在线观看 | 91视频传媒 | 国产精品丝袜在线 | 中文字幕第一页在线视频 | 91精品老司机久久一区啪 | 国产中文字幕网 | 夜夜澡人模人人添人人看 | 青青河边草免费观看完整版高清 | 国产高清不卡一区二区三区 | 中文字幕在线观看免费 | 在线观看精品一区 | 免费激情在线电影 | 开心色婷婷 | 中文字幕av免费观看 | 1024手机基地在线观看 | 激情丁香综合 | 菠萝菠萝蜜在线播放 | a级一a一级在线观看 | 国产一级免费播放 | 亚洲日本精品 | 麻豆免费精品视频 | 日p在线观看 | 免费观看黄 | av在线看网站 | 99久久这里只有精品 | 久久av高清 | 久久婷五月 | 日韩精品免费一线在线观看 | 人人射人人插 | 亚洲成人家庭影院 | 久操视频在线观看 | 91手机视频| 国产黄色视 | 六月丁香六月婷婷 | 免费看一级| 九九久久视频 | 亚洲视频播放 | 久久99精品国产麻豆婷婷 | 国产在线精品国自产拍影院 | 欧美精品中文字幕亚洲专区 | 免费看一级特黄a大片 | 在线播放亚洲 | 久久九九国产精品 | 成人性生交大片免费看中文网站 | 热久久视久久精品18亚洲精品 | 久久成人精品电影 | 亚洲在线看 | 色久av| 在线观看一区二区精品 | 啪啪小视频网站 | 91精品国产一区二区三区 | 人人玩人人添人人澡97 | 激情综合五月天 | 国产婷婷色 | 色天天综合网 | 人人超碰免费 | 国产最新在线 | 夜夜操狠狠干 | 少妇bbbb | 久久国产系列 | 日韩免费高清在线观看 | 久久久国产一区二区三区 | 亚洲高清视频在线播放 | 91av精品| 欧美日韩69 | 91精品免费在线视频 | 999成人国产 | 公与妇乱理三级xxx 在线观看视频在线观看 | 国产午夜三级一区二区三桃花影视 | 夜色.com | 四虎影视成人精品国库在线观看 | 在线日韩视频 | 亚洲九九| 久草在线最新视频 | 亚洲精品成人av在线 | 四虎在线永久免费观看 | 亚洲精品tv| 亚洲黄网址 | 免费在线成人av电影 | 在线视频手机国产 | 91精品国自产在线观看欧美 | 国精产品999国精产 久久久久 | 日韩在线精品 | 成人毛片100免费观看 | 天堂中文在线视频 | 欧美激情va永久在线播放 | 狠狠操狠狠操 | 天天操·夜夜操 | 中文字幕日韩一区二区三区不卡 | www.天天成人国产电影 | 国产中文字幕在线播放 | 成人av在线亚洲 | 久草在线资源观看 | 亚洲日本欧美在线 | 国产精品免费视频网站 | 日韩高清免费无专码区 | av高清网站在线观看 | 欧美 亚洲 另类 激情 另类 | 亚洲最大av在线播放 | av免费成人 | 81国产精品久久久久久久久久 | 日韩理论在线 | 国产精品成人一区二区三区 | 97看片 | 欧美成年网站 | 国产不卡在线 | 毛片黄色一级 | 香蕉视频久久久 | 深爱激情婷婷网 | 免费亚洲电影 | 一本一本久久a久久 | 精品无人国产偷自产在线 | 色综合欧洲 | 久久久久久久久久久久亚洲 | 午夜影院一级片 | 国产精品美女久久久久久2018 | 一区二区三区动漫 | 精品av网站| 亚洲永久国产精品 | 丁香花在线观看视频在线 | 激情欧美在线观看 | 国产破处视频在线播放 | av在线a | 国产视频在线观看免费 | 在线观看国产永久免费视频 | 中文字幕精品一区久久久久 | 青青草视频精品 | 成人在线观看av | 色香com. | 国产专区欧美专区 | 国产精品久久久久永久免费 | 天天射成人 | 欧美一级免费片 | 在线视频日韩精品 | 国精产品999国精产品视频 | 五月婷在线播放 | 亚洲 欧美 变态 国产 另类 | 91精品黄色 | 欧美一区二区三区在线视频观看 | 国产一区二区在线播放视频 | 久久国产亚洲精品 | 精品一区二区在线免费观看 | 日韩在线免费电影 | 国产精品视频观看 | 999视频精品 | 国产精品久久久久久久久久不蜜月 | 亚洲欧美激情插 | 51久久成人国产精品麻豆 | 日韩r级电影在线观看 | 成人在线免费视频观看 | 亚洲午夜精品在线观看 | 91热视频在线观看 | 亚洲最新av在线网址 | 人人超碰免费 | 婷婷av在线 | 精品欧美一区二区精品久久 | 久久色在线观看 | 在线天堂日本 | 婷婷香蕉| 婷婷视频在线观看 | 天天做天天爱天天综合网 | 狠狠操狠狠干天天操 | 久久夜色电影 | 亚洲视频在线视频 | 最近中文字幕完整视频高清1 | 日韩视频免费观看高清完整版在线 | 国产精品成人久久久久 | 亚洲国产电影在线观看 | 国产高清在线观看av | 国产精品成人av电影 | 欧美精品少妇xxxxx喷水 | 韩国av在线| 久久综合爱 | 五月黄色 | 人人舔人人射 | 国产一区二区在线影院 | 96久久欧美麻豆网站 | 碰碰影院 | 黄色在线观看免费网站 | 欧美日韩在线观看一区二区三区 | 国产免费人成xvideos视频 | 最近av在线| 欧美综合在线视频 | 婷婷六月天丁香 | 主播av在线 | 日免费视频| 免费观看一级成人毛片 | 成人黄色av免费在线观看 | 亚洲精品国产品国语在线 | 成人动漫一区二区 | 国产中文字幕视频在线 | 国产视频资源 | 国产精品视频你懂的 | 精品国产精品久久 | 中文亚洲欧美日韩 | 青青河边草免费 | 日韩免费中文 | 国内成人精品2018免费看 | 成人国产精品一区二区 | 免费看黄20分钟 | 国产高清黄色 | 日韩免费小视频 | 999抗病毒口服液 | 国产一卡久久电影永久 | 日本性动态图 | 国产精品18久久久久久久网站 | 美腿丝袜一区二区三区 | 精品国产一区二 | 精品国产区在线 | 99久久影视 | 国产亚洲视频在线观看 | 亚洲国产精品久久 | 亚洲精品午夜久久久久久久久久久 | 操操操操网| 久草国产在线观看 | 一本一本久久a久久精品综合小说 | 国产97视频在线 | 九草在线视频 | 91手机在线看片 | 在线视频一区二区 | 成人av在线一区二区 | 丰满少妇对白在线偷拍 | 亚州精品在线视频 | 中文资源在线观看 | 在线播放视频一区 | 亚洲精品视频观看 | 国产成人亚洲在线观看 | 久久久久久久久国产 | 操处女逼| 久久综合狠狠综合 | 黄色国产成人 | 国模一区二区三区四区 | 国产精品福利无圣光在线一区 | 久久在线精品视频 | 日韩欧美在线高清 | 超碰在线人 | 五月天网站在线 | av在线专区| 一级黄色在线免费观看 | 欧美激情va永久在线播放 | 国产成人精品综合久久久 | 国产午夜精品av一区二区 | www.国产视频 | 超碰97免费 | 91激情视频在线播放 | 欧美一区二区在线 | 亚洲综合精品在线 | 久久在线观看 | av日韩在线网站 | 国产精品成人av久久 | 欧美 亚洲 另类 激情 另类 | 在线观看免费 | 中文字幕一区二 | 国产成本人视频在线观看 | 欧美久久成人 | 欧美 激情在线 | 亚洲九九九在线观看 | 伊人官网 | 久久久久久久综合色一本 | 欧美高清视频不卡网 | www亚洲视频 | 亚洲精品国产精品国自产观看 | 久久视频这里有精品 | 久久视频在线观看 | 天天操天天射天天 | 婷婷综合成人 | 在线97 | 久久久久久久久久亚洲精品 | av中文字幕在线看 | 国产精品 日韩精品 | 免费在线| 六月丁香激情综合色啪小说 | 激情图片qvod | 一本—道久久a久久精品蜜桃 | 亚洲日本激情 | 日本午夜免费福利视频 | 婷婷久久综合九色综合 | 操高跟美女| 天天干天天看 | 黄色大片视频网站 | 嫩草伊人久久精品少妇av | 在线看国产日韩 | 日韩高清观看 | 狠狠躁日日躁 | 欧美精品久久久久久久免费 | 在线午夜av | 国产高清99| 99精品视频在线观看免费 | 青青射| 欧美日本不卡高清 | 欧美激情综合色综合啪啪五月 | 国产成人综合在线观看 | 在线观看一区 | 成人黄色一级视频 | 日韩1级片 | 极品久久久久久久 |