web-dev-qa-db-ja.com

ReplicaSetとReplicationControllerの違いは何ですか?

ドキュメントでわかることから、 ReplicaSet を実行すると Deployment が作成されます。 ReplicationController -スケールアップ/ダウンと自動再起動の同じ機能のいくつかをサポートしているようですが、ローリングアップグレードまたは自動スケールをサポートしているかどうかは不明です。

V1.1.8ユーザーガイドでは、デプロイを作成する方法を示しています Deploying Applications (自動的にReplicaSetが作成されます)、ただしkubectl get replicasetsコマンドはv1.2.0まで使用できません。ドキュメントにReplicaSetに関する他の情報はありません。

ReplicaSetは最終的にReplicationControllerを置き換えますか? Deploymentの代わりにReplicaSetReplicationControllerを使用する理由は何ですか?

38
David Knell

レプリカセットは、次世代のレプリケーションコントローラです。レプリケーションコントローラは必須ですが、レプリカセットはできるだけ宣言型にしようとします。

1.レプリカセットとレプリケーションコントローラの主な違いは、セレクタのサポートです。

+--------------------------------------------------+-----------------------------------------------------+
|                   Replica Set                    |               Replication Controller                |
+--------------------------------------------------+-----------------------------------------------------+
| Replica Set supports the new set-based selector. | Replication Controller only supports equality-based |
| This gives more flexibility. for eg:             | selector. for eg:                                   |
|          environment in (production, qa)         |             environment = production                |
|  This selects all resources with key equal to    | This selects all resources with key equal to        |
|  environment and value equal to production or qa | environment and value equal to production           |
+--------------------------------------------------+-----------------------------------------------------+

2. 2つ目は、ポッドの更新です。

+-------------------------------------------------------+-----------------------------------------------+
|                      Replica Set                      |            Replication Controller             |
+-------------------------------------------------------+-----------------------------------------------+
| rollout command is used for updating the replica set. | rolling-update command is used for updating   |
| Even though replica set can be used independently,    | the replication controller. This replaces the |
| it is best used along with deployments which          | specified replication controller with a new   |
| makes them declarative.                               | replication controller by updating one pod    |
|                                                       | at a time to use the new PodTemplate.         |
+-------------------------------------------------------+-----------------------------------------------+

これらは、RSとRCを区別する2つの点です。 RSを使用したデプロイメントは、宣言型であるため、広く使用されています。

38

現時点では、ほとんどの場合、違いはわずかです。 ReplicaSetには一般化されたラベルセレクターがあります: https://github.com/kubernetes/kubernetes/issues/341#issuecomment-140809259 。レプリケーションコントローラがサポートするすべての機能をサポートする必要があります。

ReplicaSetは最終的にReplicationControllerに置き換わりますか? ReplicationControllerの代わりにDeploymentとReplicaSetを使用する理由は何ですか?

これは、ローリングアップデートと展開の違いです。違いを理解するには、デプロイに関するドキュメントをお読みください: http://kubernetes.io/docs/user-guide/deployments/ 。つまり、ローリングアップデートを開始してラップトップを閉じると、レプリカには中間イメージバージョンが混在しています。デプロイを作成してラップトップを閉じると、デプロイはapiserverに正常にPOSTされます。この場合、サーバー側で機能するか、機能しません。その場合、すべてのレプリカはまだ古いバージョンのままです。

悪い点は、現在のほとんどすべてのドキュメントがReplicationControllersに関するものであることです。

同意し、ほとんどのドキュメントが更新されています。残念ながら、インターネット上のドキュメントはgithub上のドキュメントよりも更新が困難です。

12
Prashanth B