私のインフラストラクチャでは、これと一緒に遊んでいた: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に設定して差があるかどうかを確認しようとしましたが、違いはありません。