Kubernetes-Deployment Podの作成およびスクロールアップグレード、ロールバックコマンドの例

3919 ワード

まずdeploymentの公式解釈を見てみましょう.
Deploymentは、以前のReplicationControllerに代わってアプリケーションを容易に管理するための宣言定義(declarative)メソッドをPodおよびReplicationSetに提供します.一般的な適用シーンは次のとおりです.
  • は、PodおよびReplicaSet
  • を作成するためにDeploymentを定義する
  • スクロールアップグレードおよびロールバックアプリケーション
  • 拡張および縮小
  • 一時停止および継続Deployment
  • アップグレード版のRCとRSのように見え、より完璧なバージョンアップとバージョンロールバック機能を提供しています.
    1、helmを使用するのと同じように、まず簡単なフォルダを構築します.
    tree demodeploy/
    demodeploy/
    ├── Chart.yaml
    ├── templates
    │   └── demodeploy.yaml
    └── values.yaml

    2、 
    [root demodeploy]# cat Chart.yaml 
    name: demodeploy
    version: "v1.0"
    description: demodeploy build by Helm
    

     3、
    [root demodeploy]# cat templates/demodeploy.yaml 
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: demodeploy
    spec:
      minReadySeconds: 5  #     ,           5s
      strategy:
        type: RollingUpdate  #     recreate 
        rollingUpdate: ## replicas 3,     ,pod   2-4   
          maxSurge: 1  ##         1 pod
          maxUnavailable: 1  ##          Unavailable pod  
      replicas: {{.Values.core.replicas}}
      template: 
        metadata: 
          labels:
            app: demodeploy
        spec:
          containers:
          - name: demodeploy
            image: {{.Values.docker.registry}}/demo:{{.Values.demodeploy.version}}
            imagePullPolicy: {{.Values.docker.pullPolicy}}
    #        resources:
    #          limits:
    #            memory: "128Mi"
    #          requests:
    #            memory: "64Mi"
            volumeMounts:
            - mountPath: /home/test/daopinz
              name: config-volume
          volumes:
          - name: config-volume
            emptyDir: {}
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: demodeploy
      labels:
        app: demodepoly
    spec:
      type: NodePort
      sessionAffinity: ClientIP
      ports:
      - port: 12321
        name: demodeploy-port
        nodePort: 32111
      selector:
        app: demodeploy
    

    4、
    [root demodeploy]# cat  values.yaml 
    docker:
      registry: xxx-xxx:5000/docker.io
      pullPolicy: Always
    core:
      replicas: 2 
    demodeploy: #      -
      version: "v1.0"
    

    5、
    helm lint demodeploy/			 #             ,        ,          
    helm install --dry-run --debug demodeploy/		    #           
    helm install -n demodeploy demodeploy    			#      Pod

    6、
    deployment:(複数のアップグレードスキーム:Recreate--既存のpodをすべて削除し、新しいものを再作成します;RollingUpdate-スクロールアップグレード、逐次置換するポリシー、同時にスクロールアップグレード時に、最大使用不可pod数の設定、最小アップグレード間隔の設定など、より多くの追加パラメータをサポートします.recreateポリシーはアップグレード中にサービスを停止しますが、適用バージョンが一致することを保証します;rollingUpdateを使用すると、サービスは中断されませんが、呼び出し時にアプリケーションのバージョンが一致せず、出力内容が一致しません.)kubectl api-versions#ApiServerバージョン情報を表示kubectl create-f demodeploy.yaml--record=true#Deploymentを作成し、バージョン履歴(-record=true)注を記録します.この方法でdeploymentを作成するのではなく、helmを使用して作成しても、次のコマンドを使用できます.
    [root demodeploy]# kubectl rollout history deployment/demodeploy
    deployments "demodeploy"
    REVISION  CHANGE-CAUSE
    5         kubectl set image deployment/demodeploy demodeploy=bcmt-registry:5000/docker.io/dome:v3.0 --record=true
    7         
    8         kubectl set image deployment/demodeploy demodeploy=bcmt-registry:5000/docker.io/dome:v1.0 --record=true
    9         kubectl set image deployment/demodeploy demodeploy=bcmt-registry:5000/docker.io/dome:v2.0 --record=true

    kubectl rollout history deployments kubectl rollout history deployment--revision=3#deploymentバージョン履歴詳細kubectl describe deployment/demodeploy kubectl rollout status deployment/demodeploy#配置状態kubectl set image deployment/demodeploy deploy=xxxを参照-xxx:5000/docker.io/dome:v2.0--record#スクロールアップグレード(推奨)kubectl apply-f update-nginx-deployment.yaml#demodeployのミラーを変更しました.アップグレードに相当します(使用参照)kubectl rollout pause deployment/demodeploy#kubectl rollout resume deployment/demodeploy#kubectl rollout undo deployment/demodeploy#ロールバックkubectl rollout undo deployment/demodeploy--to-revision=2#ロールバックバージョンの指定