❗️Preempted in order to admit critical pod

sasa :)
4 min readMay 7, 2020

--

#kubernetes #工作筆記

問題描述

最近玩GKE 玩一玩看到了這個訊息

error 1

有一個deployment裡面的Pod出現了看不懂的訊息

最奇怪的是

該筆deployment的設定的 replicas: 1 ????

為何出現兩個Pod????

error 2

然後一個✅Running 一個❗️Preempting

研究了一下後發現

這是kubernetes的 Preemption [1] 引起的

中文翻譯成 先佔 佔什麼鬼 誰看得懂啊?

爬了[1]的文後,簡單翻譯一下我的認知

在說明Preemption前,先說一下kubernetes裡的一個屬性 優先權(priority)

這個屬性叫做 priorityClassName[2],是讓你設定Pod的優先權

例如:若這個pod是負責Application類的,不能死掉的,那就可以把他的優先權調高;若這個Pod是負責類似監控啊,batch之類的,死掉一下比較沒關係的,就可以把優先權調低(其實不要設定就好XD)

(跳一下回來主題)

Kubernetes的特性,就是它可以彈性的調配Pod的資源

但如果資源不夠時(CPU or memory),該怎麼辦?

kubernetes會先犧牲掉優先權(priority)較低的pod

它會把priority較低的pod,先回收到排程區(scheduled)

把資源讓給system pod或priority較高的pod

等有多餘可調度的資源時,再把排程區的pod起起來。

上述說明中的

「把資源讓給system pod或priority較高的pod」就是Preemption

(我的認知)

因此,若出現Preemption的狀態時

priority較低的pod上,就會出現這個訊息

「Preempted in order to admit critical pod」

kubenetes就是跟你說:這個pod的資源要被別人搶走囉😆

謎之音:那如果我所有的pod都沒有設定priority咧?
答:那就隨機回收阿!

因此,上方 error2 的圖

replicas:1但卻顯示兩個pod的原因

是因為第一個pod被回收了,所以出現驚嘆號

但過一陣子,資源調度ok了,因此第二個pod就長出來了

但kubernetes可能因為比較貼心(亂猜)

所以並沒有把第一個pod的狀態砍掉,有留給使用者查詢

最後,該如何處理這個驚嘆號咧?

不用懷疑,直接delete這個pod就好😅

以上為學習筆記,若有誤刊,或觀念不清楚的地方,請通知我!
謝謝

參考文件

[1] https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#preemption

[2]https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#pod-priority

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

sasa :)
sasa :)

Written by sasa :)

目標是做一個讓所有人都聽得懂技術語言的transfer person

No responses yet

Write a response