2016-05-31 6 views
1

シークレットを使用するレプリカを1つ持つレプリケーションコントローラがあります。秘密の値が変更されたときに最新の秘密の値で、その(孤立した)ポッドをダウンタイムなしに更新または再作成する方法はありますか?秘密更新の場合のKubernetesローリングアップデート

私の現在の回避策は、レプリケーションコントローラのレプリカ数を増やし、古いポッドを削除し、レプリカ数を元の値に戻すことです。

同じコンテナイメージとタグを保持するローリング更新を誘導するコマンドまたはフラグはありますか?私がそうしようとすると、次のメッセージで私の試行を拒否します。

error: Specified --image must be distinct from existing container image 

答えて

2

に問題のカップルを参照してください#9043#13488合理的に問題を説明し、私はローリング更新アプローチを疑うが、(Kubernetesでほとんどの事のように)すぐにeventuateます。同じ問題がConfigMapsの更新にも適用されます。

Kubernetesが展開ポッド仕様で何かが変更されるたびに(例えば、通常imageを新しいバージョンに)ローリング更新を行いますので、one suggested workaroundデプロイメントポッド仕様にENV変数を設定することである(例えば。RESTART_

秘密/ configmapを更新したら、デプロイメントのenv値をkubectl applyまたはpatchまたはeditでバンプし、Kubernetesはデプロイメントのローリングアップデートを開始します。

配備例の仕様:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: test-nginx 
spec: 
    replicas: 2 
    template: 
    metadata: 
    spec: 
     containers: 
     - name: nginx 
     image: "nginx:stable" 
     ports: 
     - containerPort: 80 
     - mountPath: /etc/nginx/conf.d 
      name: config 
      readOnly: true 
     - mountPath: /etc/nginx/auth 
      name: tokens 
      readOnly: true 
     env: 
     - name: RESTART_ 
      value: "13" 
     volumes: 
     - name: config 
      configMap: 
      name: test-nginx-config 
     - name: tokens 
      secret: 
      secretName: test-nginx-tokens 

つのヒント:

  • 自分の環境変数の名前は、_で始めることはできませんか、それは魔法のように何とか消えます。
  • あなたが再起動変数の番号を使用する場合は、.spec.templateに変化がないよう
0

私が正しく理解していれば、配備はあなたが望むものでなければなりません。

配置は、ポッドテンプレートのほぼすべてのフィールドのローリング更新をサポートします。 1.3.0のための可能性は低いものの

http://kubernetes.io/docs/user-guide/deployments/

+0

展開が助けにはなりません引用符でそれをラップする必要があります。秘密の名前は同じですが、その値は変更されます –

関連する問題