簡體   English   中英

如何驅逐 kube.netes 中的 pod?

[英]How to evict pods in kubernetes?

我正在測試我在 k8s 集群上設置的觸發器。 它的作用是檢測 pod 是否被驅逐。 所以為了測試我跑了

kubectl drain <NODENAME> --ignore-daemonsets --force

但是被逐出的 pod 只是自動刪除而不是留在集群中。 你們能幫我解決如何驅逐豆莢的問題嗎? 我正在使用 kind 在我的計算機上進行本地測試。 實際上,我想在被驅逐后閱讀被驅逐的 pod yaml,以便我可以構建該觸發器。

首先,回答標題問題:“How to evict pods in kube.netes?” 還有許多其他方法可以觸發 Pod 驅逐,但有兩種簡單的方法:

API 基於驅逐

您可以使用 API 手動驅逐 pod 要使用 API:

應用 NoExecute 污點

您的 pod 不能容忍的NoExecute 污點將導致它被驅逐。

kubectl taint nodes node1 key1=value1:NoExecute

現在,您的問題文本提出了一個略有不同的問題:在成功驅逐讀取 pod 資源。 至少在我的環境和 k8s 版本中,一旦 pod 被逐出,它就會被與其運行的節點關聯的服務帳戶刪除。

實際上,很多東西都可以刪除 pod——包括垃圾收集器,因此在 pod 終止后查詢它充滿了潛在的競爭條件。

相反,我會建議為 pod 事件設置程序化監視。 client-go提供了 Informer 模式來通過一些樣板文件來實現這一點。

為 Pod 創建一個 informer,為您的事件處理程序定義一個UpdateFunc ,您將可靠地接收 pod state 更改,因為它們由 API 處理——然后您可以評估它們是否被驅逐。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM