Kubernetes Multi-Pod Deploymentの設定方法
k8sのDeploymentオブジェクトでデプロイメントを管理し、アプリケーションクラスタをデプロイしたいと思っています。ドキュメントを見ると、非常に混乱してしまいます。私の基本的なレイアウトには、独立してスケールする以下のコンポーネントがあります。
1.APIサーバー 2.UIサーバー 3.Redisキャッシュ 4.タイマー/スケジュールタスクサーバー
技術的には、上記の4つはすべて別々のPodに属し、独立してスケーリングされます。
私の質問は
1.1. Pod.ymlファイルを作成し、それを
deployment.ymlファイルで参照する必要がありますか? それとも、デプロイメントファイルにも Pod 定義を埋め込むことができますか? 2.2. K8sのドキュメントでは、
Deploymentの
spec` 部分は one ポッドの定義と同等であると示唆しているようです。これは正しいですか?3.複数のポッドのデプロイメントを宣言的に記述したい場合はどうすればよいですか?複数の deployment.yml ファイルが必要なのでしょうか?
41
2
Pagidsの回答は基本的なことをほとんど網羅しています。あなたのシナリオのために4つの
Deployments
を作成する必要があります。各展開は、Deployment
のためのPOD
のコレクションをスケジュールし、監督するReplicaSet
を作成します。それぞれの
Deployment
は、アクセスするために、その前にService
を必要とすることがほとんどです。私は通常、一つの yaml ファイルを作成して、その中にDeployment
とそれに対応するService
を作成する。以下は、私が使用しているnginx.yaml
の例です。以下は、説明のための追加情報です。
はスケーラブルなユニットではありません。POD をスケジュールする
Deployment` はそうです。Deployment
を一緒に動作させることができます。Deployment
にアクセスするには、サービスを作成する必要があります。StatefulSet
を作成する必要があります (例: データベースサービス用)。KubernetesのAPI referenceにあるDeploymentで、
spec
->template
フィールドが[PodTemplateSpec
]という型になっていることがわかります3。そして関連コメント(Template descriptions the pods that will be created. )とともに質問に答えてくれています。もちろん、より長い説明は、Deployment user guide に記載されています。あなたの質問に答えるために...
ポッドはデプロイメントによって管理され、デプロイメントによって必要に応じて作成されるため、別々に定義しても意味がありません。同じポッドタイプのレプリカが複数存在する可能性があることを念頭に置いてください。
リスト内の各アプリケーションについて、1つの
Deployment
を定義する必要があります。これは、レプリカ数の違いとアプリケーションのロールアウトに関しても意味があります。3)3) 質問されていませんが、関連しています - 別の
Deployments
と共に、各アプリケーションは専用のService
を必要とし、他のアプリケーションはそれにアクセスすることができます。