詳細はkubernetesスクロール更新-1
11011 ワード
シリーズディレクトリ
このシリーズは2つのセクションに分かれています.最初のセクションでは、deploymentがスクロールして更新されたとき、deployment、replicaset、podの詳細、作成プロセス、deploymentバージョン管理の方法について説明します.
2つ目のセクションでは、スクロール更新中に最大使用可能な、liveness、readinessなどについて説明します.
アリクラウドには2つの異なるバージョンのミラーがテストに使用されており、
これまでdockerの操作を詳しく紹介したことはありませんが、現在、dockerの基本的な操作を紹介する書籍やブログがたくさんあり、dockerの操作経験のない入門チュートリアルに注目することができます.
注linuxでrootユーザーでログインしている場合は、コマンドラインの前の
deploymentスケジューリングreplicaset,podはreplicasetスケジューリング deploymentは、 をロールバックするために使用できる複数のreplicasetバージョンを管理します. replicaset制御podの動作(新規pod、削除pod を含む)
まずyamlファイルを用意してテストします.
簡単に検証します.
deployment、replicaset、podは正常に起動しています.次に、彼らの行動を分析します.
deployment deploymentはupdate-deployment-7 db 77 f 7 cc 6(7 db 77 f 7 cc 6はreplicasetのtemplate hash値) というreplicasetを作成した.プロファイルの要件に従って、replicasetのコピー数は3 である.
replicaset
replicasetは3つのpodを作成しました
pod podがreplicasetによって作成する後、workerノードへの割り当て、ミラーの引き出し、コンテナの起動などの一連の動作 が開始する.だからpodのネーミング方法はupdate-deployment-7 db 77 f 7 cc 6-7 j 49 g(deployment名前-replicasetテンプレートhash名前-podテンプレートhash名前) なぜこんなに複雑なのか、podを起動するにはこんなに多くのコンポーネントが必要なのか疑問に思うかもしれません.次のシーンでは、なぜこんなに多くのコンポーネントが必要なのかを説明します.
ミラーバージョンの更新
ミラーバージョンが更新された場合(3つの方法はいずれも実現可能で、前の文章を参照:k 8 sミラーバージョンを更新する3つの方法)、サービスの利用可能性を保証するとともに、オンライン更新を保証する必要がある.プロセスは:1)まずpodを追加し、ミラーバージョンは新版2)podが利用可能になった後、古いバージョンpod 3を削除する)古いバージョンpodがすべて削除されるまで、第1、2ステップをループし、古いバージョンpodがすべて削除され、新しいバージョンのpodはすべて 上記のこのプロセスはreplicasetの役割であり、必要に応じて自動的に新しいバージョンpodを追加し、古いバージョンpodがすべて削除されるまで古いバージョンpodを削除し、新しいバージョンのpodはすべて を使用することができる.この時点でバージョンがロールバックする必要がある場合、replicasetはさっきのステップを逆方向に更新し、バージョンロールバック を実現する必要があります. deploymentの役割はreplicasetを管理することです.deploymentは各バージョンのreplicasetを保存し、バージョンロールバックが必要になると、deploymentは直ちにreplicasetのバージョンをロールバックし、pod状態 を制御する.
次のテストを行います.
patchコマンドを使用してミラーバージョンを更新し、pauseコマンドを使用して観察します.
podステータス:
podが2つ追加され、古いバージョンのpodが1つ削除されました
replicasetステータス:
新しいバージョンのreplicasetが作成され、需要のpod数は2であり、元のreplicaset需要のpod数は3から2に減少した.
replicasetバージョンを表示するには、次の手順に従います.
バージョン2が追加されました
pauseコマンドを使用して、このカードの所有者に更新プロセスを行うため、更新プロセスを続行します.
ステータスの表示:
v 1バージョンのreplicasetにはpodはありませんが、履歴は保持されており、deploymentで高速ロールバックをスケジュールできます.
転載先:https://www.cnblogs.com/tylerzhou/p/10995776.html
このシリーズは2つのセクションに分かれています.最初のセクションでは、deploymentがスクロールして更新されたとき、deployment、replicaset、podの詳細、作成プロセス、deploymentバージョン管理の方法について説明します.
2つ目のセクションでは、スクロール更新中に最大使用可能な、liveness、readinessなどについて説明します.
アリクラウドには2つの異なるバージョンのミラーがテストに使用されており、
docker pull
を使用してローカルに引き出しています.docker pull registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1
docker pull registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v2
これまでdockerの操作を詳しく紹介したことはありませんが、現在、dockerの基本的な操作を紹介する書籍やブログがたくさんあり、dockerの操作経験のない入門チュートリアルに注目することができます.
root@k8s-master:~# docker run -d -p 10080:80 nginx:v1
e88097841c5feef92e4285a2448b943934ade5d86412946bc8d86e262f80a050
root@k8s-master:~# curl http://127.0.0.1:10080
----------
version: v1
hostname: f5189a5d3ad3
注linuxでrootユーザーでログインしている場合は、コマンドラインの前の
#
IDです.ここではコメントの意味ではありません.注意してください.deployment、replicaset、podの関係
+------------+
| deployment |
+-----+------+
|
|
|
|
+--------------------------------------------------+
| | |
| | |
| | |
| | |
| | |
| | |
+------v------+ +------v------+ +------v------+
|replicaset:v1| |replicaset:v2| |replicaset:v3|
+-------------+ +------+------+ +-------------+
|
|
+--------+---------+
| |
| |
+---v---+ +---v---+
|pod:v2 | |pod:v2 |
+-------+ +-------+
まずyamlファイルを用意してテストします.
root@k8s-master:~# more roll_update.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: image-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: image-update
spec:
containers:
- name: nginx
image: registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1
imagePullPolicy: Always
簡単に検証します.
root@k8s-master:~# kubectl apply -f roll_update.yaml
deployment.extensions "update-deployment" created
root@k8s-master:~# kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
update-deployment 3 3 3 3 54s
root@k8s-master:~# kubectl get rs
NAME DESIRED CURRENT READY AGE
update-deployment-7db77f7cc6 3 3 3 56s
root@k8s-master:~# kubectl get pod
NAME READY STATUS RESTARTS AGE
update-deployment-7db77f7cc6-7j49g 1/1 Running 0 1m
update-deployment-7db77f7cc6-b75wn 1/1 Running 0 1m
update-deployment-7db77f7cc6-cfnt5 1/1 Running 0 1m
deployment、replicaset、podは正常に起動しています.次に、彼らの行動を分析します.
deployment
root@k8s-master:~# kubectl describe deploy update-deployment
Name: update-deployment
Namespace: default
...
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 1 max unavailable, 1 max surge
...
NewReplicaSet: update-deployment-7db77f7cc6 (3/3 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 1m deployment-controller Scaled up replica set update-deployment-7db77f7cc6 to 3
replicaset
root@k8s-master:~# kubectl describe rs update-deployment-7db77f7cc6
Name: update-deployment-7db77f7cc6
Namespace: default
...
Controlled By: Deployment/update-deployment
Replicas: 3 current / 3 desired
Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 3m replicaset-controller Created pod: update-deployment-7db77f7cc6-7j49g
Normal SuccessfulCreate 3m replicaset-controller Created pod: update-deployment-7db77f7cc6-b75wn
Normal SuccessfulCreate 3m replicaset-controller Created pod: update-deployment-7db77f7cc6-cfnt5
replicasetは3つのpodを作成しました
pod
root@k8s-master:~# kubectl describe pod update-deployment-7db77f7cc6-7j49g
Name: update-deployment-7db77f7cc6-7j49g
Namespace: default
...
Status: Running
IP: 10.10.169.140
Controlled By: ReplicaSet/update-deployment-7db77f7cc6
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 9m default-scheduler Successfully assigned update-deployment-7db77f7cc6-7j49g to k8s-node2
Normal SuccessfulMountVolume 9m kubelet, k8s-node2 MountVolume.SetUp succeeded for volume "default-token-v9nkm"
Normal Pulling 9m kubelet, k8s-node2 pulling image "registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1"
Normal Pulled 9m kubelet, k8s-node2 Successfully pulled image "registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1"
Normal Created 9m kubelet, k8s-node2 Created container
Normal Started 9m kubelet, k8s-node2 Started container
ミラーバージョンの更新
ミラーバージョンの更新
次のテストを行います.
patchコマンドを使用してミラーバージョンを更新し、pauseコマンドを使用して観察します.
root@k8s-master:~# kubectl patch deployment update-deployment \
--patch '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image":"registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v2"}]}}}}' \
&& kubectl rollout pause deployment update-deployment
deployment.extensions "update-deployment" patched
deployment.apps "update-deployment" paused
podステータス:
root@k8s-master:~# kubectl get pod -owide
NAME READY STATUS RESTARTS AGE IP NODE
update-deployment-7db77f7cc6-7j49g 1/1 Running 0 1h 10.10.169.140 k8s-node2
update-deployment-7db77f7cc6-b75wn 1/1 Running 0 1h 10.10.235.211 k8s-master
update-deployment-7db77f7cc6-cfnt5 1/1 Terminating 0 1h 10.10.36.126 k8s-node1
update-deployment-7fb7b4b557-6987x 1/1 Running 0 7s 10.10.36.127 k8s-node1
update-deployment-7fb7b4b557-dxdqb 1/1 Running 0 10s 10.10.169.139 k8s-node2
podが2つ追加され、古いバージョンのpodが1つ削除されました
replicasetステータス:
root@k8s-master:~# kubectl get rs -owide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
update-deployment-7db77f7cc6 2 2 2 1h nginx registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1 app=roll-update,pod-template-hash=3863393772
update-deployment-7fb7b4b557 2 2 2 4m nginx registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v2 app=roll-update,pod-template-hash=3963606113
新しいバージョンのreplicasetが作成され、需要のpod数は2であり、元のreplicaset需要のpod数は3から2に減少した.
replicasetバージョンを表示するには、次の手順に従います.
root@k8s-master:~# kubectl rollout history deploy update-deployment
deployments "update-deployment"
REVISION CHANGE-CAUSE
1
2 update version to v2
バージョン2が追加されました
pauseコマンドを使用して、このカードの所有者に更新プロセスを行うため、更新プロセスを続行します.
root@k8s-master:~# kubectl rollout resume deployment update-deployment
deployment.apps "update-deployment" resumed
ステータスの表示:
root@k8s-master:~# kubectl get pod
NAME READY STATUS RESTARTS AGE
update-deployment-7fb7b4b557-6987x 1/1 Running 0 15m
update-deployment-7fb7b4b557-dxdqb 1/1 Running 0 15m
update-deployment-7fb7b4b557-wg5c8 1/1 Running 0 1m
root@k8s-master:~# kubectl get rs -owide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
update-deployment-7db77f7cc6 0 0 0 1h nginx registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1 app=roll-update,pod-template-hash=3863393772
update-deployment-7fb7b4b557 3 3 3 14m nginx registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v2 app=roll-update,pod-template-hash=3963606113
v 1バージョンのreplicasetにはpodはありませんが、履歴は保持されており、deploymentで高速ロールバックをスケジュールできます.
転載先:https://www.cnblogs.com/tylerzhou/p/10995776.html