新聞中心
API 發(fā)起的驅(qū)逐
API 發(fā)起的驅(qū)逐是一個先調(diào)用 Eviction API 創(chuàng)建 ?Eviction ?對象,再由該對象體面地中止 Pod 的過程。

十載的象州網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整象州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“象州網(wǎng)站設(shè)計”,“象州網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
你可以通過直接調(diào)用 Eviction API 發(fā)起驅(qū)逐,也可以通過編程的方式使用 API 服務(wù)器的客戶端來發(fā)起驅(qū)逐, 比如 ?kubectl drain? 命令。 此操作創(chuàng)建一個 ?Eviction ?對象,該對象再驅(qū)動 API 服務(wù)器終止選定的 Pod。
API 發(fā)起的驅(qū)逐將遵從你的 PodDisruptionBudgets 和 terminationGracePeriodSeconds 配置。
使用 API 創(chuàng)建 Eviction 對象,就像對 Pod 執(zhí)行策略控制的 DELETE 操作
調(diào)用 Eviction API
你可以使用 Kubernetes 語言客戶端 來訪問 Kubernetes API 并創(chuàng)建 ?Eviction ?對象。 要執(zhí)行此操作,你應(yīng)該用 POST 發(fā)出要嘗試的請求,類似于下面的示例:
- ?
policy/v1?
Note:
?
policy/v1? 版本的 Eviction 在 v1.22 以及更高的版本中可用,之前的發(fā)行版本使用 ?
policy/v1beta1? 版本。
{
"apiVersion": "policy/v1",
"kind": "Eviction",
"metadata": {
"name": "quux",
"namespace": "default"
}
}
policy/v1beta1?Note:
在 v1.22 版本廢棄以支持 ?
policy/v1?
{
"apiVersion": "policy/v1beta1",
"kind": "Eviction",
"metadata": {
"name": "quux",
"namespace": "default"
}
}
或者,你可以通過使用 ?curl ?或者 ?wget ?來訪問 API 以嘗試驅(qū)逐操作,類似于以下示例:
curl -v -H 'Content-type: application/json' https://your-cluster-api-endpoint.example/api/v1/namespaces/default/pods/quux/eviction -d @eviction.json
API 發(fā)起驅(qū)逐的工作原理
當(dāng)你使用 API 來請求驅(qū)逐時,API 服務(wù)器將執(zhí)行準(zhǔn)入檢查,并通過以下方式之一做出響應(yīng):
- ?
200 OK?:允許驅(qū)逐,子資源 ?Eviction?被創(chuàng)建,并且 Pod 被刪除, 類似于發(fā)送一個 ?DELETE?請求到 Pod 地址。 - ?
429 Too Many Requests?:當(dāng)前不允許驅(qū)逐,因為配置了 PodDisruptionBudget。 你可以稍后再嘗試驅(qū)逐。你也可能因為 API 速率限制而看到這種響應(yīng)。 - ?
500 Internal Server Error?:不允許驅(qū)逐,因為存在配置錯誤, 例如存在多個 PodDisruptionBudgets 引用同一個 Pod。
如果你想驅(qū)逐的 Pod 不屬于有 PodDisruptionBudget 的工作負(fù)載, API 服務(wù)器總是返回 ?200 OK? 并且允許驅(qū)逐。
如果 API 服務(wù)器允許驅(qū)逐,Pod 按照如下方式刪除:
- API 服務(wù)器中的 ?
Pod?資源會更新上刪除時間戳,之后 API 服務(wù)器會認(rèn)為此 ?Pod?資源將被終止。 此 ?Pod?資源還會標(biāo)記上配置的寬限期。 - 本地運行狀態(tài)的 Pod 所處的節(jié)點上的 kubelet 注意到 ?
Pod?資源被標(biāo)記為終止,并開始優(yōu)雅停止本地 Pod。 - 當(dāng) kubelet 停止 Pod 時,控制面從 Endpoint 和 EndpointSlice 對象中移除該 Pod。因此,控制器不再將此 Pod 視為有用對象。
- Pod 的寬限期到期后,kubelet 強制終止本地 Pod。
- kubelet 告訴 API 服務(wù)器刪除 ?
Pod?資源。 - API 服務(wù)器刪除 ?
Pod?資源。
解決驅(qū)逐被卡住的問題
在某些情況下,你的應(yīng)用可能進入中斷狀態(tài), 在你干預(yù)之前,驅(qū)逐 API 總是返回 ?429 ?或 ?500?。 例如,如果 ReplicaSet 為你的應(yīng)用程序創(chuàng)建了 Pod, 但新的 Pod 沒有進入 ?Ready ?狀態(tài),就會發(fā)生這種情況。 在最后一個被驅(qū)逐的 Pod 有很長的終止寬限期的情況下,你可能也會注意到這種行為。
如果你注意到驅(qū)逐被卡住,請嘗試以下解決方案之一:
- 終止或暫停導(dǎo)致問題的自動化操作,重新啟動操作之前,請檢查被卡住的應(yīng)用程序。
- 等待一段時間后,直接從集群控制平面刪除 Pod,而不是使用 Eviction API。
網(wǎng)站題目:創(chuàng)新互聯(lián)kubernetes教程:KubernetesAPI發(fā)起的驅(qū)逐
地址分享:http://m.fisionsoft.com.cn/article/dppooeo.html


咨詢
建站咨詢
