2016-12-25 81 views
28

我一直在創造與type:deployment豆莢,但我看到一些文檔使用type:pod,更具體the documentation for multi-container pods在kubernetes中,pod和部署之間有什麼區別?

apiVersion: v1 
kind: Pod 
metadata: 
    name: "" 
    labels: 
    name: "" 
    namespace: "" 
    annotations: [] 
    generateName: "" 
spec: 
    ? "// See 'The spec schema' for details." 
    : ~ 

但要創造莢我可以只使用a deployment type

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: "" 
spec: 
    replicas: 3 
    template: 
    metadata: 
     labels: 
     app: "" 
    spec: 
     containers: 
     etc 

我注意到莢文檔說:

create命令可以用來直接創建一個窗格,或者它可以通過部署創建一個pod或pod。強烈建議您使用Deployment來創建您的Pod, 。它會監測失敗的 吊艙,並將根據需要啓動新的吊艙以保持指定的 號碼。如果您不希望部署監控您的吊艙(例如,您的 吊艙正在編寫無法在重新啓動後存活的非持久性數據,或者您的吊艙打算壽命很短),則可以創建一個吊艙 直接用create命令。

注意:我們建議使用部署來創建窗格。只有在您不想創建部署時,才應使用以下說明進行 。

但是這引起了什麼kind:pod好?你能以某種方式在部署中引用pod嗎?我沒有看到方法。它看起來像你得到的豆莢是一些額外的元數據,但沒有任何部署選項,如replica或重啓策略。沒有持續數據的pod有什麼好處,在重新啓動後仍然存在?我想我也可以用部署創建一個多容器Pod。

回答

32

Pod和Deployment都是Kubernetes API中的完整對象。部署通過ReplicaSets管理創建Pod。它歸結爲部署將創建具有從模板中獲取的規範的Pod。您不太可能需要直接爲生產用例創建Pod。

+0

謝謝你,但是當你會永遠直接創建莢? –

+2

有一個自定義控制器是您可能想要直接創建和管理窗格的一種情況,而不是使用更高級別的抽象之一。 –

+3

@BjornTipling當我不需要kubernetes在刪除時重新創建窗格時,我創建了未部署的窗格。一個用例是首先通過創建一個吊艙來測試事情。 – user2526795

15

拉狄克的答案是很不錯,但我想從我的經驗,在場上,你幾乎不會使用對象那種,因爲這並不在實踐中任何意義。

因爲你需要一個部署對象 - 或者像複製控制器replicaset其他Kubernetes API對象 - 需要保持副本(豆莢)活着(這是一種使用kubernetes點的)。

你將在實踐中使用什麼樣的一個典型應用是:

  1. 部署對象(在那裏你會指定你的應用程序容器/容器),將與其他一些規範託管您的應用程序容器。

  2. 服務對象(即像一個分組對象,並賦予它對於具有特定標籤的豆莢所謂的虛擬IP(集羣IP) - 和那些吊艙基本上是你部署的應用程序容器前者部署對象)。

你需要有服務對象,因爲從部署對象莢可以被殺死,放大和縮小,你不能依靠自己的IP地址,因爲他們不會持久。

所以你需要一個對象,如服務,這給了這些豆莢一個穩定的IP。

只是想給你一些關於豆莢的上下文,所以你知道事情是如何協同工作的。

希望掃清了一些東西給你,沒多久前,我在你的鞋子:)

+0

不錯的答案,我們需要一個replicaSet或一個ReplicationController,因爲我把部署對象包裝在這些對象控制副本? –

+0

是的,Deployment對象處理複製對象,但如果您真的想要,也可以使用類型爲ReplicationController或類型ReplicaSet的對象,但在實踐中我沒有看到太多內容...... –

相關問題