Deploymentを理解する
DeploymentがステートレスアプリケーションのPodとReplicaSetの管理を自動化する仕組みを学びます。
「Deploymentを理解する」はCoddyKit上の無料Kubernetes Basicsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKubernetes Basics学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kubernetes Basicsコースには全4レッスンが含まれています。
Deploymentとは
ようこそ。Kubernetesでは、アプリケーションを管理することは、そのPodを管理することを意味します。しかし、個々のPodやReplicaSetを直接管理するのは複雑になることがあります。
Deploymentは、ステートレスアプリケーションの管理を簡単にする、より上位のオブジェクトです。アプリケーションの管理者のようなものだと考えてください。
- アプリケーションの望ましい状態を定義します。
- Podに障害が発生しても、その状態が維持されるようにします。
- 更新とロールバックを自動化します。
Deploymentを使う理由
Deploymentには、Kubernetesでアプリケーションを安定して実行するための大きな利点があります。
- 自動管理:Podの作成、スケーリング、削除を処理します。
- 自己修復:Podがクラッシュすると、Deploymentは望ましいレプリカ数を維持するために、そのPodを自動的に置き換えます。
- 宣言的な更新:新しい望ましい状態を記述すると、Deploymentがその状態に到達する方法(新しいバージョンのローリング更新など)を判断します。
Deploymentは、ステートレスアプリケーションを管理する推奨される方法です。
Deploymentの中心的な役割
Deploymentの中心的な役割は、ReplicaSetsを管理することです。ReplicaSetは、指定された数のPodレプリカが常に実行されるようにします。
つまり、DeploymentはReplicaSetを使って、定義に従い、アプリケーションで正しい数の健全なPodが実行されるという目標を達成します。
この抽象化により、アプリケーションのライフサイクルを定義して維持する作業が大幅に簡単になります。
Deployment YAMLの構成
ほとんどのKubernetesオブジェクトと同様に、DeploymentはYAMLを使って定義します。通常、次の主要なセクションが含まれます。
apiVersionとkind:オブジェクトの種類(Deployment)を識別します。metadata:Deployment自体の名前やラベルなどを指定します。spec:次の内容を含む、中心的な定義です。replicas:望ましいPod数です。selector:Deploymentが管理対象のPodを見つける方法です。template:作成するPodの設計図です。
Podテンプレート
Deploymentのspec内にあるtemplateフィールドは非常に重要です。これは基本的に、Podの完全な定義です。
このDeploymentによって作成されるすべてのPodは、このテンプレートを使用します。つまり、次の内容を定義します。
- 使用するコンテナイメージ
- 公開するポート
- 環境変数
- リソースのリクエストと上限
- その他の設定
このテンプレートを変更すると、アプリケーションの更新が開始されます。
シンプルなDeploymentの作成
シンプルなNginx Webサーバー用のDeploymentを定義してみましょう。レプリカは3つにします。
selector.matchLabelsはtemplate.metadata.labelsと一致させる必要があります。これにより、DeploymentがどのPodを管理するかが指定されます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80Deploymentの適用
Kubernetesクラスター(Minikubeなど)にこのDeploymentを作成するには、kubectl applyコマンドを使用します。上記のYAMLをnginx-deployment.yamlとして保存してください。
kubectlがDeploymentオブジェクトを作成します。次にDeploymentコントローラーがこのオブジェクトを検出して処理を開始し、ReplicaSetを作成します。そのReplicaSetが3つのNginx Podを作成します。
kubectl apply -f nginx-deployment.yamlDeploymentの確認
適用後は、Deploymentと、それが管理するPodの状態を確認できます。
kubectl get deployments:Deploymentを表示します。kubectl get replicasets:Deploymentによって作成されたReplicaSetを表示します。kubectl get pods -l app=nginx:ラベルセレクターを介して、Deploymentが管理するPodを表示します。kubectl describe deployment my-nginx-deployment:イベントを含む、Deploymentの詳細情報を表示します。
kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment my-nginx-deployment望ましい状態の維持
Deploymentの最も強力な機能の1つは、望ましい状態を維持できることです。replicas: 3と定義すると、Deploymentは常に3つのPodが実行されるようにします。
Nginx Podの1つを手動で削除してみてください(kubectl delete pod <pod-name>)。Deploymentがすぐに新しいPodを作成し、削除されたPodを置き換えることを確認できます。これが自己修復の実例です。
クイックチェック
Deploymentは主に、どの種類のアプリケーションを管理するために使用されますか?
振り返り:Deploymentの理解
よくできました。KubernetesのDeploymentについて、最初の一歩を踏み出しました。
- Deploymentは、ステートレスアプリケーションを管理するための上位オブジェクトです。
- ReplicaSetを管理することで、Podの作成、スケーリング、自己修復を自動化します。
- YAMLマニフェストを使ってDeploymentを定義し、望ましい
replicas数とPodのtemplateを指定します。 kubectl applyでDeploymentを作成し、kubectl get/describeで監視できます。
次は、ReplicaSetの詳細と、ReplicaSetが望ましいPod数をどのように保証するかを見ていきます。
よくある質問
「Deploymentを理解する」レッスンは無料ですか?
はい。「Deploymentを理解する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kubernetes Basicsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kubernetes Basicsコースには全4レッスンが含まれています。
「Deploymentを理解する」で何を学びますか?
DeploymentがステートレスアプリケーションのPodとReplicaSetの管理を自動化する仕組みを学びます。 ブラウザで直接実行するハンズオンコードでKubernetes Basicsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kubernetes Basicsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKubernetes Basicsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Deploymentを理解する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKubernetes Basicsレッスンでコードを書いて実行できますか?
はい。すべてのKubernetes Basicsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。