私はポッドを作成してきましたtype:deployment
が、いくつかのドキュメントではtype:pod
、より具体的には、マルチコンテナポッドのドキュメント:
apiVersion: v1
kind: Pod
metadata:
name: ""
labels:
name: ""
namespace: ""
annotations: []
generateName: ""
spec:
? "// See 'The spec schema' for details."
: ~
しかし、ポッドを作成するには展開タイプ:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ""
spec:
replicas: 3
template:
metadata:
labels:
app: ""
spec:
containers:
etc
ポッドのドキュメントには次のように書かれていることに気付きました:
create コマンドを使用してポッドを直接作成することも、Deployment を通じてポッドを作成することもできます。ポッドの作成には Deployment を使用することを強くお勧めします。Deployment は失敗したポッドを監視し、指定された数を維持するために必要に応じて新しいポッドを起動します。Deployment でポッドを監視したくない場合 (たとえば、ポッドが再起動しても保持されない非永続的なデータを書き込んでいる場合や、ポッドの存続期間が非常に短い場合)、create コマンドを使用してポッドを直接作成できます。
注: ポッドを作成するには、デプロイメントを使用することをお勧めします。デプロイメントを作成しない場合にのみ、以下の手順を使用してください。
しかし、これは何の役に立つのかという疑問を生じさせますkind:pod
。デプロイメントでポッドを何らかの方法で参照することはできますか? 方法がわかりませんでした。ポッドで得られるのは追加のメタデータのようですが、デプロイメント オプションやreplica
再起動ポリシーはありません。データを保持せず、再起動しても存続するポッドの何が役に立つのでしょうか? デプロイメントでもマルチ コンテナー ポッドを作成できると思います。
ベストアンサー1
Radek さんの回答は非常に良いのですが、私の経験から言わせてもらうと、実際には意味がないので、podのようなオブジェクトを使用することはほとんどありません。
なぜなら、レプリカ(ポッド) を存続させるには、デプロイメントオブジェクト、またはレプリケーション コントローラーやレプリカセットなどの他の Kubernetes API オブジェクトが必要になるからです(これが Kubernetes を使用する目的の 1 つです)。
典型的なアプリケーションで実際に使用するものは次のとおりです。
他の仕様でアプリのコンテナをホストするデプロイメント オブジェクト(アプリのコンテナを指定する場所)。
サービス オブジェクト(グループ化オブジェクトのようなもので、特定のラベルを持つ、いわゆる仮想 IP (クラスター IP) を割り当てます。
pods
これらは基本的に、以前のデプロイメントpods
オブジェクトを使用してデプロイしたアプリ コンテナーです)。
デプロイメント オブジェクトは強制終了したり、スケールアップ/スケールダウンしたりできるため、サービスオブジェクトが必要ですpods
。また、IP アドレスは永続的ではないため、IP アドレスに依存することはできません。
したがって、安定した IPを提供するサービスのようなオブジェクトが必要です。pods
pods
物事がどのように連携して動作するかを知っていただくために、についての背景情報をお伝えしたいと思います。
これで少しは理解できたかと思いますが、つい最近まで私もあなたと同じ立場にいました :)