2016-05-25 1 views
2

私のインフラストラクチャでは、これと一緒に遊んでいた:http://kubernetes.io/docs/user-guide/deployments/。私はレプリカが必要ないくつかの配備をしていますが、配備内に1つのレプリカだけが必要なカップルがありますが、イメージのバージョンを変更する簡単な方法が必要です。デプロイメント内のレプリカの数が1で、デプロイメントに問題がある場合は、デプロイメントが行われますが、この動作を変更できますか?

だから私は、あなただけの1つのレプリカと展開上の壊れたアップデートを実行した場合に何が起こるか見てみました - 私たちは(上記のドキュメントから)以下ならば:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: nginx-deployment 
spec: 
    replicas: 3 
    template: 
    metadata: 
     labels: 
     app: nginx 
    spec: 
     containers: 
     - name: nginx 
     image: nginx:1.7.9 
     ports: 
     - containerPort: 80 

私たちは、その後kubectl create -f nginx-deployment.yamlを実行する場合

3つの正常なレプリカが表示されます。

上記のファイルをreplicas: 3からreplicas: 1に変更し、applyコマンドを実行すると、kubectl apply -f nginx-deployment.yaml - 正常なレプリカが1つ表示されます。 - 私たちはimage: nginx:1.7.9brokenのようなものにimage: nginx:1.7.9を変更した場合 -

は今とkubectl apply -f nginx-deployment.yamlを実行して、私たちはこのようなものを参照してください。

$ kubectl get rs 
NAME        DESIRED CURRENT AGE 
nginx-deployment-2035384211  0   0   11m <- this is the first one we created with 3 replicas 
nginx-deployment-3257237551  1   1   8m  <- this is the broken one we made with 1 replica and a bad image name 
nginx-deployment-3412426736  0   0   10m <- this is the 2nd one we created with 1 replica 

$ kubectl get pods 
NAME         READY  STATUS    RESTARTS AGE 
nginx-deployment-3257237551-od22j  0/1  ImagePullBackOff 0   19s 

は、だから何が展開が実行されている、ここで起こっているようだが、新たな壊れたポッドを作成しました上にリンクされたドキュメンテーションが私に起こるべきではないと伝えているもの、古いものを破壊しましたか?

私の質問は - ですが、1つのレプリカであっても、デプロイメントは意図したとおりに機能します。つまり、デプロイメントによって作成された新しいポッドが悪い場合、古いポッド走っているか、または単一のポッドの画像を更新するときに何か他のことがありますか?

注 - これは2+個のレプリカでうまくいくようですが、maxSurgeの値を5に設定して差があるかどうかを確認しようとしましたが、違いはありません。

答えて

5

maxUnavailable(デフォルトは1)を0に設定したいと思っています。これにより、健全なものを取り出す前にクーベルテスが既存のポッドを取り除くのを防ぐことができます。 maxSurgeには、ローリングアップグレード中に配備することを希望する希望の数を超えるポッド数しか指定されていません。 3回目の展開で1つの更新されたポッドのみを展開しようとしたため、maxSurgeがデフォルト値の1を超えて増加しても違いはありませんでした。

ドキュメントのRolling Update Deploymentセクションも参照してください。

関連する問題