Kubernetes デプロイメントのセットアップとローンチ
メニューを表示するにはスワイプしてください
アプリケーションがコンテナ内で正常に動作するようになったら、次の課題はそれらのコンテナを大規模にオーケストレーションおよび管理することです。ここで Kubernetes が役立ちます。
まず、YAML ファイルを使ってアプリケーションの望ましい状態を定義します。1つのファイルでは更新やスケーリングを管理する Deployment を記述し、もう1つのファイルではアプリケーションをネットワークに公開し、ユーザーがアクセスできるようにする Service を定義します。
YAML(YAML Ain't Markup Language)は、設定ファイル用の人間が読みやすいフォーマットです。 インフラストラクチャの記述、自動化プロセス、アプリケーション設定の保存によく使用されます。
Deployment は、アプリケーションインスタンス(Pod)の所定数が常に稼働していることを保証し、アップデートのロールアウトや以前のバージョンへのロールバックを容易にします。 Service は、これらのコンテナをネットワークに公開し、受信トラフィックを分散します。
Minikube の実行
Minikube は、ローカル環境で Kubernetes クラスター を実行できる軽量ツール。クラウドサービスを利用せずに、Kubernetes をテストおよび検証できる仮想環境を作成。
Minikube をインストールし、システム PATH に追加した後、PowerShell(または任意のターミナル)を開き、次のコマンドを実行。
このコマンドは Minikube が利用可能かどうかを確認し、インストールされているバージョンを表示します。
Minikube のインストールを確認したら、ローカルの Kubernetes クラスターを次のコマンドで起動します:
このコマンドはローカルマシン上に Kubernetes クラスターを作成し、起動します。必要なコンポーネントをダウンロードし、コントロールプレーンとワーカーノードを起動します。
デプロイメント:アプリケーションのロールアウト
まず deployment.yaml ファイルを作成します。Kubernetes の Deployment は、特定数の Pod(アプリケーションインスタンス)が常に稼働し、ダウンタイムなしで更新やロールバックができることを保証します。
deployment.yaml
このマニフェストでは、replicas パラメータが同時に実行される Pod インスタンスの数を指定します(この場合は 2 つ)。どの Pod を管理するかを判断するために、Deployment は selector と labels の組み合わせを使用します。selector は特定のラベルを持つ Pod をフィルタリングする役割を果たし、Pod テンプレートがそのラベルを定義します。ラベルが一致すると、Deployment はそれらの Pod を自身のものとして扱い、その数の維持、更新、必要に応じた再起動を行います。
すべての Pod は ポート 3000 で動作します。各 Pod は独立したネットワーク空間で動作するため、同じポートを使用しても競合は発生しません。
サービス:アプリケーションへのネットワークアクセス
Deployment が設定されたら、Service を作成して Pod 間のネットワークアクセスとロードバランシングを提供します。service.yaml ファイルを作成します。
service.yaml
このマニフェストは、my-app-service という名前のServiceを定義し、ラベル app: my-app を持つPodへのトラフィックを転送します。外部ではポート80でリッスンし、Pod内のポート3000にリクエストを転送します。
LoadBalancerタイプは、アプリケーションを外部に公開し、トラフィックをPod間で分散するために重要です。
Kubernetesでのアプリケーションのデプロイ
YAMLファイルが準備できたら、クラスタに適用します:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f コマンドは、YAMLファイルの内容に基づいてクラスタ内のリソースを作成または更新します。
ステータスの確認
構成ファイルを適用した後、すべてが期待通りにデプロイされていることを確認することが重要です。Pod および Service は起動に少し時間がかかるため、まず実行中の Pod を一覧表示します。
deployment.yaml ファイルで replicas: 2 が指定されている場合、2つのPod が出力に表示されます。
Service が稼働してアクセス可能であることを確認します:
これにより、ServiceのIPアドレス とアプリケーションにアクセスできるポートが表示されます。
サービスURLの取得
アプリケーションへアクセスするには、PowerShell またはターミナルで次のコマンドを実行。
このコマンドは、Minikube にアプリケーションが公開されている URL を返すよう要求。Minikube は作成した Service(my-app-service)を確認し、ブラウザで開けるリンクを提供。
アプリケーションのスケーリング
Kubernetes では、アプリケーションを停止せずに稼働中の Pod 数を簡単に調整可能。
例:2 から 4 レプリカへスケールする場合。
kubectl get pods を再度実行すると、4つのアクティブなPodが一覧表示されます。
Kubernetes は、あらゆる規模でコンテナ化されたアプリケーションを管理するための強力なツールを提供します。
Deployment は、所定数のPodが稼働していることを保証し、容易なアップデートやロールバックを可能にします。
Service はアプリケーションをネットワークに公開し、受信トラフィックを分散します。
YAML 設定ファイルによりセットアップが明確かつ読みやすくなり、kubectl コマンドでこれらの設定をリアルタイムに適用・管理できます。
1. KubernetesにおけるDeploymentの主な目的は何ですか?
2. なぜ複数のPodが同じポート番号(例:3000)で競合せずに実行できるのか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください