[英]How to evict or delete pods from Kubernetes using golang client
[英]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 手動驅逐 pod 。 要使用 API:
您的 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.