2017-01-19 6 views
3

私はKubernetesの新機能で、k8s v1.4、Minikube v0.15.0、Spotify maven Dockerプラグインを使用しています。
私のプロジェクトのビルドプロセスによってDockerイメージが作成され、MinikubeのDockerエンジンに直接プッシュされます。Kubernetesのデプロイメントイメージを更新する

ポッドは(レプリカセットを使用して)作成した展開によって作成され、戦略はtype: RollingUpdateに設定されています。

私は、マニュアルでこれを見て、(即ち、.spec.template)展開のポッドテンプレートが変更された場合だけの展開の展開がトリガされます。


私は流れを自動化する簡単な方法/回避策を探しています: ビルドがトリガー>新しいドッカーイメージが押された(withoudのバージョン変更)>の展開は、ポッドを更新します>サービスは新しいポッドを公開します。

+0

あなたはすべての画像を変更していない場合、あなたは 'ImagePullPolicyを設定しない限り、あなたは、各ポッドに新しいイメージを得ることを保証する方法はありません。 「常に」を実行し、各ポッドを殺し、展開を再作成します。ただし、毎回新しいドッカー画像を作成する場合は、タグを更新することも意味があります。 –

+0

@AnirudhRamanathan 毎回「新しい」イメージを作成するのではなく、イメージを更新するだけで、最初のアプローチを使用するので、古いポッドを自動的に削除する方法がありますか? –

+0

'ImagePullPolicy:Always'はローカルイメージと連携していないので、特定のlableを持つポッドを手動で削除すると、レプリカセットによって更新されたイメージが作成されます。 自動的に実行する方法があるかどうか疑問に思う。 –

答えて

3
コンテナのイメージ名を変更するなどSTHと元のサイズに戻ってあなただけ0にアプリケーションをスケールでしょうタグ付けしない

:すでにImagePullPolicy: Alwaysはその後、要求されたコメントで述べたように

kubectl scale --replicas=0 deployment application 
kubectl scale --replicas=1 deployment application 

あなたの設定で。

私はこれが

kubectl set image deployment/application app-container=$IMAGE 

は、画像を変更しない更新する最も簡単な方法であることが判明した画像を変更するあなたは問題が発生した場合には背面に落ちることは何もないよdownsiteを持っています。したがって、私はこれを開発環境の外で使用することを提案しません。


編集:小さなボーナス - 前と後のスケールを同期させておくと、sthと見える可能性があります。以下のような:

replica_spec=$(kubectl get deployment/applicatiom -o jsonpath='{.spec.replicas}') 
kubectl scale --replicas=0 deployment application 
kubectl scale --replicas=$replica_spec deployment application 

乾杯

+0

Kubernetes APIで同じことをする方法がありますか? –

+0

こんにちは、もう一度 - 参照:http://stackoverflow.com/questions/41792851/manage-replicas-count-for-deployment-using-kubernetes-api/41795286#41795286 – pagid

関連する問題