3

init-containersが使用可能になり、非常に便利であるため、init-containersを使用しています。私のコアイメージ(以下web-dev)はあまり変わっていませんが、私のinit-containerイメージ(以下web-data-dev)は頻繁に変更されます。デプロイメントでinit-containerのコンテナイメージタグの変更が検出されない

init-containerは、バージョン番号のコンテナイメージを使用します。私は最新の値に、このバージョン番号を変更し、kubectlは、例えば-f deployment.yamlに

を適用しない、私はeu.gcr.io/project/web-data-dev:187を変更しますkubectlを実行する前にeu.gcr.io/project/web-data-dev:188を適用してください。

私はこれを行いますが、デプロイは行われません。init-containerが使用するイメージに変更を加えると、デプロイメントはまだ行われません。これは、init-containerの変更が検出されていないためと思われます。

私は、ちょうどこのように、画像フィールド内のいくつかのゴミを入れてみました:「イメージ」:「thisIsNotAnImage」と再び-f適用kubectl実行されますが、更新はまだ適用されません。

私の質問はです - kubectlを適用して-f initタグの画像タグの変更を検出する方法を教えてください。私は何か間違ったことをしていますか、これはバグですか、これはまだ単純に実装されていないのですか?

完全展開YAMLは以下のとおりです。

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: web-deployment 
spec: 
    replicas: 1 
    strategy: 
    rollingUpdate: 
     maxUnavailable: 0 
    template: 
    metadata: 
     labels: 
     app: web 
     tier: frontend 
     annotations: 
     pod.alpha.kubernetes.io/init-containers: '[ 
      { 
       "name": "initialiser1", 
       "image": "eu.gcr.io/project/web-data-dev:187", 
       "command": ["cp", "-r", "/data-in/", "/opt/"], 
       "volumeMounts": [ 
        { 
         "name": "file-share", 
         "mountPath": "/opt/" 
        } 
       ] 
      } 
     ]' 
    spec: 
     containers: 

     - image: eu.gcr.io/project/web-dev:20 
      name: web 
      resources: 
      requests: 
       cpu: 10m 
       memory: 40Mi 
      ports: 
      - containerPort: 80 
       name: http 
      - containerPort: 443 
       name: https 
      volumeMounts: 
      - name: file-share 
       mountPath: /opt/ 

     volumes: 
     - name: file-share 
      emptyDir: {} 

答えて

6

あなたがKubernetes 1.4を使用している場合は、pod.beta.kubernetes.io/init-containerspod.alpha.kubernetes.io/init-containersを変更してみてください。

私はGitHubで適切な問題を見つけることができませんが、これらの2つのアノテーションの動作は異なります。私はkubectl apply -fを2番目のものとすることができ、展開が更新されます。

あなたは以下の例使用してテストすることができます:pod.alpha.kubernetes.io/init-containersを使用して同じこと

$ cat nginx.yaml | kubectl apply -f - 
deployment "nginx" created 
$ curl $(minikube service nginx --url) 
Waiting, endpoint for service is not ready yet... 
foo 
$ cat nginx.yaml | sed -e 's/foo/bar/g' | kubectl apply -f - 
deployment "nginx" configured 
$ curl $(minikube service nginx --url) 
Waiting, endpoint for service is not ready yet... 
bar 

$ curl $(minikube service nginx --url) 
Waiting, endpoint for service is not ready yet... 
foo 
$ cat nginx.yaml | sed -e 's/foo/bar/g' | kubectl apply -f - 
deployment "nginx" configured 
$ curl $(minikube service nginx --url) 
foo 
+0

barfooを変更しようと結果を参照してください

kind: Deployment apiVersion: extensions/v1beta1 metadata: name: nginx spec: template: metadata: labels: app: nginx annotations: pod.beta.kubernetes.io/init-containers: '[ { "name": "install", "image": "busybox", "command": ["/bin/sh", "-c", "echo foo > /work-dir/index.html"], "volumeMounts": [ { "name": "workdir", "mountPath": "/work-dir" } ] } ]' spec: volumes: - name: workdir emptyDir: {} containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - name: workdir mountPath: /usr/share/nginx/html 

をありがとう、これは働いた - アルファ版の不具合でなければならない - 歓声! – IaMaCuP

関連する問題