Kubernetes Podアプリケーションのスクロール更新(8)
4174 ワード
一、環境準備
前のセクションの環境に続いて、次の操作を行います.不明な場合は、前のブログを参照してください.
スクロール更新は、コピーの一部のみを更新し、成功したら、より多くのコピーを更新し、最終的にすべてのコピーの更新を完了します.スクロール更新の最大の利点は、ダウンタイムがゼロであり、更新プロセス全体が常にコピーされて実行され、ビジネスの継続性が保証されます.
二、更新
前節のプロファイル
設定されたミラーバージョンがv 1であることを確認し、作成された
現在実行中のPodはReplicaSet
Deploymentのミラーが
更新するたびにPodが1つだけ置き換えられます.
三、ロールバック
デフォルトの構成では、Kubernetesは最近のいくつかのrevisionのみを保持し、Deploymentプロファイルで
コマンド
3つのPodが
前のセクションの環境に続いて、次の操作を行います.不明な場合は、前のブログを参照してください.
スクロール更新は、コピーの一部のみを更新し、成功したら、より多くのコピーを更新し、最終的にすべてのコピーの更新を完了します.スクロール更新の最大の利点は、ダウンタイムがゼロであり、更新プロセス全体が常にコピーされて実行され、ビジネスの継続性が保証されます.
二、更新
前節のプロファイル
mytest-deploy.yaml
を参照してください.apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mytest
spec:
replicas: 3
template:
metadata:
labels:
run: mytest
spec:
containers:
- name: mytest
image: wangzan18/mytest:v1
ports:
- containerPort: 80
設定されたミラーバージョンがv 1であることを確認し、作成された
ReplicaSet
を確認します.[root@master ~]# kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
mytest-88d46bf99 3 3 3 68m mytest wangzan18/mytest:v1 pod-template-hash=88d46bf99,run=mytest
現在実行中のPodはReplicaSet
mytest-88d46bf99
によって制御されており、プロファイルのv 1をv 2に置き換えて再適用します.[root@master ~]# kubectl apply -f mytest-deploy.yaml
deployment.extensions/mytest configured
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mytest-56c55b4c6-6gjxc 1/1 Running 0 24s
mytest-56c55b4c6-f5trx 1/1 Running 0 18s
mytest-56c55b4c6-sh5wd 1/1 Running 0 24s
mytest-88d46bf99-48f6n 1/1 Terminating 0 70m
mytest-88d46bf99-mv6cf 1/1 Terminating 0 70m
mytest-88d46bf99-p9w79 1/1 Terminating 0 70m
[root@master ~]# kubectl get deploy -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
mytest 3/3 3 3 72m mytest wangzan18/mytest:v2 run=mytest
[root@master ~]# kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
mytest-56c55b4c6 3 3 3 59s mytest wangzan18/mytest:v2 pod-template-hash=56c55b4c6,run=mytest
mytest-88d46bf99 0 0 0 71m mytest wangzan18/mytest:v1 pod-template-hash=88d46bf99,run=mytest
Deploymentのミラーが
wangzan18/mytest:v2
に更新され、新しいReplicaSet mytest-56c55b4c6
が作成され、3つの新しいPodが管理されていることがわかります.[root@master ~]# kubectl describe deployment mytest
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 4m9s deployment-controller Scaled up replica set mytest-56c55b4c6 to 1
Normal ScalingReplicaSet 4m9s deployment-controller Scaled down replica set mytest-88d46bf99 to 2
Normal ScalingReplicaSet 4m9s deployment-controller Scaled up replica set mytest-56c55b4c6 to 2
Normal ScalingReplicaSet 4m3s deployment-controller Scaled down replica set mytest-88d46bf99 to 1
Normal ScalingReplicaSet 4m3s deployment-controller Scaled up replica set mytest-56c55b4c6 to 3
Normal ScalingReplicaSet 4m3s deployment-controller Scaled down replica set mytest-88d46bf99 to 0
更新するたびにPodが1つだけ置き換えられます.
三、ロールバック
kubectl apply
アプリケーションを更新するたびにKubernetesは現在の構成を記録し、1つのrevision(レイアウト)として保存し、特定のrevisionにロールバックできます.デフォルトの構成では、Kubernetesは最近のいくつかのrevisionのみを保持し、Deploymentプロファイルで
revisionHistoryLimit
プロパティを使用してrevisionの数を増やすことができます.コマンド
kubectl rollout undo
により、前のバージョンにロールバックできます.[root@master ~]# kubectl rollout undo deploy mytest
deployment.extensions/mytest rolled back
[root@master ~]# kubectl get rs -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
mytest-56c55b4c6 0 0 0 12m mytest wangzan18/mytest:v2 pod-template-hash=56c55b4c6,run=mytest
mytest-88d46bf99 3 3 3 82m mytest wangzan18/mytest:v1 pod-template-hash=88d46bf99,run=mytest
3つのPodが
wangzan18/mytest:v1
にミラー化されたReplicaSetによって引き継がれることが分かる.