![](/img/trans.png)
[英]Can I use multiple docker containers on a computer as Kubernetes worker nodes?
[英]Can Docker automatically kill containers on a Kubernetes worker when Kubelet stopped?
我在 Kube.netes 中試驗 default-not-ready-toleration-seconds 以縮短 pod 在集群中的 NotReady 節點上終止之前的時間。 但是我注意到,如果 Kubelet 關閉,CRI(Docker)當然不會自行殺死正在運行的容器。 因此,當 Kube.netes 決定終止 pod 時,如果容器無法與 Kubelet 通信,它仍將運行,最終將有 2 個容器在運行。
我的問題是,如果 Kubelet 沒有在設定的超時時間內運行,是否有辦法讓 CRI 獨立做出殺死容器的決定?
# docker ps | grep busybox
5cb58ea42982 busybox "tail -f /dev/null" 45 hours ago Up 45 hours
# systemctl stop kubelet
# kubectl get pod busybox-test-busybox-69b844bd79-wsdvp
NAME READY STATUS
busybox-test-busybox-69b844bd79-wsdvp 1/1 Terminating
### WAIT WAIT WAIT...
# docker ps | grep busybox
5cb58ea42982 busybox "tail -f /dev/null" 45 hours ago Up 45 hours
你可以這樣做也不能這樣做,基本上,kubelet 是節點上的船長,並指示 docker 根據從 Kube.netes API 服務器收到的指令創建容器。
如果 kubelet 與 master 斷開連接,該節點將在特定時間間隔后標記為不可訪問。
現在 kubelet 是節點的所有者,但沒有任何指示,它不知道如何處理節點上的 pod(正如 kubelet 看到的那樣)kubelet 將使正在運行的 pod 保持運行狀態 state 或者可以從 staticPodPath 創建新的 pod
假設 kubelet 也死了。 現在沒有人在那里指導 docker 有關容器的信息。
Node 就像一台安裝了 Docker 的機器,上面運行着容器。 Docker 不知道它的主人已經死了。 它將繼續運行容器。
現在回答你的問題:
My question is, is there a way to make the CRI independently make the decision to kill a container if Kubelet have not been running for a set timeout?
您可以創建一個在節點上運行並檢查 kubelet 服務狀態的腳本。 如果服務關閉,則終止所有正在運行的容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.