レプリケーションコントローラーとKubernetes(1.2)内の展開の違いを知りたいと思いました。入門ドキュメントをご覧ください( http://kubernetes.io/docs/hellonode/ )デプロイメントを作成しましたが、Web UIには表示されません。
Web UIからアプリを作成すると、複製コントローラーとして作成されます。機能的には、非常によく似ています(どちらもポッドを管理し、サービスを持っています)。
だから-違いは何ですか、それぞれをいつ使用する必要がありますか?
展開は、レプリケーションコントローラーよりも新しい、より高いレベルの概念です。レプリカセットの展開を管理し(これも新しい概念ですが、レプリケーションコントローラーとほぼ同等です)、レプリカセットの簡単な更新と以前の展開へのロールバックを可能にします。
以前は、これは宣言的ではなく、ロールバック機能を提供しなかったkubectl rolling-update
を使用して実行する必要がありました。
Kubernetesダッシュボードはまだ展開をサポートするように更新されておらず、現在はレプリケーションコントローラーのみをサポートしています( 展開がKubernetesダッシュボードに表示されない を参照)。
編集:ダッシュボードが展開をサポートするようになりました。
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.
ダッシュボード(Web UI)は大幅に再設計され、より多くのリソース(Deployments
やDaemonSets
など)を管理できるようになり、現在のダッシュボードではDeployments
に関してあまり許可されていません。 。
ダッシュボードでのデプロイの管理は、kubernetes 1.3で近日中にサポートされる予定です(問題 機能要求:デプロイの処理 を参照)。
私の経験から、デプロイメントは必要なすべての機能を提供するわけではありません。または、多分、間違った方法でそれらを使用しています。
ノードサーバーを再起動する必要がある場合-そのサーバー上で実行されているすべてのポッドは、展開によって開始されます-失敗します。そして、私はこれを避ける方法を見つけることができません。
しかし、
ソリューションはレプリケーションコントローラーだと思います。少なくとも説明では、そのような場合を処理するように書かれています。
私が見るように、主な展開の利点は、アプリのバージョンを絶えず変更する必要がある場合です。
したがって、どちらの方法も良いのですが、理由は異なります。