レプリケーションコントローラ
ここでは、第2章の YAML ファイルからコンテナーを表す pod を起動する方法を学びました。コンテナで1つの質問が生じます。完全に同じである3つのポッドが必要な場合は (それぞれが Apache コンテナーを実行します)、web サービスがより堅牢になっていることを確認します。YAML ファイルの名前を変更してから、同じコマンドを繰り返し、必要なポッドを作成しますか? あるいは、シェルスクリプトがあるでしょうか。Kubernetes には、この需要に対応するオブジェクトが RC で既に存在しています- ReplicationController
、または RS– ReplicaSet
。
Replicationcontroller (rc) は、指定された数のポッドレプリカが一度に実行されることを保証します。言い換えると、複製コントローラは、pod または同種のポッドセットが常に稼働していることを確認します。
Rc の作成
Rc’を例とともに作成してみましょう。まず、次に、web サーバの rc オブジェクトの YAML ファイルを作成します。
この YAML ファイルが定義するオブジェクトタイプを示す kind は、pod ではなく rc であることを覚えておいてください。メタデータには、rc’s name が web サーバとして表示されています。この仕様は、この rc オブジェクトの詳細な仕様であり、レプリカは以下のとおりです。3は、rc で作成されたポッドの総数が常に3つであることを確認するために、同じ pod を複製することを示します。最後に、このテンプレートは、pod で実行されるコンテナに関する情報を提供します。これは、pod YAML ファイルで見たものと同じです。ここで、この YAML ファイルを使用して rc オブジェクトを作成します。
十分に簡単な場合は、新しいポッドが作成されているときに、中間状態をキャプチャできます。
$ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5ggv6 1/1 Running 0 9s webserver-lbj89 0/1 ContainerCreating 0 9s webserver-m6nrx 0/1 ContainerCreating 0 9s
最終的に、3個のポッドが起動します。
$ kubectl get rc NAME DESIRED CURRENT READY AGE webserver 3 3 3 3m29s $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5ggv6 1/1 Running 0 21m webserver-lbj89 1/1 Running 0 21m webserver-m6nrx 1/1 Running 0 21m
Rc は pod と直接連携しています。Figure 1は、ワークフローを示しています。

Rc object YAML ファイルに指定されているレプリカパラメーターを使用すると、Kubernetes レプリケーションコントローラは、マスターノードで kube のコントローラマネージャープロセスの一部として動作して、rc によって起動されたポッドの数を監視し、そのうちのいずれかが失敗した場合でも新しいものを自動的に起動します。学習すべき重要なことは、個々のポッドがいつでも停止するかもしれませんが、プール全体を常に稼働させ、堅牢なサービスを実現することです。Kubernetes サービスについて学習すると、これを理解することができます。
テスト Rc
ポッドの1つを’削除することで、rc s への影響をテストすることができます。Kubectl を使用してリソースを削除するには、kubectl delete サブコマンドを使用します。
$ kubectl delete pod webserver-5ggv6 pod "webserver-5ggv6" deleted $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5ggv6 0/1 Terminating 0 22m #<--- webserver-5v9w6 1/1 Running 0 2s #<--- webserver-lbj89 1/1 Running 0 22m webserver-m6nrx 1/1 Running 0 22m $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5v9w6 1/1 Running 0 5s webserver-lbj89 1/1 Running 0 22m webserver-m6nrx 1/1 Running 0 22m
ご覧のように、1つのポッドが終了すると、新しい pod がすぐに生成されます。最終的には古いポッドが消え、新しい pod が稼働します。動作しているポッドの総数は変わりません。
Rc でレプリカを拡張または縮小することもできます。たとえば、3 ~ 5 の数値にスケールアップするには、以下のようにします。
$ kubectl scale rc webserver --replica=5 replicationcontroller/webserver scaled $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5v9w6 1/1 Running 0 8s webserver-lbj89 1/1 Running 0 22m webserver-m6nrx 1/1 Running 0 22m webserver-hnnlj 0/1 ContainerCreating 0 2s webserver-kbgwm 1/1 ContainerCreating 0 2s $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5v9w6 1/1 Running 0 10s webserver-lbj89 1/1 Running 0 22m webserver-m6nrx 1/1 Running 0 22m webserver-hnnlj 1/1 Running 0 5s webserver-kbgwm 1/1 Running 0 5s
Rc を使用した他のメリットもあります。実際、この抽象化は非常に人気が高く、頻繁に使用されているため、非常に類似–した2つのオブジェクト、Rs-Replicaset、導入導入が、より強力な機能で開発されています。一般に、次世代の rc を呼び出すことができます。ここでは、’rc 機能の詳細をご紹介し、これらの2つの新しいオブジェクトにフォーカスを移動してみましょう。
次のオブジェクトに移る前に、rc を削除できます。
$ kubectl delete rc webserver replicationcontroller/webserver deleted