2016-04-22 28 views
1

Kubernetesレプリケーションコントローラ仕様に環境変数を追加していますが、実行中のRCを仕様から更新すると、環境変数は追加されません。どうして?kubectlは環境変数を更新しませんか?

私は環境変数IRON_PASSWORDは、以前のリビジョン以降に追加されますが、実行中のRCが相応に更新されていない、kubectl replace -f docker/podspecs/web-controller.yaml次の仕様に応じてRCを更新:に従ってRCの更新後

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: web 
    labels: 
    app: web 
spec: 
    replicas: 1 
    selector: 
    app: web 
    template: 
    metadata: 
     labels: 
     app: web 
    spec: 
     containers: 
     - name: web 
     image: quay.io/aknuds1/muzhack 
     # Always pull latest version of image 
     imagePullPolicy: Always 
     env: 
     - name: APP_URI 
      value: https://staging.muzhack.com 
     - name: IRON_PASSWORD 
      value: password 
     ports: 
     - name: http-server 
      containerPort: 80 
     imagePullSecrets: 
     - name: quay.io 

スペックに、それはこの(kubectl get pod web-scpc3 -o yaml)のように見える、IRON_PASSWORDが欠落していることに気づく:

apiVersion: v1 
kind: Pod 
metadata: 
    annotations: 
    kubernetes.io/created-by: | 
     {"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicationController","namespace":"default","name":"web","uid":"c1c4185f-0867-11e6-b557-42010af000f7","apiVersion":"v1","resourceVersion":"17714"}} 
    kubernetes.io/limit-ranger: 'LimitRanger plugin set: cpu request for container 
     web' 
    creationTimestamp: 2016-04-22T08:54:00Z 
    generateName: web- 
    labels: 
    app: web 
    name: web-scpc3 
    namespace: default 
    resourceVersion: "17844" 
    selfLink: /api/v1/namespaces/default/pods/web-scpc3 
    uid: c1c5035f-0867-11e6-b557-42010af000f7 
spec: 
    containers: 
    - env: 
    - name: APP_URI 
     value: https://staging.muzhack.com 
    image: quay.io/aknuds1/muzhack 
    imagePullPolicy: Always 
    name: web 
    ports: 
    - containerPort: 80 
     name: http-server 
     protocol: TCP 
    resources: 
     requests: 
     cpu: 100m 
    terminationMessagePath: /dev/termination-log 
    volumeMounts: 
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount 
     name: default-token-vfutp 
     readOnly: true 
    dnsPolicy: ClusterFirst 
    imagePullSecrets: 
    - name: quay.io 
    nodeName: gke-staging-default-pool-f98acf11-ba7d 
    restartPolicy: Always 
    securityContext: {} 
    serviceAccount: default 
    serviceAccountName: default 
    terminationGracePeriodSeconds: 30 
    volumes: 
    - name: default-token-vfutp 
    secret: 
     secretName: default-token-vfutp 
status: 
    conditions: 
    - lastProbeTime: null 
    lastTransitionTime: 2016-04-22T09:00:49Z 
    message: 'containers with unready status: [web]' 
    reason: ContainersNotReady 
    status: "False" 
    type: Ready 
    containerStatuses: 
    - containerID: docker://dae22acb9f236433389ac0c51b730423ef9159d0c0e12770a322c70201fb7e2a 
    image: quay.io/aknuds1/muzhack 
    imageID: docker://8fef42c3eba5abe59c853e9ba811b3e9f10617a257396f48e564e3206e0e1103 
    lastState: 
     terminated: 
     containerID: docker://dae22acb9f236433389ac0c51b730423ef9159d0c0e12770a322c70201fb7e2a 
     exitCode: 1 
     finishedAt: 2016-04-22T09:00:48Z 
     reason: Error 
     startedAt: 2016-04-22T09:00:46Z 
    name: web 
    ready: false 
    restartCount: 6 
    state: 
     waiting: 
     message: Back-off 5m0s restarting failed container=web pod=web-scpc3_default(c1c5035f-0867-11e6-b557-42010af000f7) 
     reason: CrashLoopBackOff 
    hostIP: 10.132.0.3 
    phase: Running 
    podIP: 10.32.0.3 
    startTime: 2016-04-22T08:54:00Z 

答えて

2

が実際に根本的に再作成されませんReplicationControllerオブジェクトを交換しますポッドは、再作成する必要があるまで、ポッドはRCの以前の設定から仕様を保持します。実行中のポッドを削除すると、ポッドを置き換えるために作成された新しいポッドに新しい環境変数が設定されます。

これはkubectl rolling update commandのもので、Kubernetes 1.2にDeploymentタイプが追加された理由の一部です。

+0

実際に、私は 'rolling-update'の代わりに' kubectl apply'を使うように言われましたが、ポッドの環境変数も更新しません。 – aknuds1

+0

あなたはこれをどこで話しましたか?適用とローリングアップデートは非常に異なることを行います。 –

+0

スラックチャンネルです。失敗したアップデートをロールバックできないため、私はローリングアップデートに関する問題を抱えていました。 – aknuds1

関連する問題