簡體   English   中英

我怎么知道什么時候應該使用無狀態 Pod 或有狀態的 Pod?

[英]how do i know when should i use a stateless pod or a stateful one?

我是 Kubernetes 和 Docker 的新手,我正在研究無狀態和有狀態的概念,我知道無狀態微服務不在主機上存儲數據,而有狀態微服務需要在為請求提供服務的主機上進行某種存儲但如果由我決定,我將始終使用有狀態的 Pod,我為什么要使用無狀態的 Pod? 無國籍有什么好處?

對於典型的 Kubernetes Pod,它將由更高級別的控制器(如 Deployment)管理。 您可以將 Deployment 設置為具有replicas: 3以便如果其中一個失敗,另外兩個可以承擔負載。 在更新時,現有的 Pod 將被刪除並重新創建。 如果負載很重,您可以設置一個 Horizo​​ntalPodAutoscaler 來為您增加副本數量,這將在需要時創建更多 pod。

如果您的容器是無狀態的,那么所有這些都非常簡單,並且kubectl delete pod沒有任何后果。

有狀態 Pod 的問題在於狀態。 Kubernetes 為您提供了一些數據存儲位置的選擇,但其中大多數一次只能在一個 Pod 上使用; 如果您有多個副本,那么每個副本通常都需要自己的本地存儲,並且應用程序需要知道如何協調它的多個副本。 (或者,如果您可以設置諸如 NFS 服務器之類的東西,應用程序需要知道如何處理並發寫入。)在操作上,您需要知道如何備份和恢復所有正在創建的單個小卷辦法。

標准方法是盡量減少存儲狀態的位置,並使用來自無狀態應用程序的網絡 I/O 將內容放置到位。 狀態甚至不需要在集群中:如果您的應用程序在 AWS 中運行,您可以擁有主要將數據存儲在 RDS 托管的關系數據庫和 Amazon 的 S3 對象存儲中但在本地不保留任何內容的容器,然后您可以使用正常的集群外存儲的備份和管理方法。

暫無
暫無

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

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