ReplicaSetによるアプリケーションのスケーリング
ReplicaSetを使って、指定した数の同一Podが常に実行されるようにします。
「ReplicaSetによるアプリケーションのスケーリング」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
スケーリングが重要な理由
クラウドネイティブアプリケーションの世界では、スケーリングが重要です。スケーリングによって、アプリケーションは変動するワークロードに対応でき、コンポーネントに障害が発生しても利用可能な状態を維持できます。
スケーリングとは、需要に合わせて実行中のアプリケーションインスタンス数を調整することです。少なすぎるとアプリケーションの動作が遅くなったり、応答しなくなったりします。多すぎるとリソースが無駄になります。
ReplicaSetを理解する
ReplicaSetはKubernetesの中核オブジェクトで、常に一定数の実行中のPodを維持することを主な役割とします。
ReplicaSetはPodの守護者だと考えてください。望ましい数の同一Podが、常に実際に実行中の数として維持されるようにします。
ReplicaSetの主な役割
ReplicaSetの主な目的は、指定された数の同一Podを確実に利用可能な状態にすることです。
- Podが停止した場合(ノード障害などが原因の場合)、ReplicaSetは自動的に新しいPodを作成します。
- 外部プロセスによってPodが作成されすぎた場合、ReplicaSetは余分なPodを終了させます。
- この自己修復機能は、アプリケーションの信頼性に不可欠です。
ReplicaSetのYAML構造
他のKubernetesオブジェクトと同様に、ReplicaSetはYAMLファイルを使って定義します。基本的な構造を見てみましょう。
apiVersion: Kubernetes APIのバージョンを定義します(例:apps/v1)。kind: オブジェクトの種類を指定します。ここではReplicaSetです。metadata:nameなどの識別情報を含みます。spec: ReplicaSetの望ましい状態を記述します。
望ましい状態: ReplicasとSelector
specセクションで重要なフィールドは、replicasとselectorの2つです。
replicas: 実行したい同一Podの数を示す数値です。selector: ReplicaSetがPodを見つけて管理する方法を定義します。ラベルを使ってPodを照合し、これらのラベルに一致するPodだけが、このReplicaSetの一部として扱われます。
Podテンプレート
spec.templateフィールドは、ReplicaSetが作成するPodの設計図です。基本的には標準的なPod定義です。
このテンプレートには、Podのメタデータ(ラベルなど)と仕様(コンテナイメージやポートなど)が含まれます。テンプレート内のラベルは、spec.selectorと一致していなければなりません。
シンプルなReplicaSetの定義
常に2つのNginx WebサーバーPodが実行されるようにReplicaSetを定義してみましょう。Podテンプレートのラベル(app: nginx)がselectorと一致していることに注目してください。
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-replicaset
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80作成とステータスの確認
このReplicaSetを作成するには、YAMLをnginx-rs.yamlとして保存し、適用します。その後、ステータスと管理対象のPodを確認します。
kubectl apply -f nginx-rs.yaml
kubectl get rs
kubectl get pods -l app=nginxスケールアップとスケールダウン
kubectl scaleコマンドを使うと、ReplicaSetで望ましいPod数を動的に変更できます。Nginx ReplicaSetを4つのPodにスケールしてみましょう。
kubectl scale --replicas=4 rs/nginx-replicaset
kubectl get rs
kubectl get pods -l app=nginxスケーリングの確認
ReplicaSetをスケールすると、Kubernetesは新しいreplicas数に合わせてPodを自動的に作成または削除します。これをリアルタイムで確認できます。
kubectl scale --replicas=1 rs/nginx-replicaset
kubectl get pods -l app=nginx -wスケーリングチャレンジ
my-app-rsという名前のReplicaSetがあり、現在3つのPodを実行しています。これを5つに増やしたい場合、どのkubectlコマンドを使いますか。
まとめと次のステップ
ReplicaSetは、同一Podを望ましい数だけ維持し、アプリケーションに自己修復機能と高可用性を提供する重要な仕組みであることを学びました。YAMLで定義し、kubectl scaleを使ってスケールできます。
ReplicaSetは強力ですが、実際にはDeploymentを使うことが一般的です。DeploymentはReplicaSetを管理し、ローリングアップデートなどの高度な機能を提供します。次はDeploymentについて学びます。
よくある質問
「ReplicaSetによるアプリケーションのスケーリング」レッスンは無料ですか?
はい。「ReplicaSetによるアプリケーションのスケーリング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「ReplicaSetによるアプリケーションのスケーリング」で何を学びますか?
ReplicaSetを使って、指定した数の同一Podが常に実行されるようにします。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「ReplicaSetによるアプリケーションのスケーリング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Deploymentを理解する
- ReplicaSetによるアプリケーションのスケーリング
- ローリングアップデートとロールバック
- デプロイ戦略:Blue-GreenとCanary