2016-12-25 4 views
28

私はtype:deploymentとポッドを作成してきたが、私はいくつかのドキュメントは、より具体的にthe documentation for multi-container podstype:pod、使用していることを参照してください。私はポッドに気づいkubernetesでは、ポッドとデプロイメントの違いは何ですか?

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

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

しかし、ポッドを作成するために、私はちょうどa deployment type使用することができますドキュメント:

作成コマンドを使用して、直接ポッドを作成したり、または、 Deploymentを介してポッドを作成することができます。デプロイメントを使用してポッドを作成することを強くお勧めします。 それは失敗した ポッドを監視し、指定された 番号を維持するために必要に応じて新しいポッドを起動します。デプロイメントでポッドを監視したくない場合(たとえば、 ポッドが再起動に耐えない非永続データを書き込んでいたり、 ポッドが非常に短命になっているなど)、ポッドを作成することができます はcreateコマンドで直接実行します。

注:配置を使用してポッドを作成することをおすすめします。デプロイメントを作成しない場合は、 以下の手順を使用する必要があります。

しかし、これによって何がkind:podに適しているのでしょうか?あなたは何とか展開中のポッドを参照できますか?私は道を見なかった。ポッドを使用すると、余分なメタデータがありますが、replicaや再起動ポリシーなどのデプロイメントオプションはありません。データを保持せずに再起動してもうまくいくポッドは何ですか?私は、デプロイメントを備えたマルチコンテナポッドも作成できると思います。

答えて

32

PodとDeploymentの両方が、Kubernetes APIの本格的なオブジェクトです。 Deploymentは、ReplicaSetsを使用してポッドを作成することを管理します。それは、デプロイメントがテンプレートから取得した仕様のポッドを作成するということです。プロダクションユースケースのために直接ポッドを作成する必要はほとんどありません。

+0

ありがとうございました、しかしときあなたは今まで直接ポッドを作成するのでしょうか? –

+2

カスタムコントローラーを使用することは、上位レベルの抽象概念の1つを使用する代わりに、ポッドを直接作成して管理したい場合があります。 –

+3

@BjornTipling削除したときにポッドを作成するためにkubernetesを必要としない場合は、展開せずにポッドを作成します。 1つのユースケースは、まずポッドを作成してテストすることです。 – user2526795

15

ラデクの答えは非常に良いですが、それは実際にはどんな意味がないので、私は私の経験からのピッチたい、あなたは、種類ポッドオブジェクトを使用することはほとんどないでしょう。

あなたは展開オブジェクト必要があるため - または複製コントローラまたはさらにreplicaSetのような他のKubernetes APIオブジェクト - レプリカ(ポッド)を維持する必要が生きている(つまり、kubernetesを使用してのポイントのようなものです)。あなたは一般的なアプリケーションのために実際に使用されますどのような

は以下のとおりです。

  1. 展開オブジェクト他のいくつかの仕様にアプリのコンテナを開催します(あなたがアプリのコンテナ/コンテナを指定する場所)。

  2. サービスオブジェクトは(つまり、グループ化オブジェクトのようなもので、それを特定のラベルを持つポッドため、いわゆる仮想IP(クラスタIP)を与える - と、これらのポッドは、基本的にあなたがして展開し、アプリケーションコンテナです元配備オブジェクト)。

    彼らは永続的ではありませんので、展開オブジェクトからポッドは、殺されたスケールアップとダウン、そしてあなたがそのIPアドレスに依存することはできませんすることができますので、あなたは、サービスオブジェクトを持っている必要があります

サービスのようなオブジェクトが必要なので、それらのポッドに安定したIPが与えられます。

ポッドの周りにいくつかの文脈を与えて、物事の仕組みを知っているだけです。

あなたのためのいくつかのことをクリアホープないずっと前に私はあなたの靴にあった:)

+0

良い答えは、私は、レプリカを制御しているこれらのオブジェクトを展開オブジェクトにラップするので、レプリカセットまたはReplicationControllerが必要なのでしょうか? –

+0

はい、Deploymentオブジェクトはレプリカセットを処理しますが、種類がReplicationControllerまたはkind:ReplicaSetのオブジェクトを使用することもできます。 –

関連する問題