詳細はkubernetesスクロール更新-1

11011 ワード

シリーズディレクトリ
このシリーズは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 |
                    +-------+          +-------+
  • deploymentスケジューリングreplicaset,podはreplicasetスケジューリング
  • deploymentは、
  • をロールバックするために使用できる複数のreplicasetバージョンを管理します.
  • replicaset制御podの動作(新規pod、削除pod
  • を含む)
    まず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
  • deploymentはupdate-deployment-7 db 77 f 7 cc 6(7 db 77 f 7 cc 6はreplicasetのtemplate hash値)
  • というreplicasetを作成した.
  • プロファイルの要件に従って、replicasetのコピー数は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
  • 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コマンドを使用して観察します.
    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