web-dev-qa-db-ja.com

KubernetesでのレプリケーションコントローラーVSの展開

レプリケーションコントローラーとKubernetes(1.2)内の展開の違いを知りたいと思いました。入門ドキュメントをご覧ください( http://kubernetes.io/docs/hellonode/ )デプロイメントを作成しましたが、Web UIには表示されません。

Web UIからアプリを作成すると、複製コントローラーとして作成されます。機能的には、非常によく似ています(どちらもポッドを管理し、サービスを持っています)。

だから-違いは何ですか、それぞれをいつ使用する必要がありますか?

54
byteSlayer

展開は、レプリケーションコントローラーよりも新しい、より高いレベルの概念です。レプリカセットの展開を管理し(これも新しい概念ですが、レプリケーションコントローラーとほぼ同等です)、レプリカセットの簡単な更新と以前の展開へのロールバックを可能にします。

以前は、これは宣言的ではなく、ロールバック機能を提供しなかったkubectl rolling-updateを使用して実行する必要がありました。

Kubernetesダッシュボードはまだ展開をサポートするように更新されておらず、現在はレプリケーションコントローラーのみをサポートしています( 展開がKubernetesダッシュボードに表示されない を参照)。

編集:ダッシュボードが展開をサポートするようになりました。

47
Pixel Elephant

Deployments はまだベータ版です(APIはextensions/v1beta1)、これがおそらくUIに表示されない理由です。ポッドを存続させるだけでなく、状態遷移を自動化します。リンクされたページから:

デプロイメントは、ポッドとレプリカセット(次世代のレプリケーションコントローラー)の宣言的な更新を提供します。 Deploymentオブジェクトに目的の状態を記述するだけで、Deployment Controllerは実際の状態を制御された速度で目的の状態に変更します。デプロイメントを定義して、新しいリソースを作成したり、既存のリソースを新しいリソースで置き換えたりできます。

また、ロールアウト履歴などの便利な機能も提供します。

$ kubectl rollout history deployment/nginx-deployment
deployments "nginx-deployment":
REVISION    CHANGE-CAUSE
1           kubectl create -f docs/user-guide/nginx-deployment.yaml --record
2           kubectl apply -f docs/user-guide/new-nginx-deployment.yaml
3           kubectl apply -f docs/user-guide/bad-nginx-deployment.yaml

変更も追跡します。

$ kubectl rollout history deployment/nginx-deployment --revision=2
deployments "nginx-deployment" revision 2
Labels:     app=nginx,pod-template-hash=1564180365
Annotations:    kubernetes.io/change-cause=kubectl apply -f docs/user-guide/new-nginx-deployment.yaml
Image(s):   nginx:1.9.1
No volumes.
8
kichik

リリース1.1 でダッシュボードはデプロイメントをサポートします。 k8sの1.3リリースを待たずに、ダッシュボードを展開または更新できます。たとえば、 公式YAML を使用できます。これは、今日デプロイメントを使用するように変更したばかりです。

一般的に、RCよりもはるかに強力なプリミティブ(ローリング更新、バージョン管理/監査、canaray/green-blueデプロイメント、ロールバックなどを含む)であるため、RCを介したデプロイメントを使用することをお勧めします(およびGoogleとKubernetesの貢献者も行います)。 。

7
puja

ダッシュボード(Web UI)は大幅に再設計され、より多くのリソース(DeploymentsDaemonSetsなど)を管理できるようになり、現在のダッシュボードではDeploymentsに関してあまり許可されていません。 。

ダッシュボードでのデプロイの管理は、kubernetes 1.3で近日中にサポートされる予定です(問題 機能要求:デプロイの処理 を参照)。

2
janetkuo

私の経験から、デプロイメントは必要なすべての機能を提供するわけではありません。または、多分、間違った方法でそれらを使用しています。

ノードサーバーを再起動する必要がある場合-そのサーバー上で実行されているすべてのポッドは、展開によって開始されます-失敗します。そして、私はこれを避ける方法を見つけることができません。

しかし、

ソリューションはレプリケーションコントローラーだと思います。少なくとも説明では、そのような場合を処理するように書かれています。

私が見るように、主な展開の利点は、アプリのバージョンを絶えず変更する必要がある場合です。

したがって、どちらの方法も良いのですが、理由は異なります。

2
Tomas Šatas